LinkedIn

LinkedIn API

Job listings,
descriptions and companies

Search public LinkedIn job listings, then read descriptions, poster details and optional company enrichment in one Dataset.

  • Keyword and location search with date windows
  • Optional company website, size and description enrichment
  • Salary, poster and application fields when public

No saved response · published contract fields only

POST/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items

LinkedIn Jobs

Published request and response contract

No saved response

Published request input

{
  "keywords": "software engineer",
  "location": "London, United Kingdom",
  "limitPerSource": 100,
  "scrapeCompany": true
}

Response contract fields

id
string
title
string
companyName
string
location
string
postedAt
string | null
No capture date or sample values are availableContract only

Overview

What this API returns

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

01

Describe the search

Send keywords and a location, or paste public LinkedIn Jobs search URLs for an existing workflow.

02

Collect job listings

The Actor reads public search results and applies date, company and applicant filters where supported.

03

Optionally enrich companies

With scrapeCompany enabled, each job can carry public company context alongside the listing fields.

Use cases

Where these records fit

The record is designed to sit inside research and review workflows. The examples below are starting points, not packaged scores.

Hiring market review

Collect current public listings for a role or location and review titles, companies and posting dates.

  • keywords
  • location
  • postedAt

Job board aggregation

Normalize public listing text, apply URLs and company details into a downstream feed.

  • title
  • applyUrl
  • descriptionText

Account research

Use optional company enrichment to add public website and employee context to hiring signals.

  • companyWebsite
  • companyEmployeesCount
  • companyDescription

Try it

Inspect the job listing contract

No response sample is saved for this product. The form, request examples and field lists show the published contract only.

Checking live preview

No recorded response. No response has been saved yet. You can review the request and response contract below.

Checking live preview availability… Review the request and response contract instead.

Enter a role or keyword. Location and date filters can be set in the Actor request.

POSThttps://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items
No preview output
Copyable cURL uses the current preview input and the Actor endpoint.

Rendered

Contract only
No recorded example

Published contract

LinkedIn Jobs

Contract onlyNo saved response

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.

Published request fields

Inputs accepted by the Actor. They are documentation only here; no request is sent from this view.

FieldTypeDescription
keywordsstringJob title, skills, or free-text search (e.g. "software engineer remote"). Recommended for new searches; ignored when search URLs are provided.
locationstringCity, region, or country as you would type it on LinkedIn (e.g. "United States", "London, United Kingdom", "Remote").
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.

Role

Posting details as returned by LinkedIn. Salary is the published text and is not normalised into a currency or period.

FieldTypeDescription
locationrequiredstringLocation shown on the job posting.
postedAtstring | nullPublished posting date when available.
benefitsrequiredstring[]Published benefits when available.
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.

Compensation and application

Salary and applicant text are shown exactly as published when LinkedIn provides them.

FieldTypeDescription
linkrequiredstringPublic LinkedIn job URL.
salaryrequiredstringPublished salary text when available.
applicantsCountstring | nullApplicant count text when publicly available.
applyUrlrequiredstringPublic application URL when available.
inputUrlrequiredstringSearch source that produced the job.

Hiring contact

Publicly listed job poster details; absence does not imply the job has no recruiter.

FieldTypeDescription
jobPosterNamestringPublicly listed job poster name.
jobPosterTitlestringPublicly listed job poster title.
jobPosterPhotostringPublic job poster photo URL.
jobPosterProfileUrlstringPublic job poster profile URL.

Company

Company enrichment is optional and depends on the scrapeCompany input.

FieldTypeDescription
companyNamerequiredstringHiring company name.
companyLinkedinUrlstring | nullPublic LinkedIn company URL when available.
companyLogostring | nullPublic company logo URL 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.

Job description

Plain-text description supplied by the posting.

FieldTypeDescription
descriptionTextrequiredstring | nullFull plain-text job description when available.

Posting identifiers

FieldTypeDescription
idrequiredstringLinkedIn job identifier.
refIdstring | nullLinkedIn search reference identifier when available.
trackingIdstring | nullLinkedIn search tracking identifier when available.

Other published response fields

FieldTypeDescription
titlerequiredstringJob title.
descriptionHtmlrequiredstring | nullFull job description with HTML formatting when available.
No capture date or sample values are availableContract only

JSON

application/json

No preview JSON

Run a live request or choose a saved sample.

Reference

Request and response contract

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.

Parameters

Request fields accepted by the Actor. Preview input is sent only when you run a live request.

keywordsstring

Job title, skills, or free-text search (e.g. "software engineer remote"). Recommended for new searches; ignored when search URLs are provided.

Example: software engineer

locationstring

City, region, or country as you would type it on LinkedIn (e.g. "United States", "London, United Kingdom", "Remote").

Example: London, United Kingdom

datePostedstring

Only return jobs posted within this window. Default: "anyTime". Accepted: "anyTime", "past24Hours", "pastWeek", "pastMonth".

limitPerSourceinteger

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.

scrapeCompanyboolean

Add the company website, description, LinkedIn employee count, address, slogan, and logo. Enabled by default and automatically cached for faster repeated runs. Default: true.

geoIdstring

Optional LinkedIn geoId for precise location targeting (found in a LinkedIn search URL as `geoId=`). Overrides free-text location when LinkedIn resolves it.

distanceinteger

Search 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: [].

under10Applicantsboolean

Only 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: [].

splitByLocationboolean

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.

splitCountrystring

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

autoConvertToAiSearchboolean

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.

Response

Published response fields. Example properties are taken from one historical record; they describe that record, not a guaranteed schema for every response.

No recorded response is saved for this product. The field list below is the published contract; it does not contain sample values.
idstringRequired

LinkedIn job identifier.

linkstringRequired

Public LinkedIn job URL.

titlestringRequired

Job title.

companyNamestringRequired

Hiring company name.

companyLinkedinUrlstring | null

Public LinkedIn company URL when available.

companyLogostring | null

Public company logo URL when available.

locationstringRequired

Location shown on the job posting.

salarystringRequired

Published salary text when available.

postedAtstring | null

Published posting date when available.

benefitsstring[]Required

Published benefits when available.

descriptionHtmlstring | nullRequired

Full job description with HTML formatting when available.

applicantsCountstring | null

Applicant count text when publicly available.

applyUrlstringRequired

Public application URL when available.

descriptionTextstring | nullRequired

Full plain-text job description when available.

jobPosterNamestring

Publicly listed job poster name.

jobPosterTitlestring

Publicly listed job poster title.

jobPosterPhotostring

Public job poster photo URL.

jobPosterProfileUrlstring

Public job poster profile URL.

seniorityLevelstring | null

Seniority level shown on the job posting when available.

employmentTypestring | null

Employment type shown on the job posting when available.

jobFunctionstring | null

Job function shown on the job posting when available.

industriesstring | null

Industries shown on the job posting when available.

companyDescriptionstring

Public company description.

companyWebsitestring

Public company website URL.

companyEmployeesCountinteger

LinkedIn employee count when available.

companyAddressobject

Structured public company address when available.

companySloganstring

Public company slogan when available.

inputUrlstringRequired

Search source that produced the job.

refIdstring | null

LinkedIn search reference identifier when available.

trackingIdstring | null

LinkedIn 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

Usage is billed through the Actor

Published FREE-plan event rates from public Apify metadata. Plan-specific rates and usage terms remain on the Actor's pricing page.

Pricing

Pay per delivered event

Apify FREE-plan rate

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

Checked 19 Oct 2026Apify pricing

Access

One POST endpoint

  • Authenticate with an Apify Bearer token.
  • Send a JSON body to the posted Actor endpoint.
  • Read the Dataset items array returned by the run.

https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items

FAQ

Questions about the contract

Authentication, response shape, recorded data and availability.

Should I use structured filters or urls?

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.

What does scrapeCompany add?

It adds public company website, description, LinkedIn employee count, address, slogan and logo fields when those values are available. It is enabled by default.

Why is there no recorded response?

No response sample has been saved yet. You can review the request and response fields in the Reference section.

How do I authenticate requests?

Send an Apify token as a Bearer token in the Authorization header, as shown in the request examples.

Are the results on this page live?

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.

Where can I find current pricing?

Current pricing and usage terms are published on the Apify Actor page.