Skip to content
Get API key

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.

Authorization headerReturns application/json
GET
/v1/search/services
keywords
required
string
>= 1 characters <= 120 characters

Example

web design
offset

Result offset, in multiples of 10. Up to 100 pages are accessible.

integer
0 <= 990 multiple of 10

Example

0
serviceCategory

Category IDs from Service category search (data.serviceCategories[].id). Separate IDs with commas.

string
>= 1 characters <= 1099 characters

Example

service_9FLmlB
location

Location IDs from Location search (data.locations[].id). Separate IDs with commas.

string
>= 1 characters <= 1099 characters

Example

geo_6yITcz
profileLanguage

Profile 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.

string
>= 1 characters <= 1099 characters

Example

en,fr

Service providers matching the keywords. Empty searches return an empty services array. Each fresh page uses the configured Profile Lookup Cost.

Media typeapplication/json
object
data
required
object
services
required
Array<object>
<= 10 items
object
name
required
string
>= 1 characters
headline
required
Any of:
string
location
required
Any of:
string
0 <= 1024 characters
description
required
Any of:
string
0 <= 16384 characters
servicesPageUrl
required
string
/^https:\/\/www\.linkedin\.com\/services\/page\/[A-Za-z0-9_-]{1,200}\/$/
services
required
Array<string>
averageRating
required
Any of:
number
<= 5
totalReviews
required
Any of:
integer
<= 9007199254740991
meta
required
object
paging
required
object
offset
required
integer
<= 990 multiple of 10
limit
required
number
Allowed value: 10
returned
required
integer
<= 10
hasMore
required
boolean
nextOffset
required
Any of:
integer
>= 10 <= 990 multiple of 10
creditCost
required
integer
<= 9007199254740991
Date
string
/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (?:0[1-9]|[12][0-9]|3[01]) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} (?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/

Required response header.

Cache-Control
string
Allowed value: private, no-store

Required response header.

X-Request-Id
string
>= 1 characters <= 64 characters /^[\x21-\x7e](?:[\x20-\x7e]*[\x21-\x7e])?$/

Required response header.

X-Credits-Remaining
integer
<= 9007199254740991

Required response header.

X-RateLimit-Limit
integer
<= 9007199254740991

Required response header.

X-RateLimit-Remaining
integer
<= 9007199254740991

Required response header.

X-RateLimit-Reset
integer
<= 9007199254740991

Required response header.

Every error returns the same body. The status and error.code tell you what went wrong. The Errors guide covers handling and retries.

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: invalid_request invalid_api_key insufficient_credits insufficient_scope account_suspended resource_not_found method_not_allowed not_acceptable unsupported_media_type rate_limit_exceeded internal_error response_too_large upstream_error service_unavailable upstream_timeout
message
required
string
>= 1 characters <= 512 characters
retryable
required
boolean
details
required
Array<object>
<= 16 items
object
field
required
string
>= 1 characters <= 128 characters /^[\x21-\x7e](?:[\x20-\x7e]*[\x21-\x7e])?$/
code
required
string
Allowed values: identifier_count unknown_parameter repeated_parameter invalid_format invalid_value too_long
message
required
string
>= 1 characters <= 512 characters
meta
required
object
requestId
required
string
>= 1 characters <= 64 characters /^[\x21-\x7e](?:[\x20-\x7e]*[\x21-\x7e])?$/
Date
string
/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (?:0[1-9]|[12][0-9]|3[01]) (?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) [0-9]{4} (?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9] GMT$/

Required response header.

Cache-Control
string
Allowed value: private, no-store

Required response header.

X-Request-Id
string
>= 1 characters <= 64 characters /^[\x21-\x7e](?:[\x20-\x7e]*[\x21-\x7e])?$/

Required response header.

Statuserror.codeMeaning
400invalid_requestA parameter is missing or has a value we cannot use. Read error.details, fix the value and try again.
401invalid_api_keyYour API key is missing, wrong or switched off. Check it in your dashboard.
402insufficient_creditsYour 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.
403insufficient_scope, account_suspendedYour account is suspended or cannot use this endpoint. Resolve the account or its access first.
404resource_not_foundNothing matched what you sent. Check it for typos. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
405method_not_allowedThe route exists, but the request used a method other than GET. Use the method shown at the top of this page. Also sends Allow.
406not_acceptableThe Accept header asks for a format we do not send. Ask for JSON with a supported Accept value.
415unsupported_media_typeThe request declared a media type we do not accept. Remove the body or use the documented media type.
429rate_limit_exceededToo 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.
500internal_error, response_too_largeSomething 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.
502upstream_errorA 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.
503service_unavailableLookups 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.
504upstream_timeoutThe lookup ran out of time. Retry with bounded backoff. Also sends X-Credits-Remaining, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.