LinkedIn Jobs Scraper by Keyword avatar

LinkedIn Jobs Scraper by Keyword

Pricing

$4.50 / 1,000 results

Go to Apify Store
LinkedIn Jobs Scraper by Keyword

LinkedIn Jobs Scraper by Keyword

πŸ” Scrape LinkedIn job listings by keyword, location, or company. Extract job titles, companies, locations, descriptions, posted dates, and more, perfect for recruitment, lead generation, and job market research πŸš€

Pricing

$4.50 / 1,000 results

Rating

0.0

(0)

Developer

Hamza

Hamza

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

Search LinkedIn jobs by keyword across location, country, time range, employment type, experience level, remote mode, and more. For each search, the Actor returns one record per matching job β€” title, company, location, salary, applicant count, full HTML description, apply link, and 29 fields total.

What this Actor does

For each search query you submit (keyword + optional filters), the Actor asks the data provider to discover matching LinkedIn jobs and returns one record per result. Each row includes a discovery_input field so you can tell which search query produced it β€” useful when running multiple searches at once.

Input

FieldTypeRequiredDefaultDescription
keywordstringyesβ€”Job title or search term. Wrap in escaped quotes for exact-match: "\"python developer\"".
locationstringno""City or region, e.g. "Paris", "New York". Leave empty for the entire country.
countrystringno""ISO country code, e.g. "US", "FR", "GB". Leave empty for any.
time_rangeenumno""(any time), Past 24 hours, Past week, Past month
job_typeenumno""(any type), Full-time, Part-time, Contract, Temporary, Volunteer, Internship, Other
experience_levelenumno""(any level), Internship, Entry level, Associate, Mid-Senior level, Director, Executive
remoteenumno""(any), On-site, Remote, Hybrid
companystringno""Restrict to a specific company name. Leave empty for any.
location_radiusstringno""Distance around location. Leave empty for the LinkedIn default.
max_resultsinteger (1–10000)no100Maximum jobs to return. Sent to the provider as limit_per_input so it stops crawling at the cap.

Example input:

{
"keyword": "product manager",
"location": "Paris",
"country": "FR",
"time_range": "Past month",
"job_type": "Full-time",
"experience_level": "Internship",
"remote": "On-site",
"company": "",
"location_radius": "",
"max_results": 50
}

To run multiple different searches (e.g. "product manager in Paris" + "python developer in New York"), trigger the Actor multiple times via the API or create separate Apify tasks.

How the cap works (and why it saves you money)

The Actor enforces max_results_per_search in two places, so you only pay for the rows you keep:

  1. Server-side (primary). The value is sent to the provider as limit_per_input on the /scrape request. The provider stops crawling each search once it has N results, so the billable row count scales with N β€” not with how many results LinkedIn actually has for "product manager in Paris".
  2. Client-side (safety net). After the provider returns results, the Actor groups rows by their discovery_input, sorts by job_posted_date desc, and trims to the cap in case any extras slipped through.

You'll see per-search accounting in the logs:

"product manager" @ "paris": 50 returned, kept 50, dropped 0.
"\"python developer\"" @ "New York": 50 returned, kept 50, dropped 0.

Setting max_results_per_search to a very high value (e.g. 10000) effectively disables the cap.

Output

Each item in the dataset has this shape (29 fields, matches the upstream schema):

{
"url": "https://www.linkedin.com/jobs/view/principal-full-stack-engineer-vp-at-hackajob-4394289151",
"job_posting_id": "4394289151",
"job_title": "Principal Full Stack Engineer - VP",
"company_name": "hackajob",
"company_id": "5396873",
"job_location": "Hanover, NJ",
"job_summary": "hackajob is collaborating with Barclays to connect them with exceptional professionals...",
"job_seniority_level": "Executive",
"job_function": "Engineering and Information Technology",
"job_employment_type": "Full-time",
"job_industries": "Software Development",
"job_base_pay_range": "$170,000.00/yr - $230,000.00/yr",
"company_url": "https://uk.linkedin.com/company/hackajob?...",
"job_posted_time": "3 days ago",
"job_num_applicants": 0,
"discovery_input": {
"location": "New York",
"keyword": "\"python developer\"",
"experience_level": "Executive",
"country": "",
"time_range": "",
"job_type": "",
"remote": "",
"company": "",
"location_radius": ""
},
"apply_link": null,
"country_code": "US",
"title_id": "25201",
"company_logo": "https://media.licdn.com/dms/image/v2/.../company-logo_100_100/...",
"job_posted_date": "2026-05-18T01:21:15.832Z",
"job_poster": null,
"application_availability": true,
"job_description_formatted": "<section class=\"show-more-less-html\" data-max-lines=\"5\">...</section>",
"base_salary": {
"min_amount": 170000,
"max_amount": 230000,
"currency": "USD",
"payment_period": "yr"
},
"salary_standards": "This range is provided by hackajob. Your actual pay will be based on your skills...",
"is_easy_apply": false,
"timestamp": "2026-05-21T01:21:15.869Z",
"input": { "url": "https://www.linkedin.com/jobs/view/...", "discovery_input": { "..." } }
}

Limits & responsible use

  • The Actor only returns information that is publicly visible on LinkedIn job search results and detail pages.
  • Respect LinkedIn's Terms of Service, robots.txt expectations, and applicable employment-data privacy regulations.
  • Broad searches like just "engineer" with no filters can match millions of jobs β€” keep max_results_per_search modest unless you really need them all.