LinkedIn Jobs Scraper - Job Listings with Full Description avatar

LinkedIn Jobs Scraper - Job Listings with Full Description

Pricing

from $0.50 / 1,000 job returneds

Go to Apify Store
LinkedIn Jobs Scraper - Job Listings with Full Description

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

DataSignals Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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:

fieldmeaning
job_idLinkedIn's id for the job, stable across runs
titleJob title
companyHiring company
company_urlThe company's LinkedIn page
company_logoURL of the company logo
locationLocation as posted
date_postedPosting date, YYYY-MM-DD
posted_agoRelative age as LinkedIn shows it
badgeLinkedIn's label on the card, for example Actively Hiring or Be an early applicant
urlLink to the job on LinkedIn
search_urlThe LinkedIn search this job came from
descriptionFull job description as plain text. Only with includeDescription
seniority_levelFor example Entry level or Mid-Senior level. Only with includeDescription
employment_typeFor example Full-time or Contract. Only with includeDescription
job_functionFor example Engineering and Information Technology. Only with includeDescription
industriesIndustry of the company. Only with includeDescription
applicantsNumber 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

  1. Open the Actor in the Apify Console and click Try for free. The form is prefilled with one search term and one location.
  2. Type your search terms, one per line, and the cities, regions or countries. Or paste LinkedIn search URLs with your filters into startUrls.
  3. Pick the period with postedWithin and tick includeDescription if you need the job text and the detail fields.
  4. Set maxJobs as your budget cap and click Start. Export the dataset as JSON, CSV or Excel from the Storage tab.
  5. From code, call POST /v2/acts/datasignalslab~linkedin-jobs-scraper/run-sync-get-dataset-items on the Apify API with the same input JSON as body.

Input

fieldwhat it does
queriessearch terms, one per line
locationsoptional, a city, region or country per line. Each term is searched in each location
startUrlsoptional, 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
postedWithinany (default), 24h, week or month
sortdate (default, newest first) or relevance
jobTypesoptional: full-time, part-time, contract, temporary, internship
workplaceoptional: on-site, remote, hybrid
experienceLevelsoptional: internship, entry, associate, mid-senior, director, executive
maxJobsPerSearchcap per search, default 100, max 1,000
maxJobshard stop across the run, also your budget cap. 0 means no limit
includeDescriptionadds 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 includeDescription and 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 maxJobs caps 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_function and seniority_level are 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 title afterwards.
  • Company pages, people, posts and recruiter contacts are out of scope.
  • To track new jobs over time, run it on a schedule with postedWithin set to 24h and de-duplicate on job_id.

FAQ

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.