LinkedIn Jobs API (No Cookies) + AI Enrichment
Pricing
from $0.30 / 1,000 job results
LinkedIn Jobs API (No Cookies) + AI Enrichment
$0.3/1K jobs | Search public LinkedIn jobs by role and location with full descriptions and original job links. No cookies, login or API key. Skips repeat jobs for alerts and job boards; optional AI enrichment and English translation.
LinkedIn Jobs Scraper (No Cookies) + AI Enrichment
$0.3/1K jobs | Search public LinkedIn jobs by role and location with full descriptions and original job links. No cookies, login or API key. Skips repeat jobs for alerts and job boards; optional AI enrichment and English translation. Independent, unofficial tool. Not affiliated with or endorsed by LinkedIn.
LinkedIn Jobs Bulk Search Scraper
Our scraper searches public LinkedIn job postings by role and location and lets you filter by posting age, work arrangement, exact location and company facts. Every job comes in one consistent format with the original LinkedIn link and, by default, the complete description in text and HTML. It is ideal for job alerts, job boards, spreadsheets and recruiting pipelines.
- Want research jobs (PhD, postdoc, faculty)? Our EURAXESS Jobs Scraper reads a stored, hourly-refreshed collection of recent EURAXESS offers and adds deadlines and funding programme. It covers EURAXESS only.
- Want startup jobs? Our Y Combinator Jobs Scraper reads Y Combinator's job listings. It covers Y Combinator companies only.
- Browse all Job Atlas job-data Actors: https://apify.com/jobatlas
Key Benefits
- No cookies or login: you never share a LinkedIn session or account, so there is nothing to paste and no account at risk.
- Low pricing: $0.30 per 1,000 jobs, with no start fee. Platform usage is included in that price.
- Full details: the complete description (text and HTML) and the original LinkedIn link on every job, plus company, location, seniority and applicant-count fields when LinkedIn shows them.
- No repeats across runs: schedule the same search and jobs already delivered to you are skipped.
- Optional AI enrichment and English translation, with no AI or translation key to bring. Both are off by default and billed per job (see Pricing below).
- LinkedIn can limit request rates. A run then ends early with fewer jobs than requested (
RUN-SUMMARYstatuspartial), and you pay only for returned jobs.
How It Works
- Provide your search:
- (optional) Job keyword (e.g.,
software engineer,Python). Leave it empty to search all roles in a location. - (optional) Location (e.g.,
United States,Spain,European Union). City, region or country. Leave it empty for worldwide results. - (optional) Posted within (e.g.,
7d). Useany, or a duration such as1h,24h,3d,2wor6m. The default is24h. When a date filter is on, jobs without a posting date are dropped. - (optional) Work arrangements: remote, hybrid, on-site, or any mix. A matching search can still return jobs whose own arrangement is unknown; jobs that clearly conflict are excluded.
- (optional) Job keyword (e.g.,
- Set Maximum results (
maxItems). The default is100and the limit is 1,000 per run;0requests 1,000. Start with 10 to check the fit. - Run the Actor and open the dataset.
RUN-SUMMARYin the run's key-value store shows how many jobs were delivered and whether a retry is suggested.
Run the same search again and you get only postings you have not received yet; set dedupe.enabled to false to see everything again. If you omit dedupe in an API call, the default key default applies and all your searches share one history; pass "key": "" for per-search history.
More settings:
orderBy- Newest first (default) or oldest first. Jobs with an unknown date come last.includeRaw- Keep the full description text and HTML inraw. Default is on. Turn it off for smaller exports; AI enrichment still works.dedupe- Skip jobs already delivered. Default is on. Leavekeyempty and each search keeps its own history; reuse one named key to share history across searches in your account, and use different keys for separate alerts. History is bounded, so it is not a permanent archive.linkedinSearch(advanced) - Combine up to eight keyword and location searches in one run and remove duplicate jobs. Clear the main keyword and location when you use it.filters(advanced) - Keep jobs by AND/OR rules on job fields, such as a title that does not containmanager. The input form's JSON editor has an example.strictGeography(advanced) - Require a country, region or city that LinkedIn confirms. Jobs with unknown locations are excluded by default, or you can stop the run instead.companyProfileEnrichment- Add facts from each job's public company page, for up to 25 unique companies per run. No separate charge.companyFilters(advanced) needs this switched on.
Try the extras safely: switch on First-run mode to get up to five jobs with Silver AI enrichment and English translation. It keeps your search and filters, turns off repeat suppression and analytics, and leaves out descriptions. Five jobs cost about $0.05 (5 x $0.0103 = $0.0515), so a $0.10 Maximum cost per run is enough. Turn it off again to use your own settings.
Optional extras and pricing
You pay per returned job. AI enrichment and English translation are separate per-job events and are off by default. The Pricing tab is authoritative for current rates and scheduled changes.
| Feature | Billed event | Price per event | Price per 1,000 jobs | What it adds |
|---|---|---|---|---|
| Job results | result | $0.0003 | $0.30 | Structured job records and LinkedIn links |
| Silver AI enrichment | position-enrichment | $0.004 | +$4.00 | Missing supported facts extracted from the description |
| Gold AI enrichment | position-enrichment-gold | $0.010 | +$10.00 | Silver plus a second check |
| English translation | translation | $0.006 | +$6.00 | Selected short display fields in English |
| Company details | none | $0 | no extra charge | Facts from the linked public company page |
For example, 1,000 jobs with Silver enrichment and translation cost $0.30 + $4.00 + $6.00 = $10.30. A failed AI enrichment is not charged. Set Apify's Maximum cost per run before large searches; the cap can end a run early.
AI enrichment fills only supported fields that are missing and never overwrites source facts. Silver is the standard tier. AI can make mistakes, so review important facts. English translation covers selected fields such as titles, requirements and benefits. Full descriptions, company names, locations, skills and URLs stay in their original form.
Good to know:
- LinkedIn can limit the request rate during a run. The run then ends early with the jobs it has already fetched, and
RUN-SUMMARYshows statuspartialwith a suggested retry delay. Jobs whose details could not be fetched are held for a later retry and are not charged. Wait the suggested time, then run again with the same input; repeat suppression skips the jobs you already received. - Results depend on the public LinkedIn postings available. Filters, source restrictions and your budget can reduce the count. Strict location and company filters exclude jobs with missing evidence.
- Fields LinkedIn does not publish stay
null. The Actor does not fill them by guessing.
Data You'll Receive
- Job details: title, complete description (text and HTML), LinkedIn job ID and link, posting date, seniority level, industry, employment type when shown.
- Company: name, LinkedIn company ID and link; optionally more facts from the company page.
- Location: the label LinkedIn shows plus city, region, country code and coordinates when available.
- Application: applicant-count snapshot, direct-apply flag and reference number when LinkedIn shows them.
- Salary, required skills and hiring contacts: only when the posting provides them. Otherwise the field is
null. - AI status: the
llmblock records whether enrichment ran and which fields it filled.
The JSON format is nomad-agent-job-v1 with six roots: schemaVersion, identity, data, custom, llm and raw. null means unknown; [] means confirmed empty. Sanitize source HTML before you display it.
Sample output data
Here is an example job from this Actor, observed on October 16, 2026. Empty fields are left out and long text is cut for length. Values change with the source, and a sample is not a promise that the job is still open.
{"schemaVersion": "nomad-agent-job-v1","identity": {"source": "linkedin","externalId": "4471641260","url": "https://www.linkedin.com/jobs/view/software-development-engineer-iii-at-clear-4471641260"},"data": {"title": "Software Development Engineer III","company": {"name": "CLEAR","sourceId": "961661","url": "https://www.linkedin.com/company/clear-by-alclear-llc"},"classification": {"industries": ["Consumer Services"]},"locations": [{"raw": "New York, NY","countryName": "United States","countryCode": "US","city": "New York","region": "NY","latitude": 40.713047,"longitude": -74.00723}],"employment": {"workSchedules": ["full_time"]},"application": {"postedAt": "2026-10-16T09:41:21.000Z","deadline": "2027-04-22T17:59:16.000Z","referenceNumber": "8100208","referenceNumberIssuer": "CLEAR","applicantSnapshot": {"count": 25,"raw": "Be among the first 25 applicants","capturedAt": "2026-10-16T16:48:13.869319Z"},"directApply": true,"applyMethodRaw": "Apply","availability": {"status": "observed_available","observedAt": "2026-10-16T16:48:06.220427Z"}},"seniority": {"raw": ["Mid-Senior level"],"levels": ["mid","senior"]},"requirements": {"experience": [{"minimumYears": 6}]}},"llm": {"status": "not_requested"},"raw": {"description": "CLEAR is building THE secure identity company of the future. Our mission is to make experiences safer ..."}}
LinkedIn Jobs API
Results are stored in a dataset that you can export as CSV, JSON or Excel, or read on demand through the Apify API. Maintained API, MCP, n8n, Make, Python and Agent Skill assets are available in the integration guide. Airtable is a post-run destination projection, not a runnable template, and no Zapier workflow is claimed. Having an asset does not prove a hosted connection or a write to your destination.
from decimal import Decimalfrom apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("jobatlas/linkedin-enrich-translate-normalize-scraper").call(run_input={"schemaVersion": "nomad-agent-job-search-input-v1","keyword": "software engineer","location": "United States","postedWithin": "7d","maxItems": 10,"includeRaw": True,"aiEnrichment": {"enabled": False, "accuracy": "silver"},"translateToEnglish": False,"companyProfileEnrichment": False,"analyticsEnabled": False,"dedupe": {"enabled": True, "key": ""},}, build="latest", max_items=10, max_total_charge_usd=Decimal("0.10"))if run["status"] != "SUCCEEDED" or not run.get("buildId") or not run.get("buildNumber"):raise RuntimeError("Actor run failed or omitted its resolved build identity")for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["data"]["title"], job["identity"]["url"])
Support and Feedback
We improve these scrapers from your feedback. If something breaks or you need a filter:
- Open an issue on the Actor's Issues tab. For a correction or removal request, include the job URL or ID and leave out private information.
- If this Actor saved you time, a short review on the Store helps other users find it.
Run evidence
- Sample record: a real job from build 1.0.10, run
6ITwglMxz7yooffcq, October 16, 2026. That run asked for 10 jobs and returned 3, withRUN-SUMMARYstatuspartialbecause LinkedIn limited the request rate, as described under Good to know. - Build identity: the example above follows
latest. Check the current default build API for the default build number and immutable ID, and record the build ID and number that your run returns. A1.0.xcheck alone does not prove compatibility; follow the selected integration template's compatibility guide. - Reading a run: inspect the dataset together with
RUN-SUMMARYand each job'sllm.status. A successful status alone does not show complete coverage. Restrictive filters or repeat suppression can produce zero results. - Agent setup: the setup skill and the public setup guide cover the documented API example.
Product guides and related tools
Job Atlas
Explore the Job Atlas job-data and matching Actors.
Product guide | Source and client examples | Setup skill | Setup guide
Independent tool. We built and run this Actor ourselves. LinkedIn does not operate, sponsor or endorse it, and its name is used only to say which site the data comes from. Contact the Actor creator through the Apify Issues tab for help or privacy requests.