← API Catalog
Apify·Async
LinkedIn Jobs Scraper | Remove Duplicate Jobs | Pay Per Result
Knowledge & Data$0.0006 / result
What it does
LinkedIn Jobs Scraper | Remove Duplicate Jobs. The LinkedIn jobs scraper allows you to collect jobs in 2 ways: By providing one or more start URLs, or By entering multiple keywords, search queries. You can use either method individually or combine both.
Returns: LinkedIn Jobs Scraper | Remove Duplicate Jobs. The LinkedIn jobs scraper allows you to collect jobs in 2 ways: By providing one or more start URLs, or By entering multiple keywords, search queries. You can use either method individually or combine both.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
jobType | select | No | Filter by job type (Full-time, Part-time, Contract, etc.). Multiple selections allowed. When LinkedIn serves its classic search engine this filter works normally. When LinkedIn serves its AI search engine the filter is ignored, so the scraper instead embeds it into the search query itself, which the AI search understands: the search is retried once with e.g. 'Full-time ' for a single selection or '(Full-time OR Contract) ' for multiple selections. |
keyword | array | No | Keyword to search for. (e.g., Software Engineer) |
distance | select | No | Search radius from the location in miles. Leave empty for default. |
location | text | No | Single location to search in. Use the Locations field instead to search multiple locations at once. |
maxItems | number | No | Maximum number of job listings to scrape. Leave empty for no limit. Note: Minimum is 150 results when using pay-per-result billing. |
workType | select | No | Filter by work location type (On-site, Remote, Hybrid). Multiple selections allowed. When LinkedIn serves its classic search engine this filter works normally. When LinkedIn serves its AI search engine the filter is ignored by LinkedIn and job pages have no field to verify it, so the scraper instead embeds the work type into the search query itself, which the AI search understands: the search is retried once with e.g. 'Remote ' for a single selection or '(Remote OR "On-Site") ' for multiple selections. |
locations | array | No | One or more locations to search in (e.g. Montreal, Canada). Each location is combined with every keyword to generate one search per pair. When set alongside the legacy Location field, both are merged. |
startUrls | array | No | One or more URLs of the pages where the crawler will start. Note that the Actor will additionally crawl job page data. |
salaryBase | select | No | Filter by minimum salary. Only one value allowed. 🛠️ In maintenance: this filter currently only works when LinkedIn serves its classic search engine. When LinkedIn serves its new AI-powered search, it silently ignores this filter, and since salary cannot be verified reliably from job postings, the scraper has no workaround - results will include jobs below this salary. It will be restored once LinkedIn supports it again. |
publishedAt | select | No | How old publications should be in Days. Default is ANY. |
companyExclude | array | No | Skip jobs from specific companies. Add one company name per entry — any job whose company name exactly matches (case-insensitive) will not be collected. Works for both keyword-based and URL-based searches. |
companyInclude | array | No | Restrict the search to specific companies. Add one company name per entry (e.g. Google, Shopify). Each name is resolved to a LinkedIn company ID and added to the search URL — LinkedIn will only return jobs from those companies. If a name cannot be matched, it is silently skipped. |
companySizeMax | number | No | Only keep jobs from companies with at most this many employees. Jobs that do not match are still collected and counted toward your billing — use dynamicFilterMatch to filter them out. |
companySizeMin | number | No | Only keep jobs from companies with at least this many employees. Jobs that do not match are still collected and counted toward your billing — use dynamicFilterMatch to filter them out. |
resumeKeywords | array | No | Each entry has a required keyword and optional aliases for abbreviations (e.g. JavaScript → JS). Each job in the output will include matchedKeywords, unmatchedKeywords, and keywordMatchScorePercentage (0–100). |
experienceLevel | select | No | Filter by experience level. Multiple selections allowed. When LinkedIn serves its classic search engine this filter works normally. When LinkedIn serves its AI search engine the filter is ignored, so the scraper instead embeds it into the search query itself, which the AI search understands: the search is retried once with e.g. 'Entry level ' for a single selection or '(Entry level OR Associate) ' for multiple selections. |
filterEasyApply | boolean | No | When enabled, LinkedIn will only return jobs that support Easy Apply (apply directly on LinkedIn without leaving the site). Appends f_AL=true to the search URL. Keyword-based search only — does not affect URL-based search. |
jobTitleExclude | array | No | Skip jobs whose title contains any of these keywords (whole-word, case-insensitive). For example, entering "senior" will exclude "Senior Software Engineer" but not "seniority". Works for both keyword-based and URL-based searches. |
enrichCompanyData | boolean | No | When disabled, the scraper runs significantly faster by skipping additional company page requests. When enabled, the scraper fetches extra company details including: company description, full address (street, city, region, postal code, country), employee count, and company website. Default is disabled for optimal performance. |
requireSalaryInfo | boolean | No | When enabled, only jobs that include salary information in the posting will have dynamicFilterMatch: true. Jobs without salary info are still collected and billed — use dynamicFilterMatch to filter them out. |
jobFunctionExclude | select | No | Exclude jobs whose job function matches any of the selected values. Only applies when "Include Job Functions" is not set. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. Non-matching jobs are saved with dynamicFilterMatch: false. Find all LinkedIn job functions here: [LinkedIn Job Function Codes](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/job-function-codes) |
jobFunctionInclude | select | No | Only keep jobs where the job function matches one of the selected values. Note: This takes priority over Exclude Job Functions when both are set. Jobs are still collected and counted toward billing. Use dynamicFilterMatch to filter them in your results. Non-matching jobs are saved with dynamicFilterMatch: false. Applies to both URL-based and keyword-based searches. Find all LinkedIn job functions here: [LinkedIn Job Function Codes](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/job-function-codes) |
jobIndustryExclude | select | No | Exclude jobs whose industry matches any of the selected values. Only applies when "Include Industries" is not set. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. You can find all the Linkedin industries at [LinkedIn Industry Codes](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2) |
jobIndustryInclude | select | No | Only keep jobs where the industry matches one of the selected values. Note: This takes priority over Exclude Industries when both are set. Jobs are still collected and counted toward billing. Use dynamicFilterMatch to filter them in your results. Non-matching jobs are saved with dynamicFilterMatch: false. Find all LinkedIn industries here: [LinkedIn Industry Codes](https://learn.microsoft.com/en-us/linkedin/shared/references/reference-tables/industry-codes-v2) |
subLocationExclude | array | No | Exclude jobs from specific cities or areas. Add each city name as a separate entry — any job whose location contains that name will be skipped (e.g. add "Laval" to exclude all jobs in Laval). Works independently of the Locations field. Also works with URL-based search. |
saveOnlyUniqueItems | boolean | No | If enabled, only unique items will be saved. Default is false. |
companyFoundedDateMax | number | No | Only keep jobs from companies founded in or before this year. Jobs from companies whose founding year is not available always pass. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. |
companyFoundedDateMin | number | No | Only keep jobs from companies founded in or after this year. Jobs from companies whose founding year is not available always pass. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. |
filterUnder10Applicants | boolean | No | When enabled, LinkedIn will only return jobs with fewer than 10 applicants. Appends f_EA=true to the search URL. Keyword-based search only — does not affect URL-based search. |
requireRecruiterProfile | boolean | No | When enabled, only jobs that have a recruiter profile associated with the posting will have dynamicFilterMatch: true. Jobs without a recruiter profile are still collected and billed — use dynamicFilterMatch to filter them out. |
companyFollowersCountMax | number | No | Only keep jobs from companies with at most this many LinkedIn followers. Jobs from companies whose follower count is not available always pass. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. |
companyFollowersCountMin | number | No | Only keep jobs from companies with at least this many LinkedIn followers. Jobs from companies whose follower count is not available always pass. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. |
excludeRecruitingAgencies | boolean | No | When enabled, jobs posted by staffing and recruiting agencies will be flagged with dynamicFilterMatch: false. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results.` |
companyOrganizationTypeExclude | select | No | Flag jobs from companies whose LinkedIn company page organization type matches any of the selected values as dynamicFilterMatch: false. Only applies when "Include Company Organization Types" is not set. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. Full list of organization types at [LinkedIn Company Profile](https://learn.microsoft.com/en-us/linkedin/shared/references/fields/company-profile) |
companyOrganizationTypeInclude | select | No | Only keep jobs from companies whose LinkedIn company page organization type matches one of the selected values. Takes priority over "Exclude Company Organization Types" when both are set. Jobs are still collected and counted toward your billing — use dynamicFilterMatch to filter them out in your results. Non-matching jobs are saved with dynamicFilterMatch: false. Full list of organization types at [LinkedIn Company Profile](https://learn.microsoft.com/en-us/linkedin/shared/references/fields/company-profile) |
Endpoints
GET
/v1/agents/resources/inspect/apify.cheap_scraper.linkedin-job-scraperPublicPOST
/v1/agents/resources/estimate/apify.cheap_scraper.linkedin-job-scraperPublicPOST
/v1/agents/resources/run/apify.cheap_scraper.linkedin-job-scraperAgent keyGET
/v1/agents/resources/runs/{run_id}Agent keyQuick start
Run it with one Agent One Key over the OpenAI-compatible resource rail.
curl -X POST https://api.deva.me/v1/agents/resources/run/apify.cheap_scraper.linkedin-job-scraper \
-H "Authorization: Bearer deva_i1_your_key_here" \
-H "Content-Type: application/json" \
--data '{
"params": {}
}'Related in Knowledge & Data
Zillow Detail Scraper
Get details of Zillow properties from URLs. This Actor can be easily integrated with other Zillow Scrapers.
Posts Search Scraper for LinkedIn | No Cookies
Scrape LinkedIn posts by keyword without login. Get post content, reactions, author details, and media. Sort by relevance or date. Perfect for research, analysis, and monitoring trends.
Linkedin Jobs Scraper
Scrape Linkedin jobs from jobs search results using search URLs or filters. Get full job details, job poster and company details.
📩📍 Google Maps Email Extractor
Extract Google Maps contact details. Scrape websites of Google Maps places for contact details and get email addresses, website, location, address, zipcode, phone number, social media links. Export scraped data, run the scraper via API, schedule and monitor runs or integrate with other tools.
Indeed Scraper
Scrape jobs posted on Indeed. Get detailed information from this job portal about saved and sponsored jobs. Specify the search based on location with the output attributes position, location, and description.
Idealista Scraper - Real Estate Data for Spain, Italy, Portugal
Extract real estate data from Spain, Italy, and Portugal on idealista.com, including pricing, property features, and contact information. Scrape listings for residential, office, and commercial properties available for sale or rent.