LinkedIn Jobs Scraper - Job Listings with Full Description
Pricing
from $0.50 / 1,000 job returneds
LinkedIn Jobs Scraper - Job Listings with Full Description
Scrape LinkedIn job listings by keyword and location, or paste LinkedIn job search URLs. Title, company, location and date as clean JSON. Optional full description, seniority, employment type and applicant count. From $0.50 per 1,000 jobs, no login, no cookies.
Pricing
from $0.50 / 1,000 job returneds
Rating
0.0
(0)
Developer
DataSignals Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
LinkedIn Jobs Scraper: job listings with full descriptions, no login
Get the job listings behind any LinkedIn job search as clean JSON: title, company, location and posting date. Tick one box to add the full description, seniority level, employment type, job function, industry and applicant count. Search by keyword and location, or paste a LinkedIn search URL with your filters.
No login, no cookies, no API key, no proxy setup. It reads the public job pages LinkedIn shows to visitors who are not signed in, so your own account is never involved.
Run it with the default input to see it work. It returns the newest data engineer jobs in the United States, up to 100 rows, without descriptions.
What you get
One row per job:
| field | meaning |
|---|---|
job_id | LinkedIn's id for the job, stable across runs |
title | Job title |
company | Hiring company |
company_url | The company's LinkedIn page |
company_logo | URL of the company logo |
location | Location as posted |
date_posted | Posting date, YYYY-MM-DD |
posted_ago | Relative age as LinkedIn shows it |
badge | LinkedIn's label on the card, for example Actively Hiring or Be an early applicant |
url | Link to the job on LinkedIn |
search_url | The LinkedIn search this job came from |
description | Full job description as plain text. Only with includeDescription |
seniority_level | For example Entry level or Mid-Senior level. Only with includeDescription |
employment_type | For example Full-time or Contract. Only with includeDescription |
job_function | For example Engineering and Information Technology. Only with includeDescription |
industries | Industry of the company. Only with includeDescription |
applicants | Number of applicants LinkedIn shows. Only with includeDescription |
Example row:
{"job_id": "4464465707","title": "Senior Data Engineer","company": "General Motors","company_url": "https://www.linkedin.com/company/general-motors","company_logo": null,"location": "Warren, MI","date_posted": "2026-10-04","posted_ago": "7 hours ago","badge": "Actively Hiring","url": "https://www.linkedin.com/jobs/view/senior-data-engineer-at-general-motors-4464465707","search_url": "https://www.linkedin.com/jobs/search?keywords=data+engineer&location=United+States&sortBy=DD","description": "We are looking for a data engineer who...","seniority_level": "Mid-Senior level","employment_type": "Full-time","job_function": "Engineering and Information Technology","industries": "Motor Vehicle Manufacturing","applicants": 171}
How to scrape LinkedIn jobs with this Actor
- Open the Actor in the Apify Console and click Try for free. The form is prefilled with one search term and one location.
- Type your search terms, one per line, and the cities, regions or countries. Or paste LinkedIn search URLs with your filters into
startUrls. - Pick the period with
postedWithinand tickincludeDescriptionif you need the job text and the detail fields. - Set
maxJobsas your budget cap and click Start. Export the dataset as JSON, CSV or Excel from the Storage tab. - From code, call
POST /v2/acts/datasignalslab~linkedin-jobs-scraper/run-sync-get-dataset-itemson the Apify API with the same input JSON as body.
Input
| field | what it does |
|---|---|
queries | search terms, one per line |
locations | optional, a city, region or country per line. Each term is searched in each location |
startUrls | optional, LinkedIn job search URLs copied from the browser. Keyword, location, distance, period, job type, workplace, experience level, company, industry, salary band and Easy Apply filters are kept |
postedWithin | any (default), 24h, week or month |
sort | date (default, newest first) or relevance |
jobTypes | optional: full-time, part-time, contract, temporary, internship |
workplace | optional: on-site, remote, hybrid |
experienceLevels | optional: internship, entry, associate, mid-senior, director, executive |
maxJobsPerSearch | cap per search, default 100, max 1,000 |
maxJobs | hard stop across the run, also your budget cap. 0 means no limit |
includeDescription | adds the description and detail fields, charged per description |
Minimal input:
{ "queries": ["data engineer"], "locations": ["United States"] }
New remote jobs of the past 24 hours in three countries, with descriptions:
{ "queries": ["python developer"], "locations": ["Germany", "Netherlands", "United Kingdom"], "postedWithin": "24h", "workplace": ["remote"], "includeDescription": true }
Pricing
Pay per result, two events:
- $0.50 per 1,000 jobs for every job row in the dataset.
- $0.50 per 1,000 descriptions on top, only with
includeDescriptionand only for rows where the description was actually retrieved.
A job with its full description costs $0.001. No start fee, no charge for compute or proxies. Searches that fail cost nothing. Apify's free monthly credit covers thousands of jobs.
Example: 5 search terms in 4 countries, 200 jobs each, is 4,000 jobs. Without descriptions that run costs $2.00, with descriptions $4.00. A daily schedule with postedWithin set to 24h returns far fewer rows, only the new postings.
More from DataSignals Lab
This Actor is one of the pay-per-result data Actors of DataSignals Lab: job listings per ATS platform and job board, app and company reviews, YouTube comments and transcripts, website contacts and tech stacks. Every Actor returns the same clean JSON style and charges only for rows that land in the dataset, so you can combine feeds without remapping fields. All Actors and prices are listed on datasignalslab.com.
Use cases
- Recruiters: a daily list of new openings for a role in a region, with seniority level and applicant count.
- Sales teams: fresh job posts as a buying signal. A company hiring five SAP consultants has a project.
- Labour market researchers: a count per role, region and employment type per day, across countries.
- Job boards and aggregators: new listings with the full description, de-duplicated on
job_id. - AI agents: answer "who is hiring data engineers in Berlin this week" from live data.
Other boards: Indeed Jobs Scraper, Stepstone Jobs Scraper, XING Jobs Scraper. Company career sites: Job Search API.
LinkedIn jobs API alternative: how it compares
- LinkedIn has no public jobs API. Scrapers that log in risk the account, scrapers that run a browser cost more per job. This Actor reads the guest pages with plain HTTP requests.
- You pay per row, not per compute unit, and
maxJobscaps the spend. A scheduled run cannot cost four times the estimate. - A blocked search is retried three times and then skipped. The run does not stop at the first block or at a fixed count.
- No salary field and no external apply link, see Limits. If salary is essential, Indeed Jobs Scraper has a parsed salary range for listings that show one.
Limits
- LinkedIn shows at most 1,000 jobs per search without a login. For more, split the search by location, job type, period or experience level.
- No separate salary field and no external apply link. LinkedIn does not show those to visitors who are not signed in. A salary appears in the description when the employer wrote it there.
applicants,job_functionandseniority_levelare empty or "Not Applicable" when the employer did not set them.- No title include or exclude filter. Narrow the search terms, or filter the dataset on
titleafterwards. - Company pages, people, posts and recruiter contacts are out of scope.
- To track new jobs over time, run it on a schedule with
postedWithinset to24hand de-duplicate onjob_id.
FAQ
Is it legal to scrape LinkedIn jobs?
The Actor reads the job pages LinkedIn publishes to visitors who are not signed in, the same pages search engines index. It does not log in and does not collect profiles. Whether you may use the data depends on your jurisdiction and your use.
Do I need a LinkedIn account, API key or proxy?
No. There is no login and no cookie to paste. Apify's proxies are built in and included in the price.
How often does the LinkedIn Jobs Scraper update?
Every run reads LinkedIn live. Set sort to date and postedWithin to 24h to get only the newest postings.
Can I schedule it?
Yes. Create a schedule in the Apify Console, for example every morning at 07:00, with postedWithin set to 24h. De-duplicate on job_id, because a reposted job keeps its id.
Can an AI agent or MCP client call the LinkedIn Jobs Scraper?
Yes. Through the Apify MCP server any MCP client, for example Claude Desktop or Cursor, can call this Actor as a tool and read the dataset. The input is the same JSON.
How much do 10,000 LinkedIn jobs cost?
$5.00 for the rows, $10.00 with descriptions. No start fee, no charge for failed searches.
What happens when LinkedIn blocks a request?
The request is retried up to three times with a fresh proxy session. If it still fails, the search is skipped, the run continues and the log names the skipped search. You pay only for rows in the dataset.
Integrations
Works with the Apify API and SDKs, schedules, webhooks and the Apify MCP server, so Claude, ChatGPT and other agents can call it as a tool. Push the dataset into Google Sheets, or connect it through Make, Zapier or n8n to your CRM or Slack. Export to JSON, CSV or Excel.
Support
Issues tab on this page, or support@datasignalslab.com. Response within one working day. Built and maintained by DataSignals Lab.
Changelog
- 2026-10: README restructured with guide, cost example, comparison, limits and FAQ. Prices unchanged.
- 2026-10-04: First release. Search by terms and locations or by pasted URL, optional full description with detail fields.