LinkedIn Jobs Search Scraper | Fresh Job Leads avatar

LinkedIn Jobs Search Scraper | Fresh Job Leads

Pricing

from $5.00 / 1,000 results

Go to Apify Store
LinkedIn Jobs Search Scraper | Fresh Job Leads

LinkedIn Jobs Search Scraper | Fresh Job Leads

Extract fresh LinkedIn job search results by keyword and location. Get job title, company, location, job URL, apply URL, description, seniority, employment type, applicants, remote status, and new-jobs monitoring.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Gyanendra Thakur

Gyanendra Thakur

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does LinkedIn Jobs Search Scraper do?

LinkedIn Jobs Search Scraper | Fresh Job Leads extracts fresh public job listings from LinkedIn Jobs by keyword and location. Instead of starting from a company page, it searches LinkedIn jobs directly, paginates through matching results, removes duplicates, filters by posting date and keywords, and can open each job detail page to collect descriptions, apply links, seniority, employment type, applicants, and workplace type.

Run it on Apify to use API access, schedules, monitoring, proxy rotation, and integrations with tools such as Google Sheets, Make, Zapier, webhooks, and your own data pipeline.

Why use LinkedIn Jobs Search Scraper?

Use this Actor when you need a clean stream of job leads from LinkedIn search:

  • Track new hiring demand for specific roles, markets, and regions.
  • Build recruiting lead lists by job keyword and location.
  • Monitor remote job openings for sales, talent, or market research.
  • Export recent jobs to CSV, Excel, JSON, or API consumers.
  • Run repeat searches with newJobsOnly to avoid processing the same job IDs again.

How to use LinkedIn Jobs Search Scraper

  1. Open the Actor on Apify.
  2. Enter a job keyword, such as software engineer, data analyst, or sales development representative.
  3. Enter a location, such as India, United States, London, or Remote.
  4. Set postedWithinDays to limit results to recent jobs.
  5. Set maxJobs to control how many jobs should be saved.
  6. Enable scrapeDescription if you need descriptions, apply URLs, applicants, seniority, employment type, and workplace type.
  7. Run the Actor and download the dataset.

Example local input for apify run:

{
"keyword": "software engineer",
"location": "India",
"maxJobs": 20,
"postedWithinDays": 7,
"remoteOnly": false,
"scrapeDescription": false,
"keywordInclude": [],
"keywordExclude": [],
"newJobsOnly": false
}

Input

Configure the Actor from the Apify Input tab.

  • keyword: Required job search keyword.
  • location: Optional location text passed to LinkedIn search.
  • maxJobs: Maximum number of jobs to save, from 1 to 1000.
  • postedWithinDays: Return jobs posted within this many days. Leave empty to return all jobs.
  • remoteOnly: Adds LinkedIn's remote filter and also post-filters by location and workplace type.
  • scrapeDescription: Opens job detail pages for description and additional metadata.
  • keywordInclude: Keeps only jobs containing at least one term in title or location.
  • keywordExclude: Removes jobs containing any term in title or location.
  • newJobsOnly: Skips job IDs already found in previous runs with the same keyword and location.

Output

Each dataset item represents one job. A final summary item is also pushed at the end of the run. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

{
"jobId": "1234567890",
"title": "Software Engineer",
"company": "Example Company",
"location": "Bengaluru, Karnataka, India",
"url": "https://www.linkedin.com/jobs/view/1234567890",
"applyUrl": "https://company.com/careers/job/123",
"linkedinApplyUrl": "https://www.linkedin.com/jobs/view/1234567890",
"datePosted": "2026-05-28",
"scrapedAt": "2026-05-28T10:00:00.000Z",
"keyword": "software engineer",
"inputLocation": "India",
"descriptionText": "Full job description...",
"descriptionHtml": "<div>...</div>",
"descriptionStatus": "success",
"employmentType": "Full-time",
"seniorityLevel": "Mid-Senior level",
"workplaceType": "Remote",
"applicants": "42 applicants",
"city": "Bengaluru",
"state": "Karnataka",
"country": "India",
"isRemote": true,
"companyLinkedinUrl": "https://www.linkedin.com/company/example-company"
}

Summary item:

{
"_type": "run_summary",
"keyword": "software engineer",
"location": "India",
"totalJobsScraped": 20,
"jobsFilteredOut": 12,
"duplicatesSkipped": 8,
"startedAt": "2026-05-28T10:00:00.000Z",
"finishedAt": "2026-05-28T10:03:00.000Z",
"newJobsOnlyMode": false,
"stoppedReason": "completed"
}

Data table

FieldDescription
jobIdLinkedIn job ID extracted from the job URL.
titleJob title.
companyCompany name shown on the job card.
locationRaw LinkedIn location text.
urlCanonical LinkedIn job URL.
applyUrlReal external company application URL when LinkedIn exposes one. LinkedIn URLs are not stored here.
linkedinApplyUrlLinkedIn-hosted job or apply URL. Use this when no external apply URL is available.
datePostedPosting date when LinkedIn exposes it.
keywordSearch keyword used for the run.
inputLocationInput location used for the run.
descriptionTextClean job description text when detail scraping is enabled.
descriptionHtmlOriginal description HTML from LinkedIn's public job endpoint.
descriptionStatussuccess when detail scraping completed, failed when the detail page could not be fetched or parsed, and skipped when description scraping was disabled.
employmentTypeEmployment type from LinkedIn job criteria.
seniorityLevelSeniority level from LinkedIn job criteria.
workplaceTypeRemote, Hybrid, or On-site when available.
applicantsApplicant count text when visible.
city, state, countryParsed location fields.
isRemoteBoolean remote signal inferred from location and workplace type.
companyLinkedinUrlCompany LinkedIn URL when available on the job card.

Pricing / Cost estimation

How much does it cost to scrape LinkedIn jobs? The main cost drivers are maxJobs, description scraping, retries, and proxy traffic. A quick search without descriptions is cheaper because it only reads search result pages. Enabling scrapeDescription opens one extra LinkedIn endpoint per job, which improves output quality but increases requests and runtime.

For small tests, start with maxJobs around 20. Apify free tier limits may be enough for limited local testing, but production runs with residential proxy and larger result volumes can require a paid plan.

Tips or Advanced options

  • Use narrower keywords to reduce irrelevant results.
  • Use postedWithinDays to keep runs focused on fresh openings.
  • Use keywordExclude to remove internships, staffing roles, or unwanted locations.
  • Use newJobsOnly for scheduled monitoring runs so downstream systems only receive newly seen job IDs.
  • Disable scrapeDescription when you only need title, company, location, URL, and date.
  • Keep maxJobs realistic. LinkedIn search results can stop before your requested maximum if there are no more public cards.

FAQ, disclaimers, and support

Is scraping LinkedIn legal? You are responsible for ensuring your use case complies with LinkedIn's Terms of Service, applicable laws, and privacy requirements. This Actor extracts public job listing information and should not be used to collect prohibited or sensitive data.

Why are some fields empty? LinkedIn does not expose every field on every job card or detail page. Apply URLs, applicants, workplace type, and job criteria can be missing depending on the listing.

Does remote filtering rely only on LinkedIn? No. The Actor sends LinkedIn's remote search filter and also post-filters by location text and workplace type when available.

Need changes or a custom workflow? Use the Issues tab on Apify for feedback, bugs, and feature requests. Custom job lead workflows, ATS enrichment, and CRM exports can be built separately from this MVP.