LinkedIn Jobs & Search URL Scraper avatar

LinkedIn Jobs & Search URL Scraper

Pricing

from $0.00009 / actor start

Go to Apify Store
LinkedIn Jobs & Search URL Scraper

LinkedIn Jobs & Search URL Scraper

Enterprise-grade scraper for LinkedIn Jobs and direct LinkedIn search URLs. Supports multi-filter search, Indian & global markets, batch keywords, deduplication, and pay-per-result integration.

Pricing

from $0.00009 / actor start

Rating

0.0

(0)

Developer

Vinay Ghate

Vinay Ghate

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

๐Ÿš€ Enterprise LinkedIn Jobs & Search URL Scraper

Apify Actor Pay-Per-Result License: ISC

The LinkedIn Jobs & Search URL Scraper is an enterprise-grade, high-performance Apify Actor designed to extract structured job listings directly from LinkedIn searches or raw LinkedIn search URLs.

Whether you are automating recruitment pipelines, analyzing hiring market trends, monitoring competitor hiring, or building job boards, this scraper delivers clean, normalized, deduplicated job data at scale with zero friction.


โœจ Key Features

  • ๐Ÿ”— Direct LinkedIn Search URL Support: Simply copy & paste any search URL from LinkedIn (e.g. https://www.linkedin.com/jobs/search-results/?keywords=React&location=Bengaluru&f_TPR=r86400). The actor automatically parses keywords, location, recency filters (f_TPR), job type (f_JT), experience level (f_E), and workplace mode (f_WT).
  • ๐Ÿ‡ฎ๐Ÿ‡ณ Optimized Indian & Global Market Defaults: Comes pre-configured with default Indian job market values (countryName: "India", locationName: "India", includeKeyword: "software engineer") while seamlessly supporting any global location or country.
  • ๐ŸŽฏ Comprehensive Filter Suite: Filter by workplace type (Remote, Hybrid, On-site), experience level (Internship to Executive), employment type (Full-time, Part-time, Contract, Intern), hiring company name, and salary bounds.
  • โšก Batch Keywords & Multi-Location Searches: Pass arrays of target keywords (e.g., ["Frontend", "Backend", "DevOps"]) and multiple location targets in a single run.
  • ๐Ÿ›ก๏ธ In-Run Deduplication: Automatically deduplicates duplicate job postings across pagination and target locations using unique job identifiers.
  • ๐Ÿ“ฆ 24-Hour Built-in Smart Caching: Prevents redundant upstream requests and saves compute cost by caching search signatures in Apify's KeyValueStore. Bypass anytime with forceFresh: true.
  • ๐Ÿ”„ Exponential Backoff Resilience: Built-in HTTP retries handle temporary network blips or rate limits without failing actor execution.
  • ๐Ÿ’ฐ Apify Pay-Per-Result Integration: Fully compliant with Apify's Pay-Per-Result monetization model via Actor.charge({ eventName: 'job-scraped' }).

โšก Quick Start

1. Simple Run via Apify Console UI

  1. Select the Actor in Apify Store.
  2. Either paste a direct LinkedIn Search URL OR enter your search keywords and location (defaults to India).
  3. Click Start to run the scraper and view structured output in the Output tab.

2. Local Setup & Execution

# Clone repository
git clone <repository-url>
cd linkedle-x-jobs-apify
# Install dependencies
npm install
# Run locally using test input (storage/key_value_stores/default/INPUT.json)
npm start

๐Ÿ”— Direct LinkedIn Search URL Parsing

Instead of configuring individual filter dropdowns, you can pass a direct LinkedIn search URL in the searchUrl input parameter:

{
"searchUrl": "https://www.linkedin.com/jobs/search-results/?currentJobId=4477677066&keywords=Schaeffler&origin=JOB_SEARCH_PAGE_JOB_FILTER&referralSearchId=J%2Bk0SjJ72rbzfZS5ZH1ZDA%3D%3D&f_TPR=r86400&f_SAL=f_SA_id_227001%3A276001",
"maxResults": 25
}

Extracted Parameters Table

LinkedIn Query ParameterExtracted FieldMapped Value Example
keywords / keywordincludeKeyword"Schaeffler"
locationlocationName"Bengaluru, India"
f_TPR=r86400datePosted"today" (Past 24 hours)
f_TPR=r604800datePosted"week" (Past 7 days)
f_WT=2workplaceType"remote"
f_E=2,3experienceLevel"entry,associate"
f_JT=FjobType"FULLTIME"

โš™๏ธ Input Configuration Reference

ParameterTypeDefaultDescription
searchUrlString""Direct LinkedIn job search URL. Overrides manual keyword & filter fields.
includeKeywordString"software engineer"Primary job title or skills to search (e.g. "React Developer").
keywordsArray<String>[]Batch search keyword list (e.g. ["Frontend", "Backend"]).
locationNameString"India"City, state, or region (e.g. "Bengaluru", "Mumbai", "New York").
countryNameString"India"Country identifier (e.g. "India", "USA", "UK").
companyNameString""Filter postings by specific hiring company name.
jobTypeString"all"Filter by employment type: "all", "FULLTIME", "PARTTIME", "CONTRACTOR", "INTERN".
workplaceTypeString"all"Filter workplace mode: "all", "on-site", "remote", "hybrid".
experienceLevelString"all"Experience level: "all", "internship", "entry", "associate", "mid_senior", "director", "executive".
datePostedString"all"Posting recency: "all", "today", "3days", "week", "month".
minSalaryIntegernullMinimum salary threshold.
maxSalaryIntegernullMaximum salary threshold.
pagesToFetchInteger1Number of result pages to fetch per query (1-50).
maxResultsInteger50Maximum total records cap across all queries.
targetLocationsArray<String>[]Supplementary batch location list (e.g. ["Bengaluru", "Hyderabad", "Pune"]).
fetchFullDescriptionBooleantrueWhen true, extracts full HTML/text description.
forceFreshBooleanfalseWhen true, bypasses 24-hour cache and retrieves live data.
proxyConfigurationObjectnullApify Proxy configuration for enterprise routing.

๐Ÿ“Š Sample Output (Dataset Item)

{
"job_title": "React JS & Node JS Developer",
"company_name": "Tata Consultancy Services",
"location": "Bengaluru, Karnataka",
"posted_via": "LinkedIn",
"salary": null,
"date": "2 days ago",
"URL": "https://in.linkedin.com/jobs/view/react-js-node-js-developer-at-tata-consultancy-services-4477155165",
"description": "Role: React JS & Node JS Developer\nExperience: 6โ€“8 Years\nLocation: Chennai / Bangalore / Hyderabad\n\nRequired Skills:\n- 6โ€“8 years of software development experience.\n- Strong expertise in React JS, TypeScript, JavaScript ES6+.\n- Hands-on experience with Node.js and REST API development.",
"scrapedAt": "2026-10-10T02:13:04.382Z",
"searchQuery": "React Developer in Bengaluru, India"
}

๐Ÿง  How It Works

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Actor Input Received โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Parse searchUrl (if any) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Validate Parameters โ”‚ โ”€โ”€โ–บ Throws descriptive error on unknown parameters
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Check 24h Cache Store โ”‚ (Skipped if forceFresh: true)
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ โ”‚
(Cache Hit) (Cache Miss)
โ”‚ โ”‚
โ”‚ โ–ผ
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ”‚ Fetch Live Data (With Retries)โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ In-Run Deduplication โ”‚ โ”€โ”€โ–บ Deduplicates by unique job ID / URL
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Normalize & Format Record โ”‚ โ”€โ”€โ–บ ISO 8601 timestamps, clean text & null fallbacks
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Push to Apify Dataset โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Charge Pay-Per-Result Eventโ”‚ โ”€โ”€โ–บ Actor.charge({ eventName: 'job-scraped' })
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ’Ž Monetization & Pay-Per-Result Pricing

This Actor utilizes Apify's Pay-Per-Event / Pay-Per-Result pricing model:

  • Free Tier Users: Runs are capped to 10 results, 1 page to preserve platform compute resources while offering instant evaluation.
  • Paid / Subscription Users: Unlocks high-volume multi-page scraping, batch keyword queries, multi-location targeting, and full descriptions. Charged strictly per scraped job result via Actor.charge({ eventName: 'job-scraped', count: jobs.length }).

โ“ Frequently Asked Questions (FAQ)

Q: Can I pass raw LinkedIn search URLs from my browser?

Yes! Simply copy the URL from your browser address bar after filtering on LinkedIn and paste it into the searchUrl field. The actor will parse the query parameters automatically.

Q: How are duplicate jobs handled?

The scraper performs in-run deduplication using unique LinkedIn job IDs extracted from URLs. If the same job posting appears across multiple pages or target locations in the same run, it is pushed to the dataset only once.

Q: How do I force fresh data instead of cached results?

Set "forceFresh": true in your input. This instructs the actor to ignore the 24-hour KeyValueStore cache and fetch live listings.


๐Ÿ“„ License & Compliance

Licensed under the ISC License. Designed for ethical, rate-limited public data aggregation in accordance with Apify platform guidelines and terms of service.