LinkedIn Jobs Scraper Enhanced
Pricing
from $0.23 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
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 singleremoteboolean that can't express hybrid. - Freshness scoring (
daysSincePosted,likelyExpired) so stale listings can be filtered out automatically. - Stable numeric
jobIdextracted 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_RESULTSdiagnostic row instead of a silently empty, falsely "successful" run.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | no | enrich | fast_lookup (cache-first, lighter) or enrich (full detail + structured enrichment). |
queries | array | yes | -- | Search queries (e.g. "backend engineer remote", "software engineer new york"). |
maxResults | integer | no | 25 | Maximum results per query (1-1000). |
webhookUrl | string | no | -- | Optional URL to notify on run completion. |
Output
| Field | Type | Description |
|---|---|---|
query | string | The search query that produced this result. |
jobId | string | Stable numeric ID extracted from the job URL. |
title | string | Job title. |
company | string | Company name. |
location | string | Job location as listed. |
url | string | Direct LinkedIn job URL. |
postedAt | string | Posting date. |
description | string | Full job description text. |
salary | object or null | {min, max, currency, period, raw} when LinkedIn discloses a range, else null -- never guessed. |
workArrangement | string | remote, hybrid, onsite, or unspecified. |
daysSincePosted | integer | Days since the posting date. |
likelyExpired | boolean | true when daysSincePosted > 45. |
confidenceScore | number | 0-1 reliability score for the row. |
scrapedAt / extractedAt | string | ISO 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.
Related Actors
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).