LinkedIn Jobs Scraper
Pricing
from $1.00 / 1,000 results
LinkedIn Jobs Scraper
Scrapes LinkedIn public jobs search results by query and location, enriches job detail pages, and stores structured job data in the dataset.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Alex Demeniuk
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
LinkedIn Jobs Guest Scraper
Scrape LinkedIn public jobs search results by keyword and location, open individual job detail pages, and save structured job data to the dataset.
This actor is designed for LinkedIn guest jobs pages and focuses on practical search-and-export workflows for market research, job tracking, and structured analysis.
What this actor does
- Searches LinkedIn Jobs public guest results by keyword and location
- Works without requiring LinkedIn login or user authorization
- Supports optional geographic targeting via
geoId - Supports search filters such as distance, posting age, Easy Apply, and under-10-applicants
- Opens job detail pages and extracts structured metadata
- Saves results to the default dataset as JSON
- Imports job descriptions in Markdown-friendly form for downstream analysis
- Returns run summary metrics including jobs found, processed, and saved
More relevant search results
LinkedIn Jobs search often returns many postings that are only loosely related to the search query. This happens because LinkedIn does not limit matching to the job title only — it can also match words found elsewhere in the posting, including the full vacancy text.
For example, a search for Product manager may return jobs whose actual title is not Product Manager at all, simply because the description mentions product management, product strategy, roadmaps, or related terms.
To improve result quality, the actor includes the titleMustContainSearchWords option.
When enabled, the actor saves only jobs whose title contains all meaningful words from the search query. This makes the results much more precise and is especially useful for broad searches like:
Product managerData engineerMachine learning engineerGrowth manager
In practice, this is one of the most useful features of the actor because it dramatically reduces noisy results and makes the dataset far more useful for alerts, exports, trend tracking, and downstream analysis.
Markdown descriptions for AI analysis
The actor extracts the vacancy description in Markdown-friendly form (description_markdown), which is much easier to reuse than raw HTML.
This is especially useful if you want to:
- analyze hiring trends with AI tools
- send postings into NotebookLM or other LLM workflows
- compare requirements, responsibilities, and skills across many roles
- build recurring weekly or monthly market snapshots
- prepare structured research inputs for downstream analysis
Markdown descriptions are cleaner, easier to read, and much better suited for AI-assisted analysis than scraped page HTML. If you still need the original raw markup, you can enable includeDescriptionHtml.
Search result limit
LinkedIn guest jobs search has a practical limit of 1000 job cards. Beyond that point, additional results are not exposed in the guest search flow used by this actor.
Because of this platform limitation:
maxJobscannot be greater than 1000- even very broad searches may stop at the first 1000 available job cards
- narrowing the query with better keywords, location filters, or the title filter often produces better data than simply trying to fetch more results
Input
Main fields
searchQuery— Job search phrase used on LinkedIn Jobs. The actor wraps the query in quotes to improve precision and reduce loosely related matches.location— Human-readable location string used in LinkedIn search.geoId— Optional LinkedIn region ID for more stable location targeting.titleMustContainSearchWords— If enabled, only saves jobs whose title contains all meaningful search words.radiusMiles— Optional search radius in miles.postedWithinDays— Optional LinkedIn recency filter.under10Applicants— If enabled, keeps only jobs marked as under 10 applicants.easyApply— If enabled, keeps only Easy Apply jobs.maxJobs— Maximum number of job cards to process, including skipped, filtered, and saved jobs.includeDescriptionHtml— If enabled, includes raw job description HTML in the output.proxyConfiguration— Optional proxy settings.
Example input
{"proxyConfiguration": {"useApifyProxy": false},"searchQuery": "Product manager","location": "San Francisco, Bay Area","titleMustContainSearchWords": true,"radiusMiles": 0,"postedWithinDays": 1,"under10Applicants": false,"easyApply": false,"maxJobs": 1000,"includeDescriptionHtml": false}
Output
The actor stores one item per saved job posting in the dataset.
Typical dataset fields include:
job_idtitlecompanylocationjob_urllisted_atlisted_at_isoapplicants_textunder_10_applicantssearch_querysearch_locationsearch_geo_idsearch_radius_milesoffsetpositiondescription_markdowndescription_html(optional, if enabled)seniority_levelemployment_typejob_functionindustriesjob_criteria_textcompany_urlsalary_textsalary_minsalary_maxsalary_currencysalary_periodrecruiter_namerecruiter_titlerecruiter_profile_url
Example output item
{"job_id": "4262502911","title": "Senior Product Manager","company": "Example Company","location": "San Francisco Bay Area","job_url": "https://www.linkedin.com/jobs/view/4262502911/","listed_at": "3 days ago","listed_at_iso": "2026-07-20T00:00:00+00:00","applicants_text": "Over 100 applicants","under_10_applicants": false,"search_query": "Product manager","search_location": "San Francisco, Bay Area","search_geo_id": "90000084","search_radius_miles": 0,"offset": 0,"position": 1,"description_markdown": "## About the role\n\nThis is an example normalized job description.","description_html": null,"seniority_level": "Mid-Senior level","employment_type": "Full-time","job_function": "Product Management","industries": "Software Development","job_criteria_text": "Mid-Senior level · Full-time · Product Management · Software Development","company_url": "https://www.linkedin.com/company/example-company/","salary_text": "$180,000 - $220,000 per year","salary_min": 180000,"salary_max": 220000,"salary_currency": "USD","salary_period": "year","recruiter_name": "Jane Recruiter","recruiter_title": "Senior Talent Partner","recruiter_profile_url": "https://www.linkedin.com/in/jane-recruiter/"}
Run output
The actor also returns run-level summary fields:
results— API URL for the dataset itemsjobsFound— Number of jobs found by the actor logicjobsProcessed— Number of processed job cardsjobsSaved— Number of dataset items actually saved
Notes and limitations
- This actor works with LinkedIn public jobs guest pages, not authenticated browsing.
- No LinkedIn login or user authorization is required.
- LinkedIn search results can shift between runs, so offsets and ordering are not guaranteed to be stable.
- Some fields are only available on certain postings and may be missing.
- Salary data is sparse and inconsistent across employers.
- Recruiter and company metadata may vary by posting quality.
maxJobslimits processed job cards, not just saved dataset items.- The actor intentionally avoids relying on unstable fields unless they are present on the page.
- Duplicate-looking postings can still appear across agencies, locations, or relisted jobs.
- The guest jobs flow used here exposes at most 1000 job cards for a given search.
Use cases
- Job search monitoring by keyword, location, and recency
- Research workflows for studying vacancy requirements, responsibilities, and hiring patterns
- Salary and skill analysis across roles and employers
- Building datasets for downstream LLM summarization, reporting, and trend tracking