LinkedIn Jobs Scraper - No Login, Full Descriptions avatar

LinkedIn Jobs Scraper - No Login, Full Descriptions

Pricing

from $0.35 / 1,000 job listeds

Go to Apify Store
LinkedIn Jobs Scraper - No Login, Full Descriptions

LinkedIn Jobs Scraper - No Login, Full Descriptions

Scrape LinkedIn job listings by keyword and location with full descriptions, salary, seniority, employment type, industries, applicant count and apply type. Filters for date posted, distance, job type and experience level. No login or cookies.

Pricing

from $0.35 / 1,000 job listeds

Rating

0.0

(0)

Developer

Solar G

Solar G

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Scrapes LinkedIn job listings by keyword and location from LinkedIn's public job search, with no login or cookies. With details turned on, each job also has its full description (plain text and HTML), salary (when listed), seniority level, employment type, industries, applicant count, apply type and the employer's LinkedIn company ID.

Input

FieldDescription
searchesJob keywords, e.g. "data engineer", "nurse".
locationCity, region or country. Leave empty for worldwide.
distanceOptional radius around the location in miles: 0, 5, 10, 25, 50 or 100.
maxJobsPerSearchDefault 100. LinkedIn shows up to about 1,000 jobs per search.
postedWithinany, day, week or month.
jobTypesKeep only fulltime, parttime, contract, temporary, internship, volunteer or other jobs.
experienceLevelsKeep only internship, entry, associate, midsenior, director, executive or notapplicable jobs.
includeDetailsFull description and job criteria. Default true.
{
"searches": ["data engineer", "analytics engineer"],
"location": "London",
"distance": "10",
"postedWithin": "week",
"experienceLevels": ["entry", "associate"],
"maxJobsPerSearch": 200
}

How the inputs work:

  • Location is matched to a LinkedIn location first. If LinkedIn does not recognise it, the run returns an error item for each search instead of worldwide results. Add a country to avoid ambiguous names, e.g. "Cambridge, England".
  • Date posted and distance are applied by LinkedIn.
  • Job type and experience level are not applied by LinkedIn's logged-out search, so the Actor reads each job's details and keeps only the jobs that match. This takes longer (many jobs may be read for each match), so each search checks at most 6 listings per job requested (at least 60) for up to about 75 seconds. A rare combination may therefore return fewer jobs than requested. If includeDetails is off, the details are used only for filtering and are not charged.
  • Remote, hybrid and on-site filters and "sort by date" are not offered: LinkedIn's logged-out search ignores them. workplaceType is filled in only when the job title or location says "remote", "hybrid" or "on-site".

Output

{
"search": "data engineer",
"searchLocation": "London",
"jobId": "4480480883",
"title": "Data Engineer",
"company": "LA International",
"companyId": "27624",
"companyUrl": "https://uk.linkedin.com/company/la-international",
"location": "London Area, United Kingdom",
"workplaceType": null,
"postedDate": "2026-10-20",
"postedText": "3 days ago",
"salary": "£55,000.00/yr - £75,000.00/yr",
"benefits": "Actively Hiring",
"url": "https://www.linkedin.com/jobs/view/4480480883",
"companyLogo": "https://media.licdn.com/dms/image/...",
"description": "Data Engineer | SC Cleared / SC Eligible\nHybrid working in London\n...",
"descriptionHtml": "<p><strong>Data Engineer | SC Cleared / SC Eligible</strong></p>...",
"seniorityLevel": "Mid-Senior level",
"employmentType": "Full-time",
"industries": "IT Services and IT Consulting, Financial Services, and Defense and Space Manufacturing",
"applicants": "98 applicants",
"applicantsCount": 98,
"applicantsCountIsMinimum": false,
"applyType": "linkedin"
}
  • applicantsCount is the number LinkedIn shows. For "Over 200 applicants" it is 200 with applicantsCountIsMinimum: true. For "Be among the first 25 applicants" it is null.
  • applyType is linkedin (apply on LinkedIn) or external (apply on the employer's site).
  • Jobs that appear in more than one search are returned once.
  • If a job's details cannot be read (expired, removed, or LinkedIn did not answer), the job has a detailsError and is not charged the details add-on.
  • A search that finds nothing, or a location LinkedIn does not recognise, returns an error item: { "type": "error", "search": "...", "input": "...", "searchLocation": "...", "error": "..." }. Error items are free.

API usage

curl -X POST "https://api.apify.com/v2/acts/solarg~linkedin-jobs-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searches": ["data engineer"], "location": "London", "postedWithin": "day"}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("solarg/linkedin-jobs-scraper").call(run_input={"searches": ["nurse"], "location": "Manchester"})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Schedule a daily run with postedWithin: "day" to get a feed of new jobs.

Pricing

  • $0.50 per 1,000 jobs (listing)
  • $0.50 per 1,000 jobs for full details (only when includeDetails is on, and only for jobs whose details were read)

Error items are free. Platform usage is included in the price.

Limitations

  • Only public job postings are available. No profiles, recruiter names or applicant data.
  • Salary appears only when the employer publishes it.
  • LinkedIn limits each search to about 1,000 results. Use narrower searches for more.
  • When a run is close to its timeout, the Actor stops early and saves what it has, so the run still succeeds.

Report problems in the Issues tab.