How to scrape Naukri job postings for the India market
Last updated
Naukri publishes no public developer API, so the practical route is the Datapika job board scraper on Apify. Set sites to naukri, enter a search term such as "data engineer", and each match lands as one row carrying four fields no other board supplies: skills, experience_range, vacancy_count, and work_from_home_type, plus company_rating and salary min, max, and currency. Naukri is fetched through a real browser, so a run typically takes 1 to 3 minutes. Pricing is $0.005 per job delivered, and the scraper shows 27,458 runs and a 5.0 rating from 3 reviews as of August 29, 2026.
What fields does a Naukri job scraper return per posting?
Every Naukri row uses the same flat schema as the other boards, then adds columns that only exist because Naukri exposes them. The standard part covers id, title, company, location, job_url, a job_url_direct apply link when the posting has one, date_posted, job_type, is_remote, and the full description in Markdown or HTML. Company context comes as company_rating, company_url, company_logo, and company_description where Naukri shows them.
The Naukri-only part is the reason to scrape this board rather than rely on a global aggregator. skills holds the skills extracted from the posting, experience_range holds the years of experience the employer asks for, vacancy_count holds the number of open positions, and work_from_home_type holds Naukri's own hybrid, remote, or office label. Salary arrives as salary_min, salary_max, salary_currency, and salary_interval, with salary_source telling you whether the figures came from structured data or were parsed out of the description text. Each row also records matched_search_term and a scraped_at timestamp, so multi-term sweeps and repeat runs stay traceable.
- skills: the skills extracted from the posting, populated on Naukri and no other board
- experience_range: the years of experience Naukri lists as required, low end to high end
- vacancy_count: open positions on the posting, a direct hiring-intensity signal
- work_from_home_type: Naukri's WFH category, separate from the generic is_remote flag
- company_rating: Naukri's employer score, carried on the same row as company
- salary_min, salary_max, salary_currency, salary_interval, and salary_source when a range is posted
What is different about scraping Naukri compared with Indeed or LinkedIn?
Naukri is one of the boards the scraper reads through a real browser rather than a plain HTTP request, which is why the README puts it at 1 to 3 minutes per run while Indeed and LinkedIn land in 5 to 20 seconds. Rows stream in as each board finishes, so a mixed run shows faster boards first.
Coverage is India only. The countryIndeed input does nothing for Naukri itself; it only matters if you add Indeed or Glassdoor to the same run, in which case set it to india so those boards return Indian inventory too. Naukri postings quote pay in rupees, so check salary_currency on each row before comparing against USD rows from other boards. enforceAnnualSalary converts monthly figures to yearly equivalents.
maxResults caps at 100 per board per search term, searchTerms takes up to 5 queries, and offset paginates past the first page. Skills and experience are output columns, not input filters, so pull a wide set and filter after the run.
- Browser-fetched: expect 1 to 3 minutes, versus 5 to 20 seconds for Indeed and LinkedIn
- India coverage only; countryIndeed applies to Indeed and Glassdoor, not Naukri
- salary_currency separates rupee ranges from USD rows in a multi-board dataset
- enforceAnnualSalary normalizes monthly pay to a yearly figure
- Up to 100 rows per search term per run, 5 terms per run, offset for pagination
- Filter on skills and experience_range after the run; they are not search inputs
How do recruiters and researchers use Naukri skills and experience data?
The skills column turns a job search into a demand signal. Run the same 5 search terms every morning with hoursOld set to 24, count how often each skill appears across the fresh rows, and you have a daily view of which technologies Indian employers are asking for, broken down by city through the location field. experience_range adds a seniority axis without parsing description text: group rows by the minimum years requested and you can see whether a market is hiring juniors or leads.
vacancy_count is the field sales and staffing teams watch. A posting with 15 open positions is a different lead from a single opening, and because company and company_rating sit on the same row, you can rank hiring companies by volume and by how their employees rate them. For salary research, salary_min and salary_max with salary_source set to direct_data give you employer-stated ranges you can trust more than figures parsed from prose. Export as CSV or Excel to pivot these columns, or push rows to Google Sheets or a CRM through Zapier, Make, or n8n.
- Daily skill-demand tracking: hoursOld 24, count skills per run, split by location
- Seniority mix from experience_range without reading descriptions
- vacancy_count ranks companies by how many positions they are filling
- company_rating next to company lets you qualify employers on the same row
- salary_source direct_data marks employer-stated ranges for compensation studies
- CSV, Excel, JSON, XML, or RSS export, plus Zapier, Make, and n8n connectors
How do you call the Naukri scraper from code or an AI agent?
From code, POST your input to https://api.apify.com/v2/acts/openclawai~job-board-scraper/runs with your Apify token and read the default dataset when the run finishes, or use the run-sync-get-dataset-items endpoint to get the rows back in one call. In Python, install apify-client and call client.actor("openclawai/job-board-scraper").call(run_input={"searchTerm": "DevOps engineer", "sites": ["naukri"], "maxResults": 30}), then list items from the dataset it returns. Node uses the same shape through apify-client on npm.
For agents, add https://mcp.apify.com/?tools=fetch-actor-details,openclawai/job-board-scraper to Claude, Cursor, or any MCP client, and the model can ask for Naukri postings and reason over the structured rows without touching HTML. Schedule the run in Apify Console, attach a webhook, and each finished run triggers your downstream processing. Naukri is one of 8 boards the same actor covers, and the setup guide for Claude Desktop and Cursor lives at datapika.com/actors/job-board-scraper.
- REST: POST to acts/openclawai~job-board-scraper/runs, then read the default dataset
- One-call option: run-sync-get-dataset-items returns the rows directly
- Python and Node: apify-client with sites set to ["naukri"]
- MCP: mcp.apify.com tool URL for Claude, ChatGPT, and Cursor
- Schedules and webhooks in Apify Console for a daily India feed
| Field | Populated on Naukri? | Notes |
|---|---|---|
| skills | Yes, Naukri only | Skills extracted from the posting; the README lists it for Naukri alone |
| experience_range | Yes, Naukri only | Years of experience the employer requires, as a range |
| vacancy_count | Yes, Naukri only | Number of open positions on the posting |
| work_from_home_type | Yes, Naukri only | Naukri's own WFH category, alongside the generic is_remote flag |
| company_rating | Yes | Employer rating as shown on Naukri; listed in the README's Naukri site note |
| title, company, location, job_url | Yes | Core fields present on every board |
| job_url_direct | When available | Direct apply link if the posting exposes one |
| date_posted, job_type, is_remote | Yes | Use hoursOld and jobType inputs to narrow at run time |
| salary_min, salary_max, salary_currency, salary_interval | When a range is posted | Rupee ranges expected; salary_source marks direct_data vs description; enforceAnnualSalary converts monthly to yearly |
| description | Yes | Full posting text in Markdown by default or HTML via descriptionFormat |
| job_level, company_country | No | LinkedIn-only and Indeed-only fields per the README |
| matched_search_term, scraped_at | Yes | Which of up to 5 queries surfaced the row, plus an ISO scrape timestamp |
How to do it
- 1.Open the job board scraper on Apify, enter a search term such as "backend developer" or up to 5 terms in searchTerms, and set sites to naukri (add indeed with countryIndeed india if you want a second Indian source).
- 2.Choose maxResults up to 100, optionally hoursOld for fresh postings only, and enforceAnnualSalary if you want yearly figures; then start the run and allow 1 to 3 minutes for the browser fetch.
- 3.Open the dataset, filter on skills, experience_range, vacancy_count, or salary_currency, and export as JSON, CSV, or Excel, or read the rows through the API or MCP.
Questions, answered
Does Naukri have an official API?
No. Naukri offers no developer portal, self-serve key, or public API documentation; the only integrations are commercial employer-side arrangements for posting jobs from an ATS and pulling applications back, negotiated with Naukri's team (JobsPipe, July 31, 2026). Datapika reads the public search pages instead, so there is no key or partner agreement, and you receive the same fields a visitor sees in the browser.
What does a Naukri scrape cost per job?
The rate is $0.005 per job row delivered, so 1,000 Naukri postings cost $5 and a 30-row test run costs 15 cents. Charges apply only to rows that reach your dataset; a search that returns nothing costs nothing beyond Apify's small start fee. Apify's free plan includes $5 of monthly credit, which covers roughly 1,000 rows before you add a card.
Why does a Naukri run take longer than an Indeed run?
Naukri, along with Glassdoor, ZipRecruiter, and Bayt, is fetched through a real browser with anti-bot warm-up, so the README lists 1 to 3 minutes for these boards versus 5 to 20 seconds for Indeed and LinkedIn. Since each board's rows are pushed the moment that board finishes, a mixed run shows Indeed rows first and Naukri rows when its browser session completes.
Can I filter Naukri results by skills or years of experience?
Not as inputs. The scraper accepts searchTerm, location, jobType, isRemote, hoursOld, and easyApply as run-level filters, and returns skills and experience_range as output columns on each Naukri row. The reliable pattern is to set maxResults to 100, pull the widest set for your term, and filter the dataset afterwards in a spreadsheet, SQL, or your own code.
Are Naukri salaries returned in rupees?
Each row carries salary_min, salary_max, salary_currency, and salary_interval. Naukri postings quote pay in rupees, and salary_currency records the currency the board reports, so check it before mixing rows with USD boards. salary_source tells you whether the numbers were board-provided (direct_data) or parsed from the description. Turn on enforceAnnualSalary to convert monthly figures to yearly equivalents before comparing across boards.
How many Naukri jobs can one run return?
maxResults caps at 100 per board per search term and searchTerms accepts 5 queries, so a Naukri-only run tops out at 500 rows. Use offset to skip rows you already have on a follow-up run, or split the sweep by city and job type. Deduplication removes repeats across boards, so a posting that also appears on Indeed India counts once.
Keep reading
Scrape guides
How to scrape Indeed jobs at scale without an API key
Scrape guides
Scrape Bayt jobs: Gulf and MENA listings as JSON
Comparisons
Indeed API alternatives for job data (2026)
Use cases
Scrape salary data from job postings for market research
Use cases
Hiring signals API: who is hiring, at $0.0005 per company