LinkedIn Job search
Search job postings by keyword and location, with salary and seniority filters
Endpoint
One endpoint for every offer below. Omit provider and the router picks with automatic failover — the response's served_by tells you which one ran.
https://api.socialrouter.io/v1/extract/linkedin/job.searchOffers
Every offer below returns the same normalized output, in failover order — the first one serves unless you pin another with the provider field.
brightdata/linkedinvia Bright Datadefault routeUp to 100 queries per request
$0.0017per record
Parameters
JSON body of the request. Unknown fields and unknown options are rejected with the valid list, so a wrong guess costs nothing.
| Parameter | Type | Description |
|---|---|---|
queriesRequired | string[] | Search queries to process. Accepted shape:A job title or keyword, as you would type it in LinkedIn's job search — Quote a phrase ("product manager") for an exact match. The `location` option is required: LinkedIn scopes a job search to a place.Example: product managerA single query string is accepted too. |
providerOptional | string | Pin one offer, e.g. brightdata/linkedin. Omit it and the router picks with failover. |
limitOptional | integer | Max records to return per query. |
optionsOptional | object | Service-specific options, listed below. |
options.locationOptional | string | Where to search, as LinkedIn spells it: a city, region or country, e.g. "Paris", "Greater London", "United States". LinkedIn scopes a job search to a place, so a keyword on its own is not a search. |
options.countryOptional | ISO 3166-1 alpha-2 | Two-letter country code narrowing the location, e.g. "FR", "US". |
options.timeRangeOptional | Past 24 hours | Past week | Past month | Any time | Only return listings posted within this window. |
options.jobTypeOptional | Full-time | Part-time | Contract | Temporary | Internship | Volunteer | Other | Employment type. |
options.experienceLevelOptional | Internship | Entry level | Associate | Mid-Senior level | Director | Executive | Seniority of the role. |
options.remoteOptional | Remote | On-site | Hybrid | Work arrangement. |
options.companyOptional | string | Only return listings from this company. |
options.locationRadiusOptional | string | How far around `location` to search, in LinkedIn's own units, e.g. "25 mi". |
options.selectiveSearchOptional | boolean | Drop listings whose title does not contain the keyword. Fewer results, tighter match, fewer billed records. Defaults to false. |
Output
Each record has the fields below, whichever offer serves the request. Offers may include additional platform-specific fields on top.
titlestringJob title
companystringHiring company
locationstringJob location (or "Remote")
job_idstringLinkedIn job posting id
job_seniority_levelstringSeniority of the role
job_employment_typestringFull-time, Contract, …
job_base_pay_rangestringSalary range as LinkedIn renders it
base_salaryobjectStructured pay: min, max, currency, period
job_num_applicantsnumberApplicants so far
posted_dateiso8601When the posting was published
discovery_keywordstringThe query this listing answered
sourcestringPlatform the record was extracted from (e.g. "linkedin")
extracted_atiso8601UTC timestamp when the record was produced
Going further
Auth, error semantics, and every other endpoint live in the API reference — including the machine-readable OpenAPI spec at /v1/openapi.json.
Frequently asked questions
How much does LinkedIn job search cost?
Prices start at $0.0017 per record, depending on the offer that serves the request. You are only charged for records actually returned.
Which offers serve linkedin/job.search?
brightdata/linkedin — 1 offer is available behind the same endpoint. Pin one with the optional "provider" field, or omit it and the router picks with automatic failover. The response's "served_by" field names the offer that ran.
What input does it need?
The "queries" field of the JSON body, as an array of strings: A job title or keyword, as you would type it in LinkedIn's job search — Quote a phrase ("product manager") for an exact match. The `location` option is required: LinkedIn scopes a job search to a place.. For example: product manager
Is the output format the same for every offer?
Yes. Every offer returns the normalized record schema documented on this page; some add extra platform-specific fields on top, but the documented fields are always present.
How many queries can I send per request?
Up to 100 queries in a single request, depending on the offer.
What happens if an offer fails?
SocialRouter automatically fails over to the next offer serving the same service, so a single upstream outage doesn't break your integration.
What options does it take?
location (string): Where to search, as LinkedIn spells it: a city, region or country, e.g. "Paris", "Greater London", "United States". LinkedIn scopes a job search to a place, so a keyword on its own is not a search. country (string): Two-letter country code narrowing the location, e.g. "FR", "US". timeRange (Past 24 hours|Past week|Past month|Any time): Only return listings posted within this window. jobType (Full-time|Part-time|Contract|Temporary|Internship|Volunteer|Other): Employment type. experienceLevel (Internship|Entry level|Associate|Mid-Senior level|Director|Executive): Seniority of the role. remote (Remote|On-site|Hybrid): Work arrangement. company (string): Only return listings from this company. locationRadius (string): How far around `location` to search, in LinkedIn's own units, e.g. "25 mi". selectiveSearch (boolean): Drop listings whose title does not contain the keyword. Fewer results, tighter match, fewer billed records.