Naukri Scraper - Jobs, Salaries, Companies India
Pricing
Pay per event
Naukri Scraper - Jobs, Salaries, Companies India
Scrape Naukri.com jobs in India: title, company, salary, skills, location, role, industry. 30+ fields per job. Filter by keyword, location, experience, work mode.
Pricing
Pay per event
Rating
0.0
(0)
Developer
deusex machine
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Naukri Scraper API — Jobs, Salaries, Companies & Skills Data from India
A high-performance Naukri scraper that extracts complete job listings from Naukri.com, India's largest job portal with 7M+ active listings across IT services, financial services, manufacturing, BPO and healthcare. Pull 30+ structured fields per job — title, company, salary (parsed to INR and USD), required experience, skills, education, role category, industry, department, and full description — without writing a single line of HTML parsing logic.
Designed for recruiters building talent pipelines, market analysts tracking India's labor demand on portals like Glassdoor, LinkedIn Jobs, and Indeed, founders mapping competitor hiring patterns, salary benchmarking firms enriching their compensation datasets, and ML/AI startups training resume-to-job matching models. Compatible with schema.org JobPosting downstream pipelines and exports cleanly to CSV, JSON, Excel or Google Sheets.
What this Naukri scraper does
This actor automates browsing naukri.com like a real user. It opens the public job search pages, paginates through results, parses every job tuple into a clean record, and (optionally) opens each job detail page to extract premium fields that aren't visible in the search results — like the full job description, applicant count, salary breakdown by tier, employment type, education requirements, and addresses.
Output is structured JSON, ready for direct ingestion into any database, BI tool or LLM pipeline. Salary strings like "6-15 Lacs PA" are parsed into salaryMin: 600000, salaryMax: 1500000, salaryCurrency: "INR", plus a salaryUsdEstimate: "$7,229 - $18,072" field that nobody else in the market provides.
The scraper is built on a stealth browser stack tuned specifically for India's anti-bot protections. No reCAPTCHA solving services required, no residential proxies — runs on Apify's datacenter network out of the box.
Data fields the Naukri scraper extracts
Every job record contains these fields when available:
Identity & links
jobId— Unique 12-18 digit Naukri job identifierjobUrl— Direct link to the full job listingtitle— Position title as displayedcompanyName— Hiring companycompanyUrl— Naukri career page of the hiring companycompanyLogoUrl— Company logo image URLcompanyRating— AmbitionBox rating out of 5 (e.g.3.5)companyReviewsCount— Total employee reviews (e.g.48992)
Location & arrangement
locationText— Raw location string ("Hybrid - Kolkata, Hyderabad, Bengaluru")locations— Parsed list of cities (["Kolkata", "Hyderabad", "Bengaluru"])workMode—"hybrid","remote","office"ornulladdress— Detailed address from job detail page (when fetchDetails=true)
Experience & seniority
experienceText— Raw display string ("5-10 Yrs")experienceMin— Minimum years required (integer)experienceMax— Maximum years required (integer)seniority— Derived label:"fresher","junior","mid","senior","lead"
Compensation
salaryText— Raw salary display ("6-15 Lacs PA")salaryMin— Minimum salary in INR (integer)salaryMax— Maximum salary in INR (integer)salaryCurrency— Currency code (typically"INR")salaryUsdEstimate— Estimated USD range for international users
Skills & description
skills— Clean array of skill chips (["Python", "Django", "AWS"])jobDescriptionPreview— First 600 chars shown in search resultsjobDescription— Full description text (only with fetchDetails=true)jobDescriptionHtml— Original HTML markup of description (truncated 30K chars)
Role taxonomy (fetchDetails=true)
role— Specific role like"Back End Developer"or"Full Stack Developer"roleCategory— Broader category like"Software Development"department— Functional area like"Engineering - Software & QA"industry— Industry type like"IT Services & Consulting"employmentType—"Full Time, Permanent","Contract", etc.
Education requirements (fetchDetails=true)
educationUG— Undergraduate degree expected (e.g. "B.Tech in Any Specialization")educationPG— Postgraduate degree expected (e.g. "M.Tech in Any Specialization")
Competition metrics (fetchDetails=true)
applicants— Number of applicants so far (signal for competitiveness)vacancy— Number of open positions for this listingapplyByDate— Application deadline when published
Timestamps
postedRelative— Naukri's relative date ("4 days ago", "1 week ago")postedDate— Estimated ISO 8601 timestamp derived from the relative date
Use cases for this Naukri data API
- Recruitment & talent acquisition — Build a daily-updated stream of jobs matching your target keywords across multiple cities. Use
companyReviewsCountandcompanyRatingto filter only well-rated employers. - Compensation benchmarking — Aggregate
salaryMin/salaryMaxbyrole+experienceMinto produce reliable Indian market salary tables. ThesalaryUsdEstimatefield makes it directly usable in global comp reports. - Hiring intelligence — Track which companies are scaling specific functions (e.g. AI/ML engineers, growth marketers). The
industry+roleCategorytaxonomy lets you slice the dataset cleanly. - Resume-to-job ML training data — Pair the
skillsarray, fulljobDescription, andexperienceMin/Maxfields to train recommendation models. Tens of thousands of jobs per day. - Skill demand tracking — Run a weekly cron, count the top occurring
skillsentries byroleCategory. Identify trending technologies before they show up in industry reports. - Lead generation — Cold outreach to hiring managers at companies actively recruiting in your niche. Combine with company website lookup tools for full B2B enrichment.
How to use this Naukri scraper
Choose between keywords mode (easiest — provide one or many search keywords and the scraper builds the URLs) or URLs mode (advanced — paste pre-built Naukri search URLs with all the filter parameters already encoded).
Mode 1 — Search by keywords
{"mode": "keywords","keywords": ["python developer", "data engineer mumbai"],"maxJobs": 100,"fetchDetails": false}
Mode 2 — Search by URLs
{"mode": "urls","searchUrls": [{ "url": "https://www.naukri.com/python-developer-jobs-in-bangalore?experience=3" }],"maxJobs": 50,"fetchDetails": true,"workMode": "remote"}
Mode 3 — Filtered, detailed mode for premium analysis
{"mode": "keywords","keywords": ["data scientist"],"maxJobs": 200,"fetchDetails": true,"workMode": "hybrid","experienceMin": 3,"experienceMax": 7,"cities": ["Bengaluru", "Pune", "Hyderabad"]}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | enum | "keywords" | "keywords" or "urls" |
keywords | array of strings | ["python developer"] | Search keywords; slugs are auto-built |
searchUrls | array | [] | Pre-built Naukri search URLs (use when mode=urls) |
maxJobs | integer | 50 | Cap per keyword/URL (1–5000) |
fetchDetails | boolean | false | Open each job detail page for premium fields |
workMode | enum | "any" | "any", "remote", "hybrid", "office" |
experienceMin | integer | 0 | Filter jobs requiring at least N years |
experienceMax | integer | 40 | Filter jobs requiring at most N years |
cities | array | [] | Whitelist cities (post-extract filter) |
Output example (single record, JSON)
{"jobId": "230326014707","title": "Python Developer","jobUrl": "https://www.naukri.com/job-listings-python-developer-movate-technologies-bengaluru-5-to-8-years-230326014707","companyName": "Movate Technologies","companyUrl": "https://www.naukri.com/movate-technologies-jobs-careers-2034621","companyLogoUrl": "https://img.naukimg.com/logo_images/groups/v1/2034621.gif","companyRating": 3.1,"companyReviewsCount": 2646,"locationText": "Bengaluru","locations": ["Bengaluru"],"workMode": null,"experienceText": "5-8 Yrs","experienceMin": 5,"experienceMax": 8,"seniority": "mid","salaryText": "16-20 Lacs PA","salaryMin": 1600000,"salaryMax": 2000000,"salaryCurrency": "INR","salaryUsdEstimate": "$19,277 - $24,096","skills": ["Django", "React.Js", "Python", "Python Development", "SQL"],"postedRelative": "1 week ago","postedDate": "2026-05-16T05:42:06.471457+00:00","role": "Full Stack Developer","roleCategory": "Software Development","department": "Engineering - Software & QA","industry": "IT Services & Consulting","employmentType": "Full Time, Permanent","educationUG": "Any Graduate","applicants": 1,"jobDescription": "We are looking for an experienced Python developer..."}
How to call this Naukri scraper from your code
From the Apify API (curl)
curl -X POST "https://api.apify.com/v2/acts/makework36~naukri-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "keywords","keywords": ["data engineer"],"maxJobs": 100,"fetchDetails": false}'
From Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("makework36/naukri-scraper").call(run_input={"mode": "keywords","keywords": ["python developer", "react developer"],"maxJobs": 200,"fetchDetails": True,"workMode": "remote",})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["title"], job["companyName"], job["salaryUsdEstimate"])
From Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('makework36/naukri-scraper').call({mode: 'keywords',keywords: ['devops engineer mumbai'],maxJobs: 100,fetchDetails: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} jobs`);
Export to CSV
curl "https://api.apify.com/v2/acts/makework36~naukri-scraper/runs/last/dataset/items?format=csv&token=$APIFY_TOKEN" \-o naukri_jobs.csv
Performance & cost
The scraper runs on a stealth browser at 4 GB RAM. Typical performance:
| Mode | Time per page (20 jobs) | Time per detail | 100 jobs ETA |
|---|---|---|---|
| Search only (fast) | ~7 s | — | ~35 s |
With fetchDetails=true | ~7 s + 25 s/job | ~25 s | ~45 min |
Each search page returns 20 jobs. Pagination is automatic up to maxJobs. The detail-page fetch is slower because it loads the full job description, but it adds 9 premium fields that are not available in the search results.
Naukri scraper comparison
| Feature | This actor | Browser-only (residential proxy) | Headless w/ proxy + captcha solver |
|---|---|---|---|
| Output fields | 30+ structured | 20–25 | 25 |
| Salary parsed to INR + USD | ✅ | ❌ | ❌ |
| Seniority field (fresher/junior/mid/senior/lead) | ✅ | ❌ | ❌ |
| Skills cleaned of UI noise | ✅ | ❌ | ❌ |
| Residential proxy required | ❌ | ✅ | ✅ |
| Captcha solver required | ❌ | ❌ | ✅ |
| Pricing model | PAY_PER_EVENT tiered | flat or rental | flat |
Step-by-step tutorial — your first run in 3 minutes
- Click Try for free at the top of this page.
- In the input form, leave
modeaskeywords. - Replace the default keyword with one matching your niche (e.g.
"machine learning engineer"). - Set
maxJobsto20for a quick first run. - Leave
fetchDetailsoff for the first test — saves time and compute. - Click Start. The run finishes in 30–60 seconds.
- Open the dataset tab. You'll see a table view with company logos, titles, locations and salaries.
- Click Export → choose CSV or JSON. Open in Excel or your tool of choice.
- Once you're happy with the output, increase
maxJobs, enablefetchDetailsfor richer data, or schedule a daily run.
Advanced usage patterns
Pattern A — Daily talent radar
Schedule the actor with keywords: ["your role"], maxJobs: 50, fetchDetails: false. Each morning you get a CSV in your inbox via Apify's email integration showing what's new in your niche.
Pattern B — Multi-city compensation report
Run with keywords: ["python developer"], cities: ["Bengaluru","Pune","Hyderabad","Mumbai","Delhi"], fetchDetails: true. Aggregate salaryMin/salaryMax by city to produce a salary heatmap.
Pattern C — Trending skills tracker
Weekly cron with keywords covering 5 broad role categories. Group jobs by roleCategory, count skill occurrences in the skills array. Top-trending skills emerge over time.
Pattern D — Recruiter outreach pipeline
Use fetchDetails: true to capture full description and applicants count. Filter jobs where applicants < 10 (early-stage listings — your candidates have less competition). Export and prioritize for outreach.
Pattern E — B2B sales prospecting
Use the dataset to identify companies hiring specific roles (e.g. all companies hiring a "Head of Growth" in India). Combine with company website finders to build cold outreach lists.
Troubleshooting
My run takes too long with fetchDetails: true.
The detail fetch adds ~25 s per job because the actor opens each listing's full page. For 1000 jobs with details, expect 7–8 hours. To go faster, run search-only mode first, then re-run only on jobs with missing salary using mode: urls.
Some salaryMin/salaryMax come back null.
Naukri lists "Not Disclosed" for ~80% of jobs in the search results. The fetchDetails: true mode raises that recovery rate dramatically because more listings expose salary on the detail page.
I see workMode: null on most jobs.
That's expected — Naukri only marks Hybrid - or Remote explicitly. Office-based jobs come through as plain locations and the field stays null. You can infer office-mode safely if workMode is null && locations is not empty.
The actor returned 0 jobs for my keyword.
Naukri requires the keyword in slug form. Try a more common phrasing (e.g. "data scientist" not "data sciences specialist"). Or use mode urls with a search URL pre-built on the website.
My free credit ran out mid-run.
Bump your account's free tier limit in the Apify console, or set a tighter maxJobs value. Each search page (20 jobs) costs much less than a single detail fetch.
I want only specific industries (e.g. only fintech jobs).
Pre-filter via the search URL by appending Naukri's industry filter (e.g. &industry=BankingFinancialServicesInsurance) and pass that URL via searchUrls.
Pricing
This actor uses PAY_PER_EVENT pricing with tiered volume discounts. You pay only for what you extract; no monthly subscriptions, no idle costs.
| Tier | Standard job (search only) | Detailed job (with fetchDetails) |
|---|---|---|
| FREE | $3.50 / 1K | $9.50 / 1K |
| BRONZE | $2.50 / 1K | $7.00 / 1K |
| SILVER | $1.80 / 1K | $5.00 / 1K |
| GOLD | $1.20 / 1K | $3.50 / 1K |
| PLATINUM | $0.90 / 1K | $2.80 / 1K |
| DIAMOND | $0.65 / 1K | $2.50 / 1K |
Plus a one-time $0.001 per actor run for initialization. A typical run of 200 standard jobs costs $0.70 (FREE tier) or as little as $0.13 (DIAMOND).
FAQ
Does this Naukri scraper work for international users?
Yes. The salaryUsdEstimate field provides converted ranges in USD so compensation comparisons across markets work without manual conversion. The actor runs from Apify's datacenter so you don't need any India-located infrastructure.
Is scraping Naukri.com legal? This actor accesses publicly available pages — no login, no bypassing paywalls, no scraping of user accounts. Always check the target site's terms of service before deploying at scale and consult legal counsel for your jurisdiction.
How fresh is the data? The scraper fetches in real time when you run it. Job listings on Naukri update continuously throughout the day. Schedule the actor as frequently as your use case demands.
Can I scrape Naukri without writing code? Yes. Use the input form on this page, click Start, then download the results as CSV or Excel. No Python or Node required.
Why don't I see educationPG for every job?
Naukri only lists postgraduate requirements when relevant. Roles that don't require a PG show null for educationPG. The educationUG field is more consistently populated.
Does the actor handle pagination automatically?
Yes. Set maxJobs to your desired total and the scraper paginates internally until it reaches the cap or runs out of results, whichever comes first.
Can I scrape jobs from a specific company?
Yes — use mode: urls and pass the company's Naukri career page URL (e.g. https://www.naukri.com/cognizant-jobs-careers-2114). The scraper treats it like any search page.
What if Naukri changes its HTML structure? The scraper uses defensive selectors and DOM extraction. When Naukri pushes a layout change, fixes typically land within 24–48 hours. Use the Issues tab to report problems.
Is there a rate limit? The actor inserts a ~0.5 s delay between pages and 1–2 s between detail fetches to stay polite. For large runs (>1000 jobs), consider splitting across multiple Apify Tasks scheduled minutes apart.
Does this support Naukri's company review/AmbitionBox data?
The scraper extracts companyRating and companyReviewsCount directly from the search results. A separate dedicated AmbitionBox scraper is on the roadmap.
Changelog
- 0.1 (2026-05) — Initial release. Search mode + detail mode. 30+ fields. Tiered pricing.
Related scrapers from the same author
makework36/trustpilot-reviews-scraper— Trustpilot business reviewsmakework36/google-maps-scraper-full— Google Maps places with contact infomakework36/flight-price-scraper— Multi-source flight datamakework36/vrbo-scraper— Vacation rentals
Legal & ethics note
This Naukri scraper is intended for authorized data collection on publicly available information. It does not bypass authentication, paywalls, or extract personally identifiable information beyond what is shown publicly. Users are responsible for complying with Naukri.com's terms of use, India's Information Technology Act, and any data protection regulations applicable in their jurisdiction (e.g. GDPR, CCPA). The author of this actor takes no responsibility for misuse.