- Docs
- API reference
- Search
- Search service providers by keyword.
Search service providers by keyword.
GEThttps://api.envoapi.com/v1/search/services
Search service providers by keyword. Filter by category, location or profile language. Each fresh request returns up to ten providers and uses the configured Profile Lookup Cost, including empty results. Use offsets from 0 to 990 in steps of ten.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
web designResult offset, in multiples of 10. Up to 100 pages are accessible.
Example
0Category IDs from Service category search (data.serviceCategories[].id). Separate IDs with commas.
Example
service_9FLmlBLocation IDs from Location search (data.locations[].id). Separate IDs with commas.
Example
geo_6yITczProfile language codes, separated by commas: cs, da, de, en, es, fr, in, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sv, tr, zh, _o. Use in for Indonesian, zh for Chinese, and _o for other profile languages.
Example
en,frResponses
Section titled “Responses”Service providers matching the keywords. Empty searches return an empty services array. Each fresh page uses the configured Profile Lookup Cost.
object
object
object
Headers
Section titled “Headers”Required response header.
Required response header.
Required response header.
Required response header.
Required response header.
Required response header.
Required response header.
Errors
Section titled “Errors”Every error returns the same body. The status and error.code tell you what went wrong. The Errors guide covers handling and retries.
object
object
object
object
Headers
Section titled “Headers”Required response header.
Required response header.
Required response header.
| Status | error.code | Meaning |
|---|---|---|
| 400 | invalid_request | A parameter is missing or has a value we cannot use. Read error.details, fix the value and try again. |
| 401 | invalid_api_key | Your API key is missing, wrong or switched off. Check it in your dashboard. |
| 402 | insufficient_credits | Your account has no credits left. Top up, then send a new call. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. |
| 403 | insufficient_scope, account_suspended | Your account is suspended or cannot use this endpoint. Resolve the account or its access first. |
| 404 | resource_not_found | Nothing matched what you sent. Check it for typos. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. |
| 405 | method_not_allowed | The route exists, but the request used a method other than GET. Use the method shown at the top of this page. Also sends Allow. |
| 406 | not_acceptable | The Accept header asks for a format we do not send. Ask for JSON with a supported Accept value. |
| 415 | unsupported_media_type | The request declared a media type we do not accept. Remove the body or use the documented media type. |
| 429 | rate_limit_exceeded | Too many calls in a short time. Honor Retry-After; use bounded retries with backoff and jitter. Also sends X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, Retry-After. |
| 500 | internal_error, response_too_large | Something failed on our side. Retry only when error.retryable is true. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. |
| 502 | upstream_error | A data source sent back something we could not use. Retry with bounded backoff. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. |
| 503 | service_unavailable | Lookups are unavailable for a moment. Follow error.retryable, and Retry-After when it is present. Also sends Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-Credits-Remaining. |
| 504 | upstream_timeout | The lookup ran out of time. Retry with bounded backoff. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. |