Naukri Jobs Scraper | 21 Fields, 7 Filters, New-Job Monitor
Pricing
from $0.84 / 1,000 jobs
Naukri Jobs Scraper | 21 Fields, 7 Filters, New-Job Monitor
Scrape Naukri.com jobs at scale: title, company, salary (normalised to lakhs), experience, skills, location, remote or hybrid work mode. India residential proxy, no login, pay per job. Works in Claude, ChatGPT & any MCP AI agent.
Pricing
from $0.84 / 1,000 jobs
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
179
Total users
50
Monthly active users
2 days ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with nearly 139,000 runs across our actors.
Why choose this actor?
- Salaries you can sort, not strings you have to clean. Naukri's "15-25 Lacs P.A." becomes
salary_min_lakhs: 15andsalary_max_lakhs: 25. A recorded run returned 100 Bangalore data analyst jobs in 48 seconds, every one of them in Bengaluru, with the rawsalary_textkept next to the numbers. No login and no Naukri account. - Pay per job delivered, never for the same job twice. Jobs are deduplicated by Naukri's job ID across all your keywords before anything is charged. Jobs outside the city or experience range you asked for, empty searches, blocked pages and the run's summary rows are never billed.
- Daily monitoring that only bills new postings. Turn on
monitorModeand each scheduled run delivers and charges only jobs your account has not received before (up to 50,000 remembered job IDs). A week of daily checks costs you the new jobs, not the whole feed seven times.
Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Shine.com Jobs Scraper, Internshala Scraper, Instahyre Jobs Scraper.
Try it in one minute
Paste this into the JSON tab of the input page. It returns 10 Python developer jobs in well under a minute (most of that is the one-time session warm-up described below).
{"searchKeywords": ["python developer"],"location": "Bangalore","maxJobs": 10}
The only input you must give is searchKeywords: one or more search phrases, typed the way you would type them into Naukri's search box (a role, a skill, a company name or a mix such as react developer or sap fico). Each phrase is searched on its own and the results are merged. Everything else is an optional filter: a city in location, an experience level, a salary floor in lakhs, a job type, a work mode and a posting window.
Apify's free plan includes $5 of credit every month, which covers about 3,500 jobs at this actor's price (Free tier $1.40 per 1,000 jobs, plus the $0.005 start fee on each run).
Copy to your AI assistant
themineworks/naukri-jobs on Apify. Searches Naukri.com by keyword and returns one row per job with title, company, AmbitionBox rating, experience range, salary parsed into lakhs, location, work mode, skills, description and apply URL. Call ApifyClient("TOKEN").actor("themineworks/naukri-jobs").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: searchKeywords (string[]). Optional: location (city or region such as Bangalore, Bengaluru or Delhi NCR, blank = all India; jobs elsewhere are dropped and not charged), experienceMinYears (0 to 30), experienceMaxYears (0 to 30; jobs whose minimum is above it are dropped), salaryMinLakhs (3, 6, 10, 15, 25, 50, 75 or 100), jobType (permanent/contract/freelance/temporary/internship), workMode (work-from-office/remote/hybrid), postedWithinDays ("1"/"3"/"7"/"15"/"30"), maxJobs (default 5, max 1000), includeJobDescription (default false, else 500 characters), monitorMode (default false). Rows with _type "summary" or "info" are run reports, not jobs, and are never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~naukri-jobs/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations
Key features
- 21 fields per job, including numeric
salary_min_lakhsandsalary_max_lakhs, numeric experience bounds, a taggedskillsarray,posted_days_agoand the AmbitionBoxcompany_ratingwhen Naukri shows one. - Naukri's own filters, sent to Naukri's own search API: location, experience, salary floor (Naukri's bands of 3, 6, 10, 15, 25, 50, 75 and 100 lakhs), job type, work mode (office, remote, hybrid) and a posting window of 1, 3, 7, 15 or 30 days.
- Every row is in the place and experience range you asked for. Naukri still mixes a few remote or other city jobs into a location search, and it has no maximum experience filter, so the actor checks each job and drops the ones outside your request before anything is charged. Bengaluru and Bangalore count as the same city.
- Many keywords in one run. Each keyword is paged 20 jobs at a time, up to 40 pages (800 jobs) per keyword, with one overall cap of 1,000 jobs per run. A job that matches two keywords is delivered and charged once.
- New-job monitor.
monitorModeremembers the newest 50,000 job IDs your account has received from this actor and skips them on the next run, so scheduled runs pay only for new postings. - No login, no cookies to supply. A short headless browser session opens Naukri once, captures the signed search token the site itself uses, then closes; every page after that is a fast direct request over Apify's datacenter proxy.
- Clean failure handling. If Naukri blocks a session, the actor re-warms on a fresh IP up to two times per page before moving on, stops a keyword after 3 pages with no new jobs, and ends 15 seconds before the run timeout with everything it collected.
How to use it
Basic: one keyword across India
{"searchKeywords": ["data analyst"],"maxJobs": 100}
Several roles at once, merged and deduplicated
{"searchKeywords": ["python developer", "django developer", "backend engineer python"],"location": "Hyderabad","maxJobs": 300}
A job that shows up under two of these keywords appears once in the dataset and is charged once.
Daily new-job alerts for one role
{"searchKeywords": ["product manager"],"location": "Bangalore","postedWithinDays": "1","maxJobs": 200,"monitorMode": true}
Save this as a task and schedule it daily (for example 0 7 * * * in your time zone). The first run sets the baseline; every later run delivers and charges only postings you have not received before. The summary row at the end of each run reports new_this_run and skipped_duplicates.
Salary benchmarking for senior engineers
{"searchKeywords": ["java developer", "java architect"],"experienceMinYears": 8,"salaryMinLakhs": 25,"includeJobDescription": true,"maxJobs": 500}
Group the rows by experience_min_years and take the median of salary_min_lakhs and salary_max_lakhs. Many listings say "Not disclosed"; those rows have no numeric salary fields, so filter them out before you average.
Remote roles only, for a remote jobs board or newsletter
{"searchKeywords": ["react developer", "node js developer", "devops engineer"],"workMode": "remote","postedWithinDays": "3","maxJobs": 300}
In a recorded run with workMode: "remote", every one of the 20 jobs returned was listed by Naukri as Remote.
Tracking one company's hiring
{"searchKeywords": ["swiggy"],"maxJobs": 200,"monitorMode": true}
Naukri's keyword search also matches company names: in a recorded run, swiggy returned 20 jobs, all 20 posted by Swiggy. Filter on company to be safe, and schedule it weekly to watch how fast the company opens roles.
One monitor memory per account. The list of job IDs that monitorMode remembers is shared by every monitor-mode run of this actor in your Apify account, whatever the input. If you watch several searches, put them in one run's searchKeywords rather than in separate monitor tasks, or a job delivered to one task will be skipped in the other.
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
searchKeywords | array of strings | required (form prefill: python developer) | One or more search phrases. Each is searched separately and the results are merged, with duplicates removed. |
location | string | none (form prefill: Bangalore) | City or region, for example Bangalore (or Bengaluru), Mumbai or Delhi NCR. Leave blank for all India. Sent to Naukri as a location search, then checked job by job: a job whose location does not include the place you asked for is dropped and not charged. For a region, its cities count (Delhi NCR includes Noida, Gurugram, Faridabad and Ghaziabad). A remote job with no city counts only when workMode is remote. For a place name the actor does not know, such as a state, Naukri's own filter is used as is. |
experienceMinYears | integer (0 to 30) | none | Sent to Naukri's experience filter: jobs whose experience range includes this many years. With 5, every job returned asked for a range such as 3 to 8 or 5 to 10 years. 0 means fresher. |
experienceMaxYears | integer (0 to 30) | none | Naukri has no maximum experience filter, so the actor applies it: a job whose minimum requirement is above this is dropped and not charged. With 5 alone, a recorded run returned jobs such as 0 to 3, 2 to 5 and 5 to 8 years, and dropped 8 that asked for more than 5. |
salaryMinLakhs | integer (0 to 100) | none | Minimum annual CTC in lakhs. Naukri's bands are 3, 6, 10, 15, 25, 50, 75 and 100. |
jobType | string | none (form prefill: permanent) | permanent, contract, freelance, temporary or internship. |
workMode | string | none | work-from-office, remote or hybrid. |
postedWithinDays | string | none (form prefill: 7) | 1, 3, 7, 15 or 30: only jobs posted in that many days. |
maxJobs | integer (1 to 1,000) | 5 | Most jobs to return across all keywords. Hard cap 1,000 per run. |
includeJobDescription | boolean | false | true returns the full description; false cuts it to 500 characters. |
monitorMode | boolean | false | Deliver and charge only jobs this account has not received from this actor before. See "One monitor memory per account" above. |
proxyConfiguration | object | Apify datacenter group BUYPROXIES94952 | The proxy for the warm-up and the search requests. The default datacenter group works; you do not need residential proxies. |
"Form prefill" values fill the Console form for you but are not defaults: an API call that leaves a field out sends no filter for it.
For runs close to 1,000 jobs, give the run a timeout of 600 seconds in the run options. The default is 300 seconds, and a full 1,000 job run takes about that long (roughly 26 seconds of warm-up, then about 5 seconds per page of 20 jobs). If a run does reach its timeout, it stops 15 seconds early and keeps every job already collected.
What data do you get?
One row per job. Fields Naukri does not publish for a listing are left out of that row rather than filled with zeros.
The job: job_id, title, job_type, work_mode, skills, description, posted_date_text, posted_days_ago, apply_url, source_url.
The employer: company, company_rating (the AmbitionBox rating Naukri shows, as text such as "3.6"), company_logo.
Pay and experience: salary_text (Naukri's own words, such as "15-25 Lacs PA" or "Not disclosed"), salary_min_lakhs, salary_max_lakhs, experience_text, experience_min_years, experience_max_years.
Where and when: location (as Naukri lists it; for hybrid roles the label starts with the word Hybrid, followed by the cities), scraped_at.
work_mode comes from Naukri's location label. job_type is inferred from the listing and falls back to the jobType you asked for; in a 100 job run with no job type filter, only 4 rows carried one, so treat it as a hint.
Each run also ends with a _type: "summary" row (keywords searched, jobs requested, jobs delivered, jobs charged, skipped_outside_location and skipped_experience for jobs dropped by your filters, location_check, and the monitor counters) and a _type: "info" row. Neither is a job and neither is ever charged. Skip rows that have a _type field when you load the data.
Stable fields for automations
These 13 fields were present in every job row we sampled (123 rows across four runs):
| Field | What it holds |
|---|---|
job_id | Naukri's job ID; the key used for deduplication and monitor mode |
title | Job title as posted |
company | Company name as posted |
company_logo | Company logo image URL |
experience_text | Experience range as Naukri shows it, such as "4-8 Yrs" |
salary_text | Salary as Naukri shows it, including "Not disclosed" |
location | Location label, which may include Hybrid or Remote |
posted_date_text | Posting age as shown, such as "3 Days Ago" |
skills | Array of the skill tags on the listing |
description | Description, full or cut to 500 characters |
apply_url | Naukri job page URL |
source_url | Same URL, kept for tools that expect this name |
scraped_at | ISO timestamp when the row was captured |
We will not rename these fields. New fields may be added over time; existing ones keep their names.
Output examples
Real rows from our own runs in September 2026, with descriptions and skill lists trimmed.
A Bengaluru listing with a disclosed salary and an AmbitionBox rating (from the 100 job data analyst run):
{"job_id": "100926013955","title": "Data Analyst","company": "Thyrocare","company_rating": "3.7","company_logo": "https://img.naukimg.com/logo_images/groups/v1/4634985.gif","experience_min_years": 1,"experience_max_years": 3,"experience_text": "1-3 Yrs","salary_text": "7-9 Lacs PA","salary_min_lakhs": 7,"salary_max_lakhs": 9,"location": "Bengaluru","posted_date_text": "1 Day Ago","posted_days_ago": 1,"skills": ["Machine Learning", "SQL", "Python", "Predictive Modeling"],"description": "1 to 3 years of work experience in the relevant field,preferably in a consumer facing company <br><br>Proficient in SQL…","apply_url": "https://www.naukri.com/job-listings-data-analyst-thyrocare-bengaluru-1-to-3-years-100926013955","source_url": "https://www.naukri.com/job-listings-data-analyst-thyrocare-bengaluru-1-to-3-years-100926013955","scraped_at": "2026-09-29T22:47:41.194Z"}
A remote role from a filtered run (python developer, experienceMinYears: 5, workMode: "remote", postedWithinDays: "7"), with work_mode filled in:
{"job_id": "290926020347","title": ".NET Application Developer","company": "Coforge","company_rating": "3.3","company_logo": "https://img.naukimg.com/logo_images/groups/v1/233334.gif","experience_min_years": 5,"experience_max_years": 9,"experience_text": "5-9 Yrs","salary_text": "15-25 Lacs PA","salary_min_lakhs": 15,"salary_max_lakhs": 25,"location": "Remote","work_mode": "remote","posted_date_text": "1 Day Ago","posted_days_ago": 1,"skills": ["C#", ".Net", "Angular", "SQL"],"description": "Shift: Night Shift<br><br>The ideal candidate should have strong expertise in Microsoft technologies,Angular framework,and SQL…","apply_url": "https://www.naukri.com/job-listings-net-application-developer-coforge-pune-5-to-9-years-290926020347","source_url": "https://www.naukri.com/job-listings-net-application-developer-coforge-pune-5-to-9-years-290926020347","scraped_at": "2026-09-29T22:49:18.575Z"}
A company search (searchKeywords: ["swiggy"]), where every row came from the company itself:
{"job_id": "250926001215","title": "Business Analyst","company": "Swiggy","company_rating": "3.7","company_logo": "https://img.naukimg.com/logo_images/groups/v1/1285014.gif","experience_min_years": 2,"experience_max_years": 5,"experience_text": "2-5 Yrs","salary_text": "3.5-5 Lacs PA","salary_min_lakhs": 3.5,"salary_max_lakhs": 5,"location": "Bengaluru","posted_date_text": "4 Days Ago","posted_days_ago": 4,"skills": ["Business Analysis", "Excel", "SQL", "Analysis"],"description": "<p> </p><p>* Strong SQL proficiency Ability to independently query backend databases, write joins, aggregations, CTEs…","apply_url": "https://www.naukri.com/job-listings-business-analyst-swiggy-bengaluru-2-to-5-years-250926001215","source_url": "https://www.naukri.com/job-listings-business-analyst-swiggy-bengaluru-2-to-5-years-250926001215","scraped_at": "2026-09-29T22:51:55.138Z"}
The summary row that ends a run (never charged; here from the 100 job data analyst run in Bangalore on 30 September, where Naukri mixed in 7 remote jobs that were dropped):
{"_type": "summary","keywords_searched": ["data analyst"],"location": "Bangalore","jobs_requested": 100,"jobs_scraped": 100,"jobs_failed": 0,"charged_for": 100,"skipped_outside_location": 7,"skipped_experience": 0,"location_check": "applied","monitor": false,"scraped_at": "2026-09-30T07:55:57.003Z"}
location_check is applied when the actor checked each job's place, naukri_only when it left a place name it does not know to Naukri's own filter, and none when no location was given.
With monitorMode: true, the summary also carries previously_seen, new_this_run and skipped_duplicates.
Pricing
Pay per event: you pay for each job delivered to your dataset, plus a small start fee per run.
| Event | Free | Bronze | Silver | Gold and above |
|---|---|---|---|---|
job-scraped, per job | $0.0014 | $0.00118 | $0.001 | $0.00084 |
job-scraped, per 1,000 jobs | $1.40 | $1.18 | $1.00 | $0.84 |
apify-actor-start, per run | $0.005 per GB of run memory, minimum one event | same | same | same |
The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 1 GB by default, so a default run pays $0.005. If you raise the memory to 2 GB, the start fee becomes $0.01.
Worked examples on the Gold tier: 100 jobs cost $0.084 plus $0.005. 500 jobs cost $0.42 plus $0.005. A full 1,000 job run costs $0.84 plus $0.005. On the Free tier the same 1,000 jobs cost $1.40 plus $0.005.
Never charged: a job that appears under more than one keyword (charged once), jobs skipped by monitor mode because you already received them, jobs outside the location or experience range you asked for, the summary, info and error rows, and blocked pages or retries. A run that finds no jobs pays only the start fee.
There is no scheduled price change for this actor. The Pricing tab on this page always shows the rate for your own plan; if it and this table ever differ, the Pricing tab is right.
FAQ
What is Naukri.com? Naukri.com is India's largest general job board, with listings from multinationals, Indian IT services firms, startups and staffing agencies across every city. This actor reads its public job search, the same results any visitor sees without signing in.
How many jobs can I get? Up to 1,000 per run, across all your keywords. Each keyword is paged up to 40 pages of 20 (800 jobs) and stops early when Naukri runs out of results, 3 pages in a row add nothing new, or 5 pages in a row have no job in your location and experience range. For more than 1,000, split the work into several runs by keyword, city or posting window.
How fresh is the data?
Every run queries Naukri live; nothing is cached between runs except the short-lived search session. posted_days_ago tells you how old each listing is, and postedWithinDays limits a run to recent postings.
Do I need a Naukri account, cookies or an API key? No. You need only an Apify account. The actor opens Naukri in a headless browser once per run to get the same signed search token the site gives any visitor, then closes the browser.
Which proxy does it use?
Apify's datacenter proxy (the BUYPROXIES94952 group) by default, which is included in your Apify plan. Residential proxies are not needed. If Naukri blocks a session, the actor re-warms on a fresh IP up to two times per page.
How strict is the location filter?
Every job you are charged for lists the place you asked for. The actor sends the location to Naukri the way Naukri's own results page does, then checks each job's location label and drops, without charging, any job outside it. In a recorded Bangalore run on 30 September, all 100 delivered jobs listed Bengaluru (some alongside other cities, such as "Hybrid - Hyderabad, Bengaluru"), and 7 remote jobs Naukri mixed in were dropped. Bangalore and Bengaluru give the same results.
Why do some jobs have no salary numbers?
Most Naukri listings say "Not disclosed", and some say "Unpaid". Those rows keep salary_text but have no salary_min_lakhs or salary_max_lakhs. The numbers come from Naukri's own salary figures for each listing (rupees a year, converted to lakhs), or from the salary text when those are missing, reading each figure in its own unit: "70,000-90,000 PA" gives 0.7 and 0.9, and "50,000-2 Lacs PA" (Rs 50,000 to 2 lakh) gives 0.5 and 2.
What happens with expired or removed listings?
The actor returns what Naukri's search returns at that moment; a listing that has been taken down no longer appears and is not charged. The apply_url of an older row may stop working once the employer closes the job.
Can I run it on a schedule and get only new jobs?
Yes. Save your input as a task, add a schedule in Apify Console (Schedules, then Create new, then pick a time or a cron expression such as 0 7 * * *), and set monitorMode: true. Each run then delivers and charges only jobs your account has not received from this actor before. The monitor memory is shared by all monitor-mode runs of this actor in your account.
How do I export the data?
From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Remove rows that have a _type field if you want jobs only.
Can I use it from Claude, ChatGPT or another AI assistant?
- Connector URL:
https://mcp.apify.com/?tools=themineworks/naukri-jobs. - Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http naukri-jobs "https://mcp.apify.com/?tools=themineworks/naukri-jobs".
It is also one of the tools inside our India Jobs MCP server (14 India job tools) and our Recruiting & Jobs MCP server (10 recruiting tools).
Is it legal to scrape Naukri? The actor collects only public job listings that anyone can see without logging in, and it does not get past any login wall or paywall. Listings are about employers and roles, not private individuals. You are responsible for how you use the data, including Naukri's terms and data protection laws such as India's DPDP Act, GDPR and CCPA. This is general information, not legal advice.
Integrations
- Google Sheets: export a run straight to a sheet, or use Apify's Google Sheets integration to append new jobs after each scheduled run.
- Make, Zapier and n8n: use the Apify app or node to start a run and pass the new jobs to Slack, email, a CRM or an ATS.
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. See the "Copy to your AI assistant" block above for the exact call.
- MCP clients: Claude Desktop, Claude Code, Cursor, ChatGPT and other MCP clients can call the actor through
https://mcp.apify.com.
More from The Mine Works
Jobs and hiring
- Foundit Monster India Jobs
- Hirist Jobs Scraper
- India Jobs MCP
- Shine.com Jobs Scraper
- Internshala Scraper
- Instahyre Jobs Scraper
- Indeed Jobs Scraper
- CutShort Jobs Scraper
- Apna Jobs Scraper
- LinkedIn Jobs Scraper
- Recruiting & Jobs MCP
- Career Site Jobs Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
Real estate
Science, health and government data
E-commerce and marketplaces
Company and business data
Food and local services
Developer and AI tools
More tools
Support
Found a bug or need a field we do not return yet? Open an issue on the Issues tab of this page and we will reply there. To ask for a new job board or data source, email dmineworks@gmail.com. A guide and FAQ for this actor also live at themineworks.com.
Naukri Jobs Scraper turns Naukri.com searches into clean job rows with salaries in lakhs, skills and work mode, billed per job and only once per job.

