Linkedin Profile Scraper
Pricing
Pay per usage
Linkedin Profile Scraper
Extract LinkedIn job listings by role, skill, and location in **under 60 seconds** — no browser required, no bloat, production-ready.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Dinesh Kumar Wadhwani
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Job Search Aggregator — LinkedIn + Naukri + Indeed
Search three of India's biggest job platforms in a single run. Get up to 100 deduplicated, structured job listings from LinkedIn, Naukri, and Indeed — ranked by platform, filtered by role, skill, and location, ready to pipe into any downstream system.
Built for developers, recruiters, and product teams who need comprehensive job market coverage without managing three separate scrapers, three different APIs, and three different data formats. One input. One dataset. All three platforms.
Why this Actor
Most job scrapers cover one platform. The problem is that job postings are fragmented — a VP Engineering role at a Bangalore startup may appear on LinkedIn but not Naukri. A GCC hiring drive may post exclusively on Naukri. A remote AI role may only surface on Indeed. Covering one platform means missing the others.
This Actor runs all three in sequence, deduplicates results globally, and returns a single clean dataset with a consistent output schema across platforms.
| This Actor | Running 3 separate actors | |
|---|---|---|
| ⚙️ Input | One set of inputs | Three separate configurations |
| 🔁 Deduplication | Global — same job never appears twice | Per-platform only |
| 📦 Output schema | Consistent across all platforms | Different fields per platform |
| 💰 Overhead | One actor run | Three actor runs |
| 🧠 Memory | Sequential — one browser at a time | Parallel — 3× memory |
| 📊 Coverage | LinkedIn + Naukri + Indeed | Depends which you run |
How it works
The Actor runs platforms sequentially to keep memory usage low — LinkedIn first (HTTP-only, no browser), then Naukri (Playwright + API interception), then Indeed (Playwright + DOM scraping). All results share a global deduplication pool using job IDs and URLs, so the same listing never appears twice regardless of which platform returned it.
Result allocation (soft split):
- LinkedIn: up to 40 jobs
- Naukri: up to 40 jobs
- Indeed: up to 20 jobs
- Total cap: 100 unique jobs
The split is soft — if LinkedIn finds fewer than 40 results for a niche search, the unused slots carry over to Naukri and Indeed automatically. The 100-job total cap is always the governing limit.
Search strategy: Each role is searched independently per location. Skills are appended as separate search terms (not combined into a single AND query), so each skill is OR'd — a job only needs to match one skill to qualify. Results are deduplicated globally across all role × skill × location combinations.
For Naukri specifically, the actor applies a title-match filter after fetching results, since Naukri's keyword search returns jobs where the role appears anywhere in the description — not just the title. This ensures "Vice President" doesn't return ".Net Lead" jobs that mention a VP in the org chart.
Time limit: A hard 4-minute cutoff applies across all three platforms combined. If the search runs long (slow proxies, large result sets), the actor stops cleanly and returns whatever has been collected to that point. This bounds cost and prevents users from waiting indefinitely.
What it does per platform
Uses Crawlee's CheerioCrawler (HTTP-only, no browser) against LinkedIn's guest seeMoreJobPostings endpoint. Fast, cheap, no rendering overhead. Returns 10 jobs per page.
Naukri
Uses PlaywrightCrawler to load Naukri's search page, then intercepts the internal jobapi/v3/search XHR response — the same JSON API call Naukri's own page fires internally. This captures structured data (salary bands, experience ranges, work mode, skills array) without scraping HTML. Falls back to DOM scraping if interception fails.
Indeed
Uses PlaywrightCrawler with browser fingerprinting to render Indeed India's JavaScript-heavy search results and scrapes job cards from the DOM. Requires residential proxies.
Input
| Field | Type | Required | Limit | Description |
|---|---|---|---|---|
roles | string[] | ✅ Yes | 3 | Job titles to search for (e.g. "Vice President", "Director Engineering") |
skills | string[] | No | 3 | Supporting keywords (e.g. "AI", "GCC", "SaaS") |
locations | string[] | ✅ Yes | 3 | Indian cities or regions (e.g. "Bangalore", "Pune", "Hyderabad") |
timeFrame | string | No | — | How recently jobs were posted — see values below |
timeFrame values
| Value | Meaning | Recommended for |
|---|---|---|
"" | Any time | Broad searches, rare roles |
1 | Last 24 hours | Daily scheduled runs |
7 | Last 7 days | Most searches — good volume/freshness balance |
15 | Last 15 days | Senior roles (VP, Director) — fewer postings per day |
💡 Tip for senior roles: VP, Director, and Head-of roles are posted less frequently than junior roles. Use
timeFrame: "15"ortimeFrame: "7"for best results."1"(last 24 hours) will return very few results for senior titles.
Example — VP Engineering roles across India's tech hubs
{"roles": ["Vice President", "VP Engineering"],"skills": ["AI", "SaaS", "GCC"],"locations": ["Bangalore", "Pune", "Hyderabad"],"timeFrame": "7"}
This runs searches for:
Vice Presidentin each locationVice President AIin each locationVice President SaaSin each locationVice President GCCin each locationVP Engineeringin each location- (and so on)
All results deduplicated globally — if the same job appears on LinkedIn and Naukri, it is saved only once.
Example — Data science roles
{"roles": ["Data Scientist", "ML Engineer"],"skills": ["Python", "PyTorch"],"locations": ["Bangalore", "Mumbai"],"timeFrame": "7"}
Example — Daily senior leadership scan
{"roles": ["Chief Technology Officer", "VP Engineering", "Head of Engineering"],"locations": ["Bangalore"],"timeFrame": "1"}
Output
All results are saved to a single Apify dataset with a consistent schema across platforms. Each record includes a platform field so you can filter, sort, or route by source.
{"platform": "LinkedIn","title": "Vice President of Engineering","company": "Acme Corp","location": "Bengaluru, Karnataka, India","link": "https://www.linkedin.com/jobs/view/4426507200","postedAt": "2026-06-28","jobId": "4426507200","matchedKeywords": "Vice President AI","searchLocation": "Bangalore","roles": ["Vice President"],"inputSkills": ["AI", "GCC", "SaaS"]}
{"platform": "Naukri","jobId": "060726009380","title": "Vice President - Technology","company": "Barclays","location": "Bengaluru","experience": "15-20 Yrs","salary": "25-50 Lakhs","workMode": "Hybrid","skills": ["Cloud", "AWS", "Leadership", "Microservices"],"postedAt": 1783324493706,"link": "https://www.naukri.com/barclays-jobs-careers-212359","matchedKeywords": "Vice President","searchLocation": "Bangalore","roles": ["Vice President"],"inputSkills": ["AI", "GCC", "SaaS"]}
{"platform": "Indeed","title": "Vice President, Product Engineering","company": "Flipkart","location": "Bengaluru, Karnataka","url": "https://in.indeed.com/rc/clk?jk=fcc1e677b4ff9df1","jobKey": "fcc1e677b4ff9df1","matchedKeywords": "Vice President AI","searchLocation": "Bangalore","roles": ["Vice President"],"inputSkills": ["AI", "GCC", "SaaS"]}
Output field reference
| Field | Platforms | Description |
|---|---|---|
platform | All | "LinkedIn", "Naukri", or "Indeed" |
title | All | Job title as listed |
company | All | Hiring company name |
location | All | Location as shown on the listing |
link / url | All | Direct URL to the job posting |
jobId / jobKey | All | Platform's internal job ID — used for deduplication |
postedAt | All | Posting date (format varies by platform) |
matchedKeywords | All | The exact search query that produced this result |
searchLocation | All | Which of your input locations produced this result |
roles | All | Echo of your input roles |
inputSkills | All | Echo of your input skills |
experience | Naukri only | Required experience range (e.g. "10-15 Yrs") |
salary | Naukri only | Salary band if disclosed — null if hidden (most listings) |
workMode | Naukri only | Work from office, Remote, or Hybrid |
skills | Naukri only | Skills array extracted from the job listing |
Performance benchmarks
Tested on Apify platform, 1024 MB memory:
| Search | Timeframe | Results | Duration | Cost |
|---|---|---|---|---|
| 1 role · 3 skills · 3 locations | Last 7 days | 60–100 jobs | 2–4 minutes | ~$0.05–0.10 |
| 3 roles · 3 skills · 3 locations | Last 7 days | 80–100 jobs | 3–4 minutes | ~$0.08–0.12 |
| 1 role · no skills · 1 location | Last 24 hours | 20–50 jobs | 1–2 minutes | ~$0.02–0.04 |
💡 Memory setting: Set to 1024 MB in your Apify actor settings. Naukri and Indeed require a full Playwright browser. 512 MB is insufficient and will cause memory pressure warnings and instability.
Scheduling & automation
This Actor is designed to be called by an application or run on a schedule.
Daily senior leadership scan (recommended):
Cron: 0 7 * * * (7am IST daily)timeFrame: "1" (last 24 hours — only fresh listings each day)
Weekly deep scan:
Cron: 0 8 * * 1 (8am IST every Monday)timeFrame: "7" (last 7 days — catch everything from the week)
Connect the output dataset to Google Sheets, a webhook, an ATS, or a downstream Apify Actor using Apify's integrations.
Platform coverage notes
LinkedIn — Best for senior and global roles. Returns clean, structured data quickly via HTTP-only requests. No browser needed, lowest cost per result.
Naukri — Best for Indian market volume. Returns richer structured data (salary bands, experience, work mode, skills) via API interception. Applies title-match filtering to ensure role relevance — Naukri's keyword search is broad and can return description-matched results without filtering.
Indeed India — Supplementary coverage. Useful for roles that appear on Indeed but not LinkedIn or Naukri. Requires residential proxies and browser rendering — slowest and most resource-intensive of the three.
Limitations
- Returns up to 100 unique jobs per run across all three platforms combined.
- A 4-minute hard stop applies across all platforms combined. If the search hits the time limit, the actor returns whatever has been collected to that point — no partial-run errors.
- Naukri salary data is null for most listings — Naukri allows companies to hide salary, and most do. This is a Naukri platform policy.
- Indeed results do not include job descriptions — only data visible on the search results card.
- LinkedIn results require no authentication and use the guest API — results may differ slightly from what a logged-in user sees.
- For very niche searches (rare role + specific skill + small city), fewer than 100 results is expected and correct — this reflects actual job market supply, not a scraper limitation.
FAQ
Why sequential and not parallel? Naukri and Indeed both require a Playwright browser (Chromium). Running two browsers simultaneously doubles peak memory usage (~2 GB). Sequential execution keeps memory at ~1 GB and avoids instability on Apify's standard infrastructure.
Why does Naukri return fewer results than expected?
Naukri's search is broad — it matches keywords anywhere in a job posting, including org-chart descriptions ("reports to Vice President"). The actor applies a title-match filter post-fetch to ensure only genuinely relevant roles are returned. This reduces noise at the cost of some volume. For higher volume, use a wider timeFrame ("7" or "15").
Can I search remote jobs?
Yes — add "Remote" as one of your locations for LinkedIn and Indeed. Naukri remote jobs are filtered by work mode in the platform's own API, not by location keyword.
Why is Indeed returning fewer results than LinkedIn? Indeed India has Cloudflare protection. The actor uses residential proxies and browser fingerprinting to bypass it, but Cloudflare may still throttle requests intermittently. Indeed is included for supplementary coverage, not as the primary source.
Is this Actor maintained? Yes — actively maintained. If any platform changes its HTML structure or API format, an update ships promptly.
Can I use this to feed an AI pipeline? Yes — the structured output (especially Naukri's salary, experience, skills, and work mode fields) is well-suited for LLM-based matching, summarisation, and classification workflows.
Input schema reference
{"roles": ["Vice President", "Director Engineering"],"skills": ["AI", "GCC"],"locations": ["Bangalore", "Pune", "Hyderabad"],"timeFrame": "7"}
timeFrame values:
| Value | Meaning |
|---|---|
"" | Any time |
1 | Last 24 hours |
7 | Last 7 days |
15 | Last 15 days |