Hiring market review
Collect current public listings for a role or location and review titles, companies and posting dates.
- keywords
- location
- postedAt
LinkedIn API
Search public LinkedIn job listings, then read descriptions, poster details and optional company enrichment in one Dataset.
No saved response · published contract fields only
LinkedIn Jobs
Published request and response contract
Published request input
{
"keywords": "software engineer",
"location": "London, United Kingdom",
"limitPerSource": 100,
"scrapeCompany": true
}Response contract fields
Overview
Search public LinkedIn job listings, then read descriptions, poster details and optional company enrichment in one Dataset.
New searches normally use keywords, location and datePosted. Advanced urls preserve an existing LinkedIn Jobs workflow and take priority over the structured filters. limitPerSource caps rows from each input URL or from the structured search.
scrapeCompany adds public company details, including website, description, employee count, address, slogan and logo. The published contract keeps missing values and does not guarantee that every job exposes salary, applicants or poster details.
Input
Keywords, location or search URLs
Output
Job listing records
Send keywords and a location, or paste public LinkedIn Jobs search URLs for an existing workflow.
The Actor reads public search results and applies date, company and applicant filters where supported.
With scrapeCompany enabled, each job can carry public company context alongside the listing fields.
Use cases
The record is designed to sit inside research and review workflows. The examples below are starting points, not packaged scores.
Collect current public listings for a role or location and review titles, companies and posting dates.
Normalize public listing text, apply URLs and company details into a downstream feed.
Use optional company enrichment to add public website and employee context to hiring signals.
Try it
No response sample is saved for this product. The form, request examples and field lists show the published contract only.
No recorded response. No response has been saved yet. You can review the request and response contract below.
Enter a role or keyword. Location and date filters can be set in the Actor request.
https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-itemsPublished contract
No recorded sample is available for this product in this build. The fields below are the published contract, including every published type and description. No response values have been inserted.
Inputs accepted by the Actor. They are documentation only here; no request is sent from this view.
| Field | Type | Description |
|---|---|---|
| keywords | string | Job title, skills, or free-text search (e.g. "software engineer remote"). Recommended for new searches; ignored when search URLs are provided. |
| location | string | City, region, or country as you would type it on LinkedIn (e.g. "United States", "London, United Kingdom", "Remote"). |
| datePosted | string | Only return jobs posted within this window. Default: "anyTime". Accepted: "anyTime", "past24Hours", "pastWeek", "pastMonth". |
| limitPerSource | integer | Maximum number of jobs to scrape from each input URL (or from the structured filters when no URLs are provided). Defaults to 1000 when omitted. Default: 1000. Minimum: 1. |
| scrapeCompany | boolean | Add the company website, description, LinkedIn employee count, address, slogan, and logo. Enabled by default and automatically cached for faster repeated runs. Default: true. |
| geoId | string | Optional LinkedIn geoId for precise location targeting (found in a LinkedIn search URL as `geoId=`). Overrides free-text location when LinkedIn resolves it. |
| distance | integer | Search radius in miles around the location. Leave empty for LinkedIn's default. Minimum: 0. |
| companyIds | string[] | LinkedIn numeric company IDs (from a company URL or `f_C=` in a search URL), e.g. "1441" for Google. Default: []. |
| under10Applicants | boolean | Only jobs with fewer than 10 applicants. Default: false. |
| urls | string[] | Advanced: paste one or more public LinkedIn Jobs search URLs to preserve an existing workflow. When URLs are provided, their search criteria take priority over the structured filters. Leave this empty for the recommended keyword search. Default: []. |
| splitByLocation | boolean | Enable this to split your search by cities within a country. This helps bypass LinkedIn's 1000 job limit per search URL by creating separate searches for each city. This will overwrite the location filter in input search URLs. Default: false. |
| splitCountry | string | Select the country whose cities will be used to split the search. Required only when 'Split search by city locations' is enabled. Accepted: "US", "CA", "MX", "GB", "DE", "FR", "NL", "CH", "SE", "NO", "DK", "FI", "IE", "ES", "IT", "PT", "BE", "AT", "PL", "CZ", "RO", "HU", "GR", "BG", "HR", "RS", "UA", "SK", "LT", "LV", "EE", "SI", "LU", "MT", "IS", "CY", "TR", "RU", "GE", "AM", "AZ", "BY", "BA", "XK", "MD", "ME", "MK", "AL", "MC", "AD", "LI", "SM", "VA", "IN", "CN", "JP", "KR", "SG", "HK", "TW", "TH", "VN", "ID", "MY", "PH", "BD", "PK", "LK", "NP", "MM", "KH", "KZ", "UZ", "KG", "TJ", "TM", "MN", "BN", "MV", "BT", "LA", "TL", "AF", "KP", "AE", "SA", "IL", "QA", "KW", "BH", "OM", "JO", "LB", "IQ", "IR", "PS", "SY", "YE", "AU", "NZ", "FJ", "PG", "WS", "TO", "VU", "SB", "KI", "MH", "FM", "PW", "NR", "TV", "BR", "AR", "CO", "CL", "PE", "EC", "UY", "VE", "BO", "PY", "GY", "SR", "CR", "PA", "GT", "DO", "PR", "JM", "TT", "HN", "SV", "NI", "BS", "BB", "CU", "HT", "BZ", "AG", "DM", "GD", "LC", "KN", "VC", "ZA", "NG", "KE", "EG", "MA", "GH", "ET", "TZ", "RW", "UG", "SN", "TN", "CI", "CM", "DZ", "AO", "MU", "ZM", "ZW", "MZ", "CD", "BW", "NA", "MG", "LY", "SD", "SS", "SO", "ML", "GA", "BJ", "BF", "MW", "NE", "TD", "SL", "LR", "ER", "GM", "GN", "GW", "TG", "MR", "SZ", "LS", "DJ", "CG", "CF", "BI", "CV", "KM", "GQ", "ST", "SC". |
| autoConvertToAiSearch | boolean | Preserve filters from older LinkedIn search URLs with LinkedIn's current AI search. Experience level, job type, and workplace filters are converted into search terms. Supported URL filters remain unchanged. Other ID-only filters may not be interpreted by LinkedIn; describe them in Keywords instead. Default: true. |
Posting details as returned by LinkedIn. Salary is the published text and is not normalised into a currency or period.
| Field | Type | Description |
|---|---|---|
| locationrequired | string | Location shown on the job posting. |
| postedAt | string | null | Published posting date when available. |
| benefitsrequired | string[] | Published benefits when available. |
| seniorityLevel | string | null | Seniority level shown on the job posting when available. |
| employmentType | string | null | Employment type shown on the job posting when available. |
| jobFunction | string | null | Job function shown on the job posting when available. |
| industries | string | null | Industries shown on the job posting when available. |
Salary and applicant text are shown exactly as published when LinkedIn provides them.
| Field | Type | Description |
|---|---|---|
| linkrequired | string | Public LinkedIn job URL. |
| salaryrequired | string | Published salary text when available. |
| applicantsCount | string | null | Applicant count text when publicly available. |
| applyUrlrequired | string | Public application URL when available. |
| inputUrlrequired | string | Search source that produced the job. |
Publicly listed job poster details; absence does not imply the job has no recruiter.
| Field | Type | Description |
|---|---|---|
| jobPosterName | string | Publicly listed job poster name. |
| jobPosterTitle | string | Publicly listed job poster title. |
| jobPosterPhoto | string | Public job poster photo URL. |
| jobPosterProfileUrl | string | Public job poster profile URL. |
Company enrichment is optional and depends on the scrapeCompany input.
| Field | Type | Description |
|---|---|---|
| companyNamerequired | string | Hiring company name. |
| companyLinkedinUrl | string | null | Public LinkedIn company URL when available. |
| companyLogo | string | null | Public company logo URL when available. |
| companyDescription | string | Public company description. |
| companyWebsite | string | Public company website URL. |
| companyEmployeesCount | integer | LinkedIn employee count when available. |
| companyAddress | object | Structured public company address when available. |
| companySlogan | string | Public company slogan when available. |
Plain-text description supplied by the posting.
| Field | Type | Description |
|---|---|---|
| descriptionTextrequired | string | null | Full plain-text job description when available. |
| Field | Type | Description |
|---|---|---|
| idrequired | string | LinkedIn job identifier. |
| refId | string | null | LinkedIn search reference identifier when available. |
| trackingId | string | null | LinkedIn search tracking identifier when available. |
| Field | Type | Description |
|---|---|---|
| titlerequired | string | Job title. |
| descriptionHtmlrequired | string | null | Full job description with HTML formatting when available. |
No preview JSON
Run a live request or choose a saved sample.
Reference
POST to the Apify Actor endpoint with a bearer token. Request examples use $APIFY_TOKEN and the current product defaults; response examples come from a saved historical record.
Request fields accepted by the Actor. Preview input is sent only when you run a live request.
keywordsstringJob title, skills, or free-text search (e.g. "software engineer remote"). Recommended for new searches; ignored when search URLs are provided.
Example: software engineer
locationstringCity, region, or country as you would type it on LinkedIn (e.g. "United States", "London, United Kingdom", "Remote").
Example: London, United Kingdom
datePostedstringOnly return jobs posted within this window. Default: "anyTime". Accepted: "anyTime", "past24Hours", "pastWeek", "pastMonth".
limitPerSourceintegerMaximum number of jobs to scrape from each input URL (or from the structured filters when no URLs are provided). Defaults to 1000 when omitted. Default: 1000. Minimum: 1.
scrapeCompanybooleanAdd the company website, description, LinkedIn employee count, address, slogan, and logo. Enabled by default and automatically cached for faster repeated runs. Default: true.
geoIdstringOptional LinkedIn geoId for precise location targeting (found in a LinkedIn search URL as `geoId=`). Overrides free-text location when LinkedIn resolves it.
distanceintegerSearch radius in miles around the location. Leave empty for LinkedIn's default. Minimum: 0.
companyIdsstring[]LinkedIn numeric company IDs (from a company URL or `f_C=` in a search URL), e.g. "1441" for Google. Default: [].
under10ApplicantsbooleanOnly jobs with fewer than 10 applicants. Default: false.
urlsstring[]Advanced: paste one or more public LinkedIn Jobs search URLs to preserve an existing workflow. When URLs are provided, their search criteria take priority over the structured filters. Leave this empty for the recommended keyword search. Default: [].
splitByLocationbooleanEnable this to split your search by cities within a country. This helps bypass LinkedIn's 1000 job limit per search URL by creating separate searches for each city. This will overwrite the location filter in input search URLs. Default: false.
splitCountrystringSelect the country whose cities will be used to split the search. Required only when 'Split search by city locations' is enabled. Accepted: "US", "CA", "MX", "GB", "DE", "FR", "NL", "CH", "SE", "NO", "DK", "FI", "IE", "ES", "IT", "PT", "BE", "AT", "PL", "CZ", "RO", "HU", "GR", "BG", "HR", "RS", "UA", "SK", "LT", "LV", "EE", "SI", "LU", "MT", "IS", "CY", "TR", "RU", "GE", "AM", "AZ", "BY", "BA", "XK", "MD", "ME", "MK", "AL", "MC", "AD", "LI", "SM", "VA", "IN", "CN", "JP", "KR", "SG", "HK", "TW", "TH", "VN", "ID", "MY", "PH", "BD", "PK", "LK", "NP", "MM", "KH", "KZ", "UZ", "KG", "TJ", "TM", "MN", "BN", "MV", "BT", "LA", "TL", "AF", "KP", "AE", "SA", "IL", "QA", "KW", "BH", "OM", "JO", "LB", "IQ", "IR", "PS", "SY", "YE", "AU", "NZ", "FJ", "PG", "WS", "TO", "VU", "SB", "KI", "MH", "FM", "PW", "NR", "TV", "BR", "AR", "CO", "CL", "PE", "EC", "UY", "VE", "BO", "PY", "GY", "SR", "CR", "PA", "GT", "DO", "PR", "JM", "TT", "HN", "SV", "NI", "BS", "BB", "CU", "HT", "BZ", "AG", "DM", "GD", "LC", "KN", "VC", "ZA", "NG", "KE", "EG", "MA", "GH", "ET", "TZ", "RW", "UG", "SN", "TN", "CI", "CM", "DZ", "AO", "MU", "ZM", "ZW", "MZ", "CD", "BW", "NA", "MG", "LY", "SD", "SS", "SO", "ML", "GA", "BJ", "BF", "MW", "NE", "TD", "SL", "LR", "ER", "GM", "GN", "GW", "TG", "MR", "SZ", "LS", "DJ", "CG", "CF", "BI", "CV", "KM", "GQ", "ST", "SC".
autoConvertToAiSearchbooleanPreserve filters from older LinkedIn search URLs with LinkedIn's current AI search. Experience level, job type, and workplace filters are converted into search terms. Supported URL filters remain unchanged. Other ID-only filters may not be interpreted by LinkedIn; describe them in Keywords instead. Default: true.
Published response fields. Example properties are taken from one historical record; they describe that record, not a guaranteed schema for every response.
idstringRequiredLinkedIn job identifier.
linkstringRequiredPublic LinkedIn job URL.
titlestringRequiredJob title.
companyNamestringRequiredHiring company name.
companyLinkedinUrlstring | nullPublic LinkedIn company URL when available.
companyLogostring | nullPublic company logo URL when available.
locationstringRequiredLocation shown on the job posting.
salarystringRequiredPublished salary text when available.
postedAtstring | nullPublished posting date when available.
benefitsstring[]RequiredPublished benefits when available.
descriptionHtmlstring | nullRequiredFull job description with HTML formatting when available.
applicantsCountstring | nullApplicant count text when publicly available.
applyUrlstringRequiredPublic application URL when available.
descriptionTextstring | nullRequiredFull plain-text job description when available.
jobPosterNamestringPublicly listed job poster name.
jobPosterTitlestringPublicly listed job poster title.
jobPosterPhotostringPublic job poster photo URL.
jobPosterProfileUrlstringPublic job poster profile URL.
seniorityLevelstring | nullSeniority level shown on the job posting when available.
employmentTypestring | nullEmployment type shown on the job posting when available.
jobFunctionstring | nullJob function shown on the job posting when available.
industriesstring | nullIndustries shown on the job posting when available.
companyDescriptionstringPublic company description.
companyWebsitestringPublic company website URL.
companyEmployeesCountintegerLinkedIn employee count when available.
companyAddressobjectStructured public company address when available.
companySloganstringPublic company slogan when available.
inputUrlstringRequiredSearch source that produced the job.
refIdstring | nullLinkedIn search reference identifier when available.
trackingIdstring | nullLinkedIn search tracking identifier when available.
curl -X POST 'https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"keywords": "software engineer",
"location": "London, United Kingdom",
"limitPerSource": 100,
"scrapeCompany": true
}'Recorded sample
No recorded response is saved for this product. The request snippets above use the published contract defaults; no sample values are shown here.
Pricing & access
Published FREE-plan event rates from public Apify metadata. Plan-specific rates and usage terms remain on the Actor's pricing page.
Pricing
$0.30per 1,000 jobs
+ $0.00005per GB actor start (min 1)
Per delivered job. Only this Actor adds a start event: once per run at one event per GB (minimum one), even when zero jobs are delivered.
Access
https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items
FAQ
Authentication, response shape, recorded data and availability.
Use keywords and location for new searches. urls are an advanced option for preserving an existing public LinkedIn Jobs search; their criteria take priority over the structured filters.
It adds public company website, description, LinkedIn employee count, address, slogan and logo fields when those values are available. It is enabled by default.
No response sample has been saved yet. You can review the request and response fields in the Reference section.
Send an Apify token as a Bearer token in the Authorization header, as shown in the request examples.
Not by default. No recorded sample is available for this product; review the request and response contract in the Reference section. Live data is requested directly from the published Apify Actor endpoint with your own token.
Current pricing and usage terms are published on the Apify Actor page.