Naukri Job Scraper (India) - Skills, Salary & Full Description
Pricing
$0.20 / 1,000 job adverts
Naukri Job Scraper (India) - Skills, Salary & Full Description
Pricing
$0.20 / 1,000 job adverts
Rating
0.0
(0)
Developer
Lantern Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Search Naukri.com by keyword, city and years of experience, and get the public job adverts back as clean rows - including the full advert description at no extra charge.
What you get
One row per job advert, with every field Naukri shows on its own search results page:
| Field | What it is |
|---|---|
jobId | Naukri's own advert id - stable, and what rows are deduplicated on |
title | Job title as posted |
companyName, companyId | The hiring company and its Naukri id |
experienceText | The experience line Naukri prints, e.g. 2-5 Yrs |
minExperienceYears, maxExperienceYears | The same range as numbers |
salaryText | The salary line as shown, e.g. 3-5 Lacs PA or Not disclosed |
salaryMin, salaryMax, salaryCurrency, salaryDisclosed | The figures when the advertiser published them, null when hidden |
locations[] | Every city on the advert, as a list |
skills[] | The full skill/tag list, as a list |
postedAt | When Naukri says it was posted (ISO 8601 UTC; publishedAt is the same instant) |
postedAtDisplay | The relative phrase on the card, e.g. 1 Day Ago |
snippet | A short plain-text teaser from the advert body |
description, descriptionText | The complete advert body, HTML and plain text (when includeDescription is on) |
url | The public job page |
companyRating, companyReviewsCount, vacancies | Extras Naukri prints on the card |
collectedAt | When this run read the advert, kept separate from postedAt |
Not collected: recruiter names, private phone numbers and e-mail addresses. Only what is publicly visible on Naukri's own search page is read, and no login or account is used.
Price
Pay per job row. Status rows and empty results are free - you are charged only for job adverts you actually receive, and a job that matches several of your keywords is charged once. Turning on the full description costs nothing extra, because Naukri sends it with the search results.
Input
{"keywords": ["python developer", "data analyst"],"location": "Bengaluru","experienceYears": 3,"maxJobs": 100,"includeDescription": false}
| Input | Default | Notes |
|---|---|---|
keywords | required | One keyword per line; each is searched separately |
location | all of India | A city as Naukri names it: Bengaluru, Mumbai, Delhi / NCR, Pune |
experienceYears | any | Whole years, 0-30; keeps adverts whose range contains it |
maxJobs | 100 | Rows per keyword. Naukri serves 20 per page, so this rounds up to whole pages |
includeDescription | false | Adds the full advert body. No extra requests, just bigger rows |
maxUpstreamRequests | derived | Hard ceiling on requests, so a run is never unbounded |
proxyConfiguration | Apify residential, India | Naukri refuses datacenter IPs - leave this as it is |
Output
A job row (shortened, includeDescription off):
{"recordType": "job","jobId": "240826031542","title": "Python developer","companyName": "Infosys","companyId": "410527","experienceText": "2-5 Yrs","minExperienceYears": 2,"maxExperienceYears": 5,"salaryText": "Not disclosed","salaryMin": null,"salaryMax": null,"salaryCurrency": "INR","salaryDisclosed": false,"locations": ["Hyderabad", "Pune", "Bengaluru"],"skills": ["Django", "Python", "Flask", "Rest", "Pandas"],"postedAt": "2026-10-23T05:20:17.860Z","publishedAt": "2026-10-23T05:20:17.860Z","postedAtDisplay": "1 Day Ago","snippet": "Roles & Responsibilities Design, develop, and maintain Python-based applications…","url": "https://www.naukri.com/job-listings-python-developer-infosys-240826031542","vacancies": 10,"keyword": "python developer","searchLocation": "Bengaluru","rank": 1,"partial": false,"partialReason": null,"collectedAt": "2026-10-25T04:12:09.113Z"}
Besides job rows the dataset carries two kinds of row that are never charged:
- one
keyword_statusrow per keyword, withjobsReturned,jobsAvailable,duplicatesSkipped,partial,partialReasonand a plain-EnglishstatusText; - one final
RUN_SUMMARYrow (also saved to the key-value store underRUN_SUMMARY) with the totals for the whole run.
An empty result is never confused with a failure
This is the point of the status rows. If Naukri genuinely has no job for a keyword, its status row says so with partial: false. If a keyword was cut short - the bot check refused us, a limit was reached, Naukri's own search service faulted - the row has partial: true and a partialReason (blocked, upstream_request_cap, charge_limit_reached, upstream_error, warmup_failed, not_collected). A blocked or truncated keyword is never reported as zero jobs.
Limits worth knowing
- 20 jobs per page. Naukri ignores a larger page size, so
maxJobsrounds up to whole pages. - 1000 jobs per keyword is the deepest this Actor pages one search. A keyword that reaches it sets
resultDepthLimitReachedandjobsAvailabletells you how many Naukri claimed; narrow the keyword, city or experience to go further. - Naukri is behind Akamai Bot Manager. The run opens a real browser once to pass the bot check, then sends ordinary requests. That one warm-up takes about 10 seconds; after it, paging is fast.
- An Indian residential exit is required. Datacenter IPs are refused with HTTP 406. The default proxy setting already handles this.
- Naukri's search is fuzzy. A very narrow keyword can be broadened by Naukri itself, so some rows may be looser matches than the keyword implies.
keywordon every row records what was searched. - The default 1 GB of memory is what this Actor is measured at. The browser warm-up fits in it; raising it only makes a run cost more.
salaryTextcarries Naukri's own label, so an advert with no published salary readsNot disclosed- Naukri's search card simply prints nothing there.salaryDisclosed: falsewithsalaryMin/salaryMaxnull is the machine-readable form of the same fact.postedAtis the exact instant Naukri reports, andpostedAtDisplayis Naukri's own relative label for it. Naukri caps that label at30+ Days Ago, so a long-running or refreshed advert can carry apostedAtmuch older than the label suggests - trustpostedAt.