LinkedIn Jobs Scraper Enhanced avatar

LinkedIn Jobs Scraper Enhanced

Pricing

from $0.23 / 1,000 results

Go to Apify Store
LinkedIn Jobs Scraper Enhanced

LinkedIn Jobs Scraper Enhanced

Structured LinkedIn job data with parsed salary ranges, a 4-way remote/hybrid/onsite/unspecified classification, and freshness scoring for stale listings. Real Playwright-based extraction. $0.60 per 1,000 results.

Pricing

from $0.23 / 1,000 results

Rating

0.0

(0)

Developer

Virtual Footprint LLC

Virtual Footprint LLC

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

11 days ago

Last modified

Share

linkedin-jobs-scraper-enhanced hero banner

LinkedIn Jobs Scraper Enhanced

Structured LinkedIn job postings with parsed salary ranges, a 4-way work-arrangement classification, and a freshness flag for stale listings -- fields most job scrapers leave as raw text or skip entirely.

Key features

  • Full job details: title, company, location, description, posting date, direct URL.
  • Parsed salary as structured data (min, max, currency, period), not just the raw text -- when LinkedIn discloses a range, it's usable without a second parsing pass.
  • 4-way work-arrangement classification (remote / hybrid / onsite / unspecified) inferred from title, location, and description, instead of a single remote boolean that can't express hybrid.
  • Freshness scoring (daysSincePosted, likelyExpired) so stale listings can be filtered out automatically.
  • Stable numeric jobId extracted from the URL for reliable deduplication across repeated runs.
  • Authwall/block detection: if a query is genuinely blocked or times out, you get a visible ZERO_RESULTS diagnostic row instead of a silently empty, falsely "successful" run.

Input

FieldTypeRequiredDefaultDescription
modestringnoenrichfast_lookup (cache-first, lighter) or enrich (full detail + structured enrichment).
queriesarrayyes--Search queries (e.g. "backend engineer remote", "software engineer new york").
maxResultsintegerno25Maximum results per query (1-1000).
webhookUrlstringno--Optional URL to notify on run completion.

Output

FieldTypeDescription
querystringThe search query that produced this result.
jobIdstringStable numeric ID extracted from the job URL.
titlestringJob title.
companystringCompany name.
locationstringJob location as listed.
urlstringDirect LinkedIn job URL.
postedAtstringPosting date.
descriptionstringFull job description text.
salaryobject or null{min, max, currency, period, raw} when LinkedIn discloses a range, else null -- never guessed.
workArrangementstringremote, hybrid, onsite, or unspecified.
daysSincePostedintegerDays since the posting date.
likelyExpiredbooleantrue when daysSincePosted > 45.
confidenceScorenumber0-1 reliability score for the row.
scrapedAt / extractedAtstringISO timestamp of extraction.

Sample output

Two real results from a live run, showing both a parsed salary range and a stale-listing flag:

{
"query": "software engineer new york",
"jobId": "4447220072",
"title": "Software Engineer (All Levels)",
"company": "Blossom",
"location": "New York, NY",
"url": "https://www.linkedin.com/jobs/view/software-engineer-all-levels-at-blossom-4447220072",
"postedAt": "2026-07-30",
"salary": { "min": 150000, "max": 220000, "currency": "USD", "period": "year", "raw": "$150,000.00/yr - $220,000.00/yr" },
"workArrangement": "unspecified",
"daysSincePosted": 2,
"likelyExpired": false,
"confidenceScore": 0.9
}
{
"query": "software engineer new york",
"jobId": "4327410663",
"title": "Software Engineer",
"company": "Codes Health",
"location": "New York, NY",
"postedAt": "2025-12-14",
"salary": { "min": 130000, "max": 300000, "currency": "USD", "period": "year", "raw": "$130,000.00/yr - $300,000.00/yr" },
"daysSincePosted": 230,
"likelyExpired": true,
"confidenceScore": 0.9
}

Not every listing discloses salary -- when LinkedIn doesn't show a pay range, salary is null rather than a guessed value.

Pricing

Pay-per-event: a small one-time actor-start charge, plus $0.60 per 1,000 results returned.

FAQ

Does this only work for remote jobs? No -- queries accepts any LinkedIn job search terms, including location-based ones ("software engineer new york"). workArrangement classifies each result as remote/hybrid/onsite/unspecified regardless of what you searched for.

What happens if LinkedIn blocks or rate-limits a query? You get a visible ZERO_RESULTS diagnostic row with a note to check the run log, rather than a silently empty dataset that looks like "no jobs matched."

Why is salary null on some results? LinkedIn only discloses a pay range on some postings (more common where pay transparency laws apply, e.g. NYC/CO/CA). When it's not shown, this actor returns null instead of guessing from the description.

Can I filter out old/expired postings myself? Yes -- every result includes daysSincePosted and likelyExpired (true past 45 days), so you can filter in your own pipeline without re-scraping to check freshness.

Does it deduplicate results across runs? Each result carries a stable jobId extracted from the URL, so you can dedupe on that field across repeated runs even though LinkedIn appends a unique tracking parameter to job URLs on every render.

Part of the same real-data-verified catalog: Google Trends Opportunity Intelligence (keyword demand signal), B2B Lead Enrichment Suite (business contact + lead scoring), ATS Hiring-Intent Lead Finder (open-roles hiring-intent signal from the same class of official public APIs).