Naukri Jobs Scraper
Pricing
from $6.00 / 1,000 job scrapeds
Naukri Jobs Scraper
Scrape Naukri.com job listings from India with title, company, location, salary, experience, skills, description, and apply URL. MCP-ready.
Pricing
from $6.00 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
Naukri Jobs Scraper is an Apify Actor for collecting public job listings from Naukri.com in India. It accepts keyword searches, location filters, experience filters, posting-age filters, or pasted Naukri search and job URLs. Each dataset record represents one job posting and can include title, company name, location, salary text, experience, skills, description, job URL, apply URL, and search context such as search keyword, search location, search URL, page number, and scrape timestamp. It is usable through Apify MCP.
Best fit and connected workflows
This Actor fits workflows that need structured Naukri job data from public listings, especially when the next step depends on one clean row per posting.
Use it for:
- recruiting research and talent market mapping
- salary and compensation scans from public listings
- job-board monitoring by keyword, city, or freshness
- lead generation workflows that start from job demand signals
- AI agent workflows that need a stable tool for Naukri job retrieval
If your workflow centers on a different job board or region, these verified related Actors provide natural routing options:
- Use APEC Jobs Scraper for APEC-focused job board research and geography-specific searches
- Use Ashby Jobs Scraper for Ashby-hosted listings where the hiring workflow starts on Ashby pages
- Use Bayt Jobs Data Scraper for MENA Listings for Bayt and MENA listings when the source board is Bayt
Practical scenario
Priya is tracking data analyst openings in Mumbai. She starts with the keyword data analyst, location mumbai, and a recent posting filter. The Actor returns records with title, companyName, location, experience, salaryText, postedAgo, skills, and jobUrl. Priya uses postedAgo to prioritize fresh openings, compares skills across roles, and opens jobUrl to review each posting before building a shortlist and sharing it with hiring managers.
Input
Input fields
| Field | Type | Purpose |
|---|---|---|
keyword | string | Search Naukri by role, skill, or title. Defaults to software engineer. |
location | string | Restrict search to a city, region, or remote-style phrase. Defaults to bengaluru. |
startUrls | array | Paste Naukri search-result pages or job-detail URLs. |
experience | string | Filter by required years of experience from any to 15. |
jobAge | string | Filter by posting age from any to 30 days. |
maxItems | integer | Maximum jobs to return and bill for. Defaults to 50. |
enrichDetails | boolean | Fetch richer detail-page fields for selected runs. |
proxyConfiguration | object | Proxy settings for Naukri requests. |
maxConcurrency | integer | Number of browser pages to run at once. Defaults to 2. |
debugDumpHtml | boolean | Internal troubleshooting flag that saves raw pages to the key-value store. |
Focused input example
{"keyword": "data analyst","location": "mumbai","experience": "2","jobAge": "7","maxItems": 25,"enrichDetails": false,"maxConcurrency": 2}
Output
Each dataset item is one Naukri job posting. Required output fields are title and jobUrl. The record can also include company metadata, experience parsing, salary text, posting freshness, skills, description, and crawl context.
Output fields
| Field | Type | Purpose |
|---|---|---|
jobId | string | Naukri's identifier for the posting when available. |
title | string | Job title shown on Naukri. |
companyName | string | Hiring company name. |
companyRating | number | Company rating when provided. |
companyReviewsCount | integer | Number of company reviews when shown. |
companyLogo | string | Company logo URL when provided. |
companyUrl | string | Company profile URL on Naukri when available. |
location | string | Location text from the listing. |
experience | string | Experience range shown by Naukri. |
minExperienceYears | number | Parsed lower bound from experience text. |
maxExperienceYears | number | Parsed upper bound from experience text. |
salaryText | string | Salary range or label shown on Naukri. |
postedAt | string | ISO 8601 posted timestamp when available. |
postedAgo | string | Human-readable freshness label. |
jobType | string | Employment type or job type label when available. |
skills | array | Skills, tags, or keywords associated with the job. |
description | string | Description text from the search API or detail page. |
jobUrl | string | Direct Naukri URL for the posting. |
applyUrl | string | URL used to view or apply for the job. |
source | string | Source domain for the record. |
searchKeyword | string | Keyword used to discover the job. |
searchLocation | string | Location used to discover the job. |
searchUrl | string | Naukri search URL where the job was found. |
pageNumber | integer | Search results page number where the job was discovered. |
scrapedAt | string | ISO 8601 timestamp of the scrape. |
Illustrative output record
{"jobId": "120626012345","title": "Senior Software Engineer","companyName": "Acme Technologies","companyRating": 4.1,"companyReviewsCount": 1243,"companyLogo": "https://img.naukimg.com/logo_images/v3/acme.gif","companyUrl": "https://www.naukri.com/acme-jobs-careers-123","location": "Bengaluru","experience": "3-7 Yrs","minExperienceYears": 3,"maxExperienceYears": 7,"salaryText": "12-22 Lacs PA","postedAt": "2026-06-10T00:00:00.000Z","postedAgo": "2 days ago","jobType": "Full Time","skills": ["Java", "Spring Boot", "Microservices"],"description": "Design and build scalable backend services...","jobUrl": "https://www.naukri.com/job-listings-senior-software-engineer-acme-bengaluru-120626012345","applyUrl": "https://www.naukri.com/job-listings-senior-software-engineer-acme-bengaluru-120626012345","source": "naukri.com","searchKeyword": "software engineer","searchLocation": "bengaluru","searchUrl": "https://www.naukri.com/software-engineer-jobs-in-bengaluru?k=software%20engineer&l=bengaluru","pageNumber": 1,"scrapedAt": "2026-06-12T12:00:00.000Z"}
How it works
This Actor is built on the js-crawlee-playwright-chrome template and runs with Playwright in a Chrome browser environment. It can start from keyword-based Naukri search pages or from pasted Naukri search and job URLs.
Implementation facts visible in the live contract:
- default memory is 2048 MB
- minimum memory is 1024 MB and maximum memory is 8192 MB
- the Actor uses Apify Residential proxies in India by default
- default concurrency is 2
- the Actor exposes a dataset with one record per job scraped
- the compact terminal result is written to the key-value store under
OUTPUT - the detailed run diagnostics are written under
RUN_SUMMARY
The Apify Console output view surfaces title, companyName, location, experience, salaryText, postedAgo, skills, and jobUrl in a table for quick review.
Pricing
This Actor uses Pay per event pricing, plus Apify platform usage.
Charged events:
- Actor start: charged once per run, scaled by allocated memory
- Job scraped: charged for each Naukri job posting returned in the dataset
Example: if a run returns fifty jobs, the job-scraped charge is fifty event units, plus one actor-start event. Apify platform usage such as compute, storage, and proxy costs is shown separately in the Apify Console Pricing tab.
For the live and authoritative breakdown, open the Pricing tab in Apify Console before running larger exports.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a tool for retrieving structured Naukri job listings. The exact Actor identity is khadinakbar/naukri-jobs-scraper.
Tool description:
- Input: Naukri keyword searches, location filters, experience filters, posting-age filters, or Naukri URLs
- Output: one dataset record per job posting with crawl context and job metadata
- Provenance: records come from public Naukri listing pages and may include search-derived fields plus optional detail-page fields when
enrichDetailsis enabled
Find Naukri jobs for "data analyst" in Mumbai from the last 7 days. Return up to 20 records with title, company, location, experience, salary, skills, and jobUrl. Use the dataset items as the source of truth and keep the search keyword and search location fields for provenance.
Output interpretation for agents:
jobUrlandapplyUrlpoint to the posting for follow-up actionspostedAgohelps rank freshnessskillshelps route jobs into role-specific shortlistssearchKeyword,searchLocation,searchUrl, andpageNumberpreserve how the record was discovered
Pagination and cost guidance:
maxItemscaps how many job postings are returned and billed- it is a job count, not a page count
enrichDetailscan be enabled when a smaller set of records needs fuller descriptions and structured fields
API example
import { ApifyClient } from "apify-client";const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {keyword: "data analyst",location: "mumbai",experience: "any",jobAge: "7",maxItems: 10,enrichDetails: false,};const run = await client.actor("khadinakbar/naukri-jobs-scraper").call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {console.log(`${item.title} | ${item.companyName || ""} | ${item.jobUrl}`);}
Best results and outcome guidance
Start with one focused keyword and one location so the returned records match the search intent closely. Use startUrls when you already have Naukri search-result pages or specific job-detail URLs. Keep maxConcurrency at the default value of 2 for early runs, then adjust after you confirm your proxy setup works for your query shape. Use enrichDetails for smaller, higher-value runs where the detail-page description matters.
Design note
I found that the output contract includes both jobUrl and applyUrl, and the schema describes applyUrl as usually the same as jobUrl. That makes each record convenient for workflows that need either a direct posting link or an application entry point.
FAQ
When should I use keyword instead of startUrls?
Use keyword when you want the Actor to discover jobs from a Naukri search query. Use startUrls when you already have a Naukri search page or a job-detail page and want the Actor to scrape from that source directly.
How should I route a search across cities?
Set location for one city or region, such as bengaluru, mumbai, or delhi ncr. If you need multiple cities, execution separate inputs so each dataset record keeps a clear searchLocation.
Can I use this for recent job monitoring?
Yes. Combine jobAge with keyword and location to focus the search on newer postings. The output field postedAgo then helps with downstream sorting and alerts.
When is enrichDetails useful?
Use enrichDetails when you want a fuller description and structured fields from the job detail page for a smaller set of jobs. For broader scans, the default search-based extraction already returns the core fields.
How do the Actor start and job-scraped charges work together?
Each execution includes one actor-start event, then one job-scraped event for each returned posting. The maxItems setting caps how many postings are returned and billed.
Responsible use
Use this Actor for public Naukri job listings and related research workflows. Keep requests within the listed input fields, respect the returned job URLs as public posting links, and use the proxy and concurrency settings conservatively when automating larger runs.