At a glance
What the LinkedIn Jobs Country Filter Scraper does
- Search by
- Keywords + country/location, or LinkedIn job search URLs
- Filters
- Date posted, job type, experience level, workplace type (date re-checked on every result; job type and level whenever details are on)
- Output
- 19 fields per job; JSON, CSV, Excel, API
- Automate
- Schedules, webhooks, Zapier, Make, n8n, Google Sheets, MCP for AI agents
Who it is for
- Recruiters and staffing agencies tracking new roles in one country
- Job boards and newsletters backfilling fresh postings daily with the new-jobs-only mode
- Market researchers measuring hiring demand by title, city or seniority
- Sales teams spotting companies that are hiring for a role they sell to
Output
What you get
- Title, company and company LinkedIn page
- Location and detected ISO country codes
- Posted date (ISO 8601) and relative age
- Clean job link (no tracking parameters)
- Seniority level, employment type, industries
- Applicant count as shown, salary where LinkedIn shows it
- Full description as text and HTML
Example
Input and output
Input
{
"keywords": [
"data engineer",
"product manager"
],
"country": "CA",
"datePosted": "pastWeek",
"jobTypes": [
"fullTime"
],
"maxResultsPerSearch": 100
}One output record
{
"job_id": "4466544261",
"title": "Data Engineer I",
"company": "Docebo",
"company_url": "https://www.linkedin.com/company/docebo",
"location": "Toronto, Ontario, Canada",
"countries": [
"CA"
],
"posted_date": "2026-09-15",
"posted_ago": "1 month ago",
"job_url": "https://www.linkedin.com/jobs/view/4466544261/",
"seniority": "Entry level",
"employment_type": "Full-time",
"industries": "Software Development",
"applicants": "Over 200 applicants",
"salary_text": "CA$68,600.00/yr - CA$91,500.00/yr",
"description_text": "Artificial Intelligence. Actual Impact.\n\nAt Docebo, we’re using AI to change how people learn at work—and we mean actually change it. We’re an AI-powered…",
"search_country": "CA",
"source_url": "https://www.linkedin.com/jobs/view/4466544261/",
"scraped_at": "2026-11-04T11:17:58Z"
}From a real run of this tool; long text and lists shortened here.
How to use it
Three steps
- Type job keywords (e.g. 'data engineer') or paste LinkedIn job search URLs.
- Optionally pick a country, location, date posted, job types, experience levels, workplace types and the exact number of jobs per search.
- Click Start, then download JSON, CSV or Excel, or schedule it and send results to Google Sheets, Zapier, Make or n8n.
API
Call it from Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("aurelix/linkedin-jobs").call(run_input={'keywords': ['data engineer', 'product manager'],
'country': 'CA',
'datePosted': 'pastWeek',
'jobTypes': ['fullTime'],
'maxResultsPerSearch': 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)pip install apify-client. The same input works from the Apify console, a schedule, Make, n8n, Zapier or an AI agent through the Apify MCP server.
Pricing
Pay per result
| Per 1,000 jobs, free plan | $1.50 |
| Per 1,000 jobs, paid plans | $1.05 |
| Start fee per run | $0.00005 |
Live prices from the Apify Store; no subscription and no platform usage billed on top. A price change is scheduled; the Store page shows it before it applies. See the Store page.
Honest limits
What it does not do
- LinkedIn shows at most about 1,000 jobs per search; split broad searches by keyword or location.
- The Actor always uses Apify's datacenter proxy; there is no residential option. LinkedIn rate-limits datacenter addresses, so big runs can stop early (the status message says which searches did).
- Keywords match whole words with simple plurals, a few synonyms (nurse: RN, LPN, LVN; engineer: eng; developer: dev, programmer) and, in titles, a shared stem of 5+ letters ('actuary' finds 'Actuarial'). With details off only the title is checked, so postings whose title does not relate are skipped.
- Posted date is a date only; LinkedIn shows no time.
- Salary appears only where LinkedIn displays it on the public page.
- Workplace type (remote/hybrid/on-site) is sent to LinkedIn as a filter but cannot be re-checked, because the public page does not show it.
- Search URLs are used as they are: their own filters go to LinkedIn, and only keyword relevance is re-checked on their results (not country, date, job type or level).
- LinkedIn can change its public pages; the daily health run catches breakage within 24 hours.
FAQ
Questions buyers ask
Will my LinkedIn account get blocked?
No. It never uses a LinkedIn account, so there is none to block. It reads LinkedIn's public job search, the pages a logged-out visitor sees.
Is there a cheaper alternative to the most popular LinkedIn Jobs Scraper on Apify?
On the free plan, yes: $1.50 per 1,000 jobs here against $2.00 for curious_coder/linkedin-jobs-scraper. On paid plans it is $1.05 against $1.00. valig/linkedin-jobs-scraper is cheaper than both ($0.40 and $0.36). Choose this Actor for the exact country filter, other-country results dropped, job type and level re-checked on each job page, filtered-out jobs not charged, and an only-new-jobs mode for scheduled runs.
How do I export LinkedIn jobs to Google Sheets without logging in?
Run this Actor with your keywords and a country; it never logs in, so no LinkedIn account is needed. Then add Apify's Google Sheets integration on the Actor's **Integrations** tab, or download CSV or Excel from the run's **Storage** tab. Schedule it with 'Only new jobs since last run' on to get only new postings each time.
How do I get LinkedIn jobs into n8n or an AI agent?
Two ways. For a fixed workflow, add Apify's n8n or Make node, choose **Run Actor**, enter aurelix/linkedin-jobs and map the dataset to the next step. For an AI agent (Claude, ChatGPT, Cursor or an n8n AI Agent node), add https://mcp.apify.com/?tools=aurelix/linkedin-jobs as an MCP server and ask for jobs in plain words; setup for each client is in the section above. Runs bill your own Apify account at the same per-result price.
How much does the LinkedIn Jobs Country Filter Scraper cost?
$1.50 per 1,000 jobs ($1.05 on paid Apify plans), billed through your Apify account; you pay only for results. Apify's free plan includes $5 of credit a month, enough for about 3,333 jobs. A price change is scheduled; the Store page shows it before it applies.
Do I need a LinkedIn account or cookies?
No. The Actor reads only LinkedIn's public job pages that anyone can open without logging in. It never logs in and never uses cookies from an account.
Is this legal?
It reads only public data any logged-out visitor can see: LinkedIn job postings. It goes at a polite pace, never logs in and never solves CAPTCHAs. It returns job posting fields (title, company, location, dates, description, link); personal emails in descriptions are removed and no member profiles or recruiter cards are read. To have a record removed, open an issue on this Actor's Issues tab; if LinkedIn formally asks us to stop, this Actor will stop. You are responsible for using the data lawfully, incl. anti-spam and privacy laws; this is not legal advice.
Why did I get fewer jobs than the limit?
LinkedIn shows at most about 1,000 jobs per search, and results whose location, date, type or level do not match your filters are dropped (counted in the log). Narrow searches can have fewer matches.
How is the country filter made correct?
Instead of free-text location, the search uses LinkedIn's numeric country id (verified for 30 countries), then any result whose location clearly names another country is removed.
What happens when LinkedIn rate-limits?
On HTTP 429 the Actor waits (honouring Retry-After, doubling each time) and switches to a fresh proxy session. A search stops after six straight refusals and other searches carry on. The run still succeeds with the jobs it found, and its status message names the searches that stopped early.
Can I use it from an AI assistant?
Yes. The input is described for agents: give 'keywords' and optional filters. It works through Apify's MCP server and API.
What am I charged for an empty or partial run?
Only jobs written to the dataset are charged, plus the small per-run start fee. Jobs dropped by the keyword, country, date, job type or level checks, duplicates and already-seen jobs are free. A search whose result pages show no matching titles three pages in a row stops early: in our test a nonsense keyword finished in about 5 s with 0 jobs. If LinkedIn rate-limits a search, the jobs found so far are kept and charged, and the status message names the searches that stopped. A run fails only when the input is invalid, or when every search failed and nothing was found.
How are duplicates handled?
By LinkedIn's job id. A job found by several keywords or search URLs in the same run is returned once, by the first search that finds it, and charged once. Across runs, switch on 'Only new jobs since last run'.
How long does a run take?
With details on, the Actor opens each job's public page, two at a time with short pauses, so it is polite and slower: in our test runs 50 jobs per search took about 4 minutes. With details off it reads only search pages: 100 jobs in 34 s and 800 jobs in about 2.5 minutes. LinkedIn rate-limiting adds waits.
What changes when I turn off 'Include description, seniority and employment type'?
Each job then comes from the search card only: title, company, company page, location, countries, posted date, job link and salary text where the card shows it. Seniority, employment type, industries, applicants, posted age and description stay empty. The keyword check then looks at the title only, and the job type and experience level re-checks are skipped. The price per job is the same.
How does 'Only new jobs since last run' work?
The Actor remembers the job ids it returned for the same searches (keywords, country, location, filters and sort, or the URL's parameters) or for the state name you set. Already-seen jobs are skipped, free, and do not count toward 'Max jobs per search', so each run can fill its limit with new jobs. Ids are forgotten 60 days after they were last seen. Add a Slack or webhook URL to get the count and the top 10 new jobs after each run.
Which countries and languages are supported?
The Country list has 30 countries with LinkedIn's exact country id: US, CA, GB, IE, DE, FR, NL, BE, ES, PT, IT, CH, AT, SE, NO, DK, FI, PL, IN, SG, JP, PH, AU, NZ, AE, IL, ZA, BR, MX and AR. For anywhere else, type a location or paste a search URL with its geoId. Postings come in the language the employer wrote them. Keyword matching works on any alphabet; the built-in synonyms (RN for nurse, dev for developer) are English only.
Can I paste a LinkedIn search URL with my own filters?
Yes. URLs from linkedin.com/jobs/search and paths like /jobs/python-jobs-toronto work. These parameters are passed to LinkedIn: keywords, location, geoId, f_TPR, f_JT, f_E, f_WT, f_C, f_I, f_SB2, f_AL, distance and sortBy; others are ignored. A URL needs keywords, a location or a geoId. Only keyword relevance is re-checked on URL results.
Guides
Tutorials using this tool
Related
Related tools
Try the LinkedIn Jobs Country Filter Scraper
Open it on the Apify Store, paste the example input above and click Start. Results download as CSV, Excel or JSON.