LinkedIn Jobs Scraper - No Cookies, Salary + Dedup, AI Ready avatar

LinkedIn Jobs Scraper - No Cookies, Salary + Dedup, AI Ready

Pricing

from $0.90 / 1,000 job scrapeds

Go to Apify Store
LinkedIn Jobs Scraper - No Cookies, Salary + Dedup, AI Ready

LinkedIn Jobs Scraper - No Cookies, Salary + Dedup, AI Ready

Scrapes publicly accessible LinkedIn job listings via guest endpoints - no login, no cookies. Dedup/delta mode, normalized salary + posted date, GDPR-safe defaults, MCP/AI-agent ready.

Pricing

from $0.90 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

AIDevs

AIDevs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

11 hours ago

Last modified

Share

LinkedIn Jobs Scraper — No Cookies, Dedup + Salary Normalization, AI/MCP Ready

Collect publicly available LinkedIn job listings at scale — no login, no cookies, no credentials, ever. This Actor reads only the same public guest pages anyone can see logged-out, then cleans the data into structured records with normalized salary, ISO posting dates, cross-run deduplication, and an AI/MCP-friendly output mode.

This Actor is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. "LinkedIn" is used descriptively to indicate the public source of the data.

What it does

  • Scrapes public LinkedIn job listings by search URL (paste from linkedin.com/jobs/search) or by structured filters (keywords, location, remote type, experience level, contract type, date posted, company).
  • Returns full job fields plus a normalized salary object, an ISO posting date, optional public company enrichment, and optional delta mode that emits only jobs you haven't seen before.
  • Never asks for your LinkedIn password or session cookies, so your account is never put at risk.

Why this one is different

CapabilityThis ActorTypical LinkedIn jobs scrapers
Login / cookies requiredNever — public guest data only"Advanced" tiers require your session cookies
Machine-readable salaryYes{min, max, currency, period}Raw text only, if at all
ISO posting dateYes"2 weeks ago" → ISO + confidence flagRaw relative text
Pay only for new jobsYes — delta mode with per-user memoryRe-charges for the same jobs each run
Recruiter PII defaultOff (GDPR-safe gate)Often scraped silently
AI / MCP output modeYes — concise, token-friendly recordsNot optimized
Run transparencyYes_stats telemetry per runSilent partial results
Beat the 1,000-capYes — split-by-country expansion + dedupSometimes

Quick start

Apify Console (UI)

  1. Open the Actor, paste a LinkedIn job search URL into Search URLs, or fill in Keywords + Location.
  2. Set Max items and click Start.

API

curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~linkedin-jobs-scraper-pro/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": "python developer",
"location": "Berlin",
"remoteTypes": ["remote","hybrid"],
"maxItems": 100
}'

n8n / Make / Zapier

Use the generic Apify connector, pick this Actor, and map the input fields above. Schedule it to run daily with onlyNewJobs: true to receive only fresh postings.

MCP (AI agents)

This Actor exposes a clean, richly described input schema and supports standby mode, so it works well when called from Apify's MCP server. For agent use, set "outputFormat": "concise" to get compact, token-friendly records:

{ "keywords": "data scientist", "location": "Remote", "maxItems": 25, "outputFormat": "concise" }

Input reference

FieldTypeDefaultNotes
searchUrlsstring[][]Paste from linkedin.com/jobs/search. Takes precedence over filters.
keywordsstringSupports quoted phrases and OR / AND / NOT.
locationstringCity, region, or country.
remoteTypesstring[][]remote, hybrid, onsite.
experienceLevelsstring[][]internshipexecutive.
contractTypesstring[][]full-timevolunteer.
datePostedstringany24h, week, month, any.
companyNames / companyIdsstring[][]Restrict to specific companies.
maxItemsinteger1001–100000, after dedup.
splitByCountrystringe.g. US; expands per-city to beat the 1,000-cap.
scrapeJobDetailsbooleantrueOff = faster/cheaper cards-only.
companyEnrichmentbooleanfalseAttach public company page data.
includePosterInfobooleanfalseGDPR gate — recruiter PII, off by default.
onlyNewJobsbooleanfalseDelta mode; only jobs unseen in prior runs.
outputFormatstringfullfull or concise (AI/MCP).

Output reference (sample)

{
"id": "3812345678",
"url": "https://www.linkedin.com/jobs/view/3812345678/",
"title": "Senior Python Developer",
"companyName": "Acme Corp",
"companyUrl": "https://www.linkedin.com/company/acme",
"companyLogo": "https://media.licdn.com/logo1.png",
"location": "Berlin, Germany",
"salaryText": "€70,000 - €90,000/year",
"salaryNormalized": { "min": 70000, "max": 90000, "currency": "EUR", "period": "year", "source": "€70,000 - €90,000/year" },
"postedText": "1 week ago",
"postedAtISO": "2026-06-28T00:00:00.000Z",
"postedAtResolved": true,
"seniority": "Mid-Senior level",
"employmentType": "Full-time",
"jobFunction": "Engineering and Information Technology",
"industries": "Software Development",
"descriptionText": "We are looking for a Senior Python Developer…",
"applicantsCount": 200,
"applyUrl": "https://acme.example.com/careers/apply/123",
"applyType": "external",
"isNew": true,
"scrapedAt": "2026-07-05T12:00:00.000Z"
}

Every run also pushes a final _stats record and sets it as the run status message:

{ "_stats": { "requested": 100, "scraped": 98, "duplicates": 2, "failed": 0, "blockRate": 0.0, "companiesEnriched": 0, "durationSeconds": 74, "stoppedReason": null } }

Pricing — pay per event

You pay only for what you get. No monthly rental, no subscription.

EventPrice
Actor start$0.00
Each job scraped$0.0009 — that's $0.90 per 1,000 jobs (only unique, successfully scraped jobs; never duplicates or failures)
Each company enriched$0.0015 ($1.50 per 1,000)

At $0.90 / 1,000 jobs, this Actor undercuts the most widely used LinkedIn jobs scrapers while adding normalized salary, ISO dates, delta mode, and GDPR-safe defaults on top.

Intro offer: the first 200 jobs per user are free.

Cost examples (jobs only, after the free tier):

  • 100 jobs → $0.09
  • 1,000 jobs → $0.90
  • 10,000 jobs → $9.00

With onlyNewJobs: true, a daily scheduled run charges only for genuinely new postings — often a handful of cents per day.

Legality & compliance

  • Public data only. This Actor fetches only pages reachable while logged out. It never logs in, never sends cookies or credentials, and never attempts to bypass an authwall or CAPTCHA. In hiQ v. LinkedIn, scraping public data was held not to violate the CFAA; hiQ's loss turned on the User Agreement it had accepted through accounts — an agreement this Actor never accepts or uses.
  • No circumvention. This Actor collects publicly available listings. It does not bypass LinkedIn security or limits.
  • Personal data (GDPR). Job postings are largely non-personal. Recruiter / job-poster fields are personal data and are off by default. If you enable includePosterInfo, you become the data controller responsible for a lawful basis (e.g. Art. 6(1)(f) legitimate interest for recruitment research) and for honoring erasure requests.
  • Your data stays yours. Results are written only to your own Apify storage. This Actor does not build or redistribute a central database of job descriptions.
  • Trademark. "LinkedIn" is used only descriptively; no LinkedIn logo is used as the Actor icon.

Data removal requests

To request removal of personal data that may appear in results, please open a request on this Actor's Issues tab on Apify Store. We respond within 24 hours.

FAQ

Why do big searches stop around 1,000 results? That's LinkedIn's own per-search cap on public results. Set splitByCountry (e.g. US) and the Actor expands the search into per-city queries and de-duplicates across them.

How do I get only new jobs each day? Schedule the Actor (free platform feature) and set onlyNewJobs: true. It remembers job IDs it has already returned for you and emits only new ones — so you also pay only for new items.

Can I export to CSV / Excel / JSON? Yes — every run's dataset can be exported as JSON, CSV, or XLSX, and accessed via the API. Scheduling and webhooks are supported (all free platform features).

Does it need my LinkedIn login? No — and it never will. That's the point.

Support

Found a problem or a markup change? Open an issue on the Actor's Issues tab. We aim to respond within 24 hours and to fix selector breakages within 48 hours.