Naukri Job Scraper
Under maintenancePricing
from $2.70 / 1,000 job scrapeds
Naukri Job Scraper
Under maintenanceNaukri.com job dataset from keywords, locations, search URLs, or company pages, including optional job details, company overview, and AmbitionBox reviews.
Pricing
from $2.70 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Naukri Job Scraper creates a structured dataset of job listings collected from Naukri.com. Each dataset item represents one job listing and can include title, company, location, experience, salary, skills, work mode, posting dates, and rating. Optional job-detail, company-overview, and AmbitionBox review fields attach to the same row. Query the source with keywords plus locations, Naukri search or listing URLs, or company pages. Control the result limit with maxJobs, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or another supported format.
Dataset at a glance
| Property | Value |
|---|---|
| Source | naukri.com (job listings; optional AmbitionBox reviews) |
| Record unit | One job listing, with optional nested company and review fields |
| Input methods | Keyword + location search (searchQueries, locations), Naukri URLs (startUrls), or company pages (companyUrls) |
| Main identifiers | jobId, url |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, XML, HTML (Apify dataset exports) |
| Update model | Fresh records per Actor run |
| Pricing | $3.00 per 1,000 jobs; +$3.00 per 1,000 job details; +$3.00 per unique company overview; +$2.00 per 1,000 reviews |
Coverage and available records
The Actor collects public Naukri job listings from three entry points. They can be combined in one run.
- Search-based: Set
searchQueriesto job titles, skills, or keywords (for examplepython developer). Each query is searched in every value inlocations. Leavelocationsempty for a nationwide search.sortBy,freshness, andworkModeapply to these keyword searches. - URL-based: Pass Naukri search pages or job listing URLs in
startUrls. Those URLs are used in addition to keyword searches. - Company-based: Pass Naukri company overview pages (for example
https://www.naukri.com/infosys-overview-13832) or AmbitionBox review pages (for examplehttps://www.ambitionbox.com/reviews/infosys-reviews) incompanyUrls. Live jobs for that company are collected up tomaxJobs.
Record types and limits:
- Listing records are always collected:
jobId, title, company, URL, location, experience, salary, skills, work mode, posting fields, rating, and the source query when the row came from search. - Job-detail fields are conditional: full description, expanded skills, education, and apply/view counts are returned only when
scrapeJobDetailsis enabled. - Company overview fields are conditional: size, headquarters, followers, type, founded year, about text, and offices attach onto each job from that company when
scrapeCompanyOverviewis enabled. The overview is collected once per unique company. - Review records are conditional: an AmbitionBox
reviewsarray attaches onto each job from that company whenscrapeCompanyReviewsis enabled, up tomaxReviewsPerCompany(default20;0means unlimited). - Result cap:
maxJobslimits the number of job rows (0means unlimited, the default). Company overview fields and reviews are attached onto those rows; they are not extra dataset items.
Known exclusions: content Naukri or AmbitionBox only shows behind login is not collected; each run captures page state at run time (no historical snapshots); freshness and workMode filters apply to keyword/location searches, not to arbitrary start URLs.
Data dictionary
Field names below match dataset record JSON properties exactly. Fields marked conditional appear only when the corresponding input toggle is enabled. jobId is the recommended deduplication key; url is a reasonable secondary key.
Listing fields
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
jobId | string | No | Naukri job identifier; best stable deduplication key | 150126031660 |
title | string | No | Job title as listed | Python Developer (@Infosys) |
companyName | string | No | Hiring company name | Infosys |
url | string | No | Job listing URL | https://www.naukri.com/job-listings-python-developer-infosys-infosys-kolkata-hyderabad-bengaluru-5-to-10-years-150126031660 |
companyUrl | string | Yes | Naukri company overview URL | https://www.naukri.com/infosys-overview-13832 |
location | string | Yes | Job location as listed (may include multiple cities) | Kolkata, Hyderabad, Bengaluru |
experience | string | Yes | Experience range as shown on Naukri | 5-10 Yrs |
minimumExperience | integer | Yes | Minimum years of experience | 5 |
maximumExperience | integer | Yes | Maximum years of experience | 10 |
salary | string | Yes | Salary as shown on the listing | Not disclosed |
postedAgo | string | Yes | Relative posting age as rendered on Naukri | 7 Days Ago |
postedDate | string | Yes | Posting timestamp (ISO 8601) | 2026-08-11T10:39:09.094000+00:00 |
skills | string[] | Yes | Skills shown on the listing | ["Django", "Python", "Flask"] |
workMode | string | Yes | Work arrangement when shown (Hybrid, Remote, or office) | Hybrid |
diversityTag | string | Yes | Diversity label when Naukri shows one | Prefers women |
rating | number | Yes | Company rating (typically AmbitionBox, 0–5) | 3.5 |
reviewCount | integer | Yes | Company review count shown on the listing | 50508 |
sourceQuery | string | Yes | Search keyword that produced the row | python developer |
sourceLocation | string | Yes | Location used in the search | bangalore |
itemType | string | No | Record type; always job on dataset rows | job |
Job-detail fields (conditional — scrapeJobDetails)
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
description | string | Yes | Full job description | Long-form text |
skills | string[] | Yes | Listing skills expanded with detail-page skills | ["Django", "Python", "Flask"] |
education | object | Yes | {undergraduate, postgraduate, doctorate} string arrays | See nested object |
applyCount | integer | Yes | Number of applications shown on the listing | Null when the listing does not show a count |
viewCount | integer | Yes | Number of views shown on the listing | Null when the listing does not show a count |
employmentType | string | Yes | Employment type when the detail page provides it | permanent |
Company overview fields (conditional — scrapeCompanyOverview)
These fields attach onto every job row from that company. The overview is fetched once per unique company.
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
companySize | string | Yes | Employee-size bucket | 100001+ |
headquarters | string | Yes | Headquarters as shown on the company page | Bengaluru |
followCount | integer | Yes | Naukri follower count | 1878902 |
companyType | string | Yes | Organisation type | Public |
founded | string | Yes | Founding year as shown on the company page | 1981 |
companyAbout | string | Yes | Company about text | Infosys is a global leader in next-generation digital services and consulting. |
companyOffices | object[] | Yes | Offices: {city, address, pincode, isHeadquarter} | See example record |
Review fields (conditional — scrapeCompanyReviews)
Each job record may include a reviews array from AmbitionBox. One review object:
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
reviewId | integer | No | AmbitionBox review identifier | 78544194 |
title | string | Yes | Review title | rated by a Technical Lead in Bengaluru |
rating | number | Yes | Overall company rating on the review (0–5) | 1.0 |
likes | string | Yes | What the reviewer liked | Culture and env. |
dislikes | string | Yes | What the reviewer disliked | Manager are no supportive... |
department | string | Yes | Reviewer department | Software Development |
location | string | Yes | Reviewer location | Bengaluru |
jobProfile | string | Yes | Reviewer job title | Technical Lead |
employmentType | string | Yes | Employment type on the review | permanent |
workPolicy | string | Yes | Work policy on the review | Hybrid |
postedAgo | string | Yes | Relative review date as rendered | 14 Aug 2026 |
verified | boolean | Yes | Whether AmbitionBox marks the review verified | false |
Example dataset record
Representative record from a python developer search in bangalore, with company overview and reviews enabled. companyAbout is shortened for length; the JSON below is valid. The reviews array is limited to one item for readability.
{"jobId": "150126031660","title": "Python Developer (@Infosys)","companyName": "Infosys","url": "https://www.naukri.com/job-listings-python-developer-infosys-infosys-kolkata-hyderabad-bengaluru-5-to-10-years-150126031660","companyUrl": "https://www.naukri.com/infosys-overview-13832","location": "Kolkata, Hyderabad, Bengaluru","experience": "5-10 Yrs","minimumExperience": 5,"maximumExperience": 10,"salary": "Not disclosed","postedAgo": "7 Days Ago","postedDate": "2026-08-11T10:39:09.094000+00:00","skills": ["Django", "Python", "Flask", "Angularjs", "Full Stack", "Angular"],"workMode": "Hybrid","diversityTag": "Prefers women","rating": 3.5,"reviewCount": 50508,"sourceQuery": "python developer","sourceLocation": "bangalore","companySize": "100001+","headquarters": "Bengaluru","followCount": 1878902,"companyType": "Public","founded": "1981","companyAbout": "Infosys is a global leader in next-generation digital services and consulting.","companyOffices": [{"city": "Bengaluru","address": "Infosys, Plot No.44 Hosur Main Road, Electronics City","pincode": "Karnataka 560100","isHeadquarter": true}],"reviews": [{"reviewId": 78544194,"title": "rated by a Technical Lead in Bengaluru","rating": 1.0,"likes": "Culture and env.","dislikes": "Manager are no supportive...","department": "Software Development","location": "Bengaluru","jobProfile": "Technical Lead","employmentType": "permanent","workPolicy": "Hybrid","postedAgo": "14 Aug 2026","verified": false}],"itemType": "job"}
A matching input for that record shape:
{"searchQueries": ["python developer"],"locations": ["bangalore"],"maxJobs": 20,"scrapeCompanyOverview": true,"scrapeCompanyReviews": true,"maxReviewsPerCompany": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Job-detail fields such as description, education, applyCount, and viewCount appear when scrapeJobDetails is enabled.
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchQueries | string[] | No* | [] | Job titles, skills, or keywords | Combined with each location. Prefill: python developer |
locations | string[] | No | [] | Indian cities or regions as shown on Naukri | Each query is searched in every location. Empty = nationwide. Prefill: bangalore |
startUrls | array (requestListSources) | No* | [] | Naukri search pages or /job-listings-... URLs | Used in addition to search queries |
companyUrls | array (requestListSources) | No* | [] | Naukri overview or AmbitionBox review pages | Collects live jobs for that company up to maxJobs |
maxJobs | integer | No | 0 | 0 or any positive integer | Maximum job rows; 0 = unlimited. Overview and reviews attach onto those rows |
sortBy | string | No | relevance | relevance, date | Search-result sort (date is newest first) |
freshness | string | No | any | any, 1, 3, 7, 15, 30 | Posted-within window for keyword/location searches (days) |
workMode | string | No | any | any, office, hybrid, remote | Work-arrangement filter for keyword/location searches |
scrapeJobDetails | boolean | No | false | true / false | Collect full description, skills, education, and apply/view counts (charged as job-details) |
scrapeCompanyOverview | boolean | No | false | true / false | Attach company profile fields onto each job (charged once per unique company) |
scrapeCompanyReviews | boolean | No | false | true / false | Attach AmbitionBox reviews onto each job (charged per review) |
maxReviewsPerCompany | integer | No | 20 | 0 or any positive integer | Review cap per company; 0 = unlimited. Ignored when reviews are disabled |
detailConcurrency | integer | No | 5 | 1–20 | Maximum parallel job-detail and company requests |
proxyConfiguration | object | No | Apify proxy, RESIDENTIAL group | Apify proxy groups or custom proxies | Residential proxies are recommended |
* Provide at least one of searchQueries, startUrls, or companyUrls.
Minimal request:
{ "searchQueries": ["python developer"], "locations": ["bangalore"], "maxJobs": 20 }
Advanced request (search filters plus a company page and enrichment):
{"searchQueries": ["python developer"],"locations": ["bangalore"],"companyUrls": [{ "url": "https://www.naukri.com/infosys-overview-13832" }],"maxJobs": 100,"sortBy": "date","freshness": "7","workMode": "hybrid","scrapeJobDetails": true,"scrapeCompanyOverview": true,"scrapeCompanyReviews": true,"maxReviewsPerCompany": 20,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Retrieve the data through the API
The Actor runs on the Apify platform, so there is no server to host and no crawling infrastructure to maintain.
- Start the Actor with a JSON input (console or API).
- Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
- Retrieve items from the run's default dataset.
- Paginate or export the dataset.
Python example:
from apify_client import ApifyClientclient = ApifyClient("YOUR-APIFY-TOKEN")run_input = {"searchQueries": ["python developer"],"locations": ["bangalore"],"maxJobs": 20,"scrapeJobDetails": True,}run = client.actor("datascrapers/naukri-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["jobId"], item["title"], item["companyName"])
Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.
Data quality and record handling
- Conditional fields: job-detail, company-overview, and review fields are present only when their input toggle is enabled. Listing-only runs return a leaner record.
- Attached enrichments: company overview and reviews are nested on the job row. A company with 20 reviews still produces one dataset item per job, not extra rows.
- Source changes: Naukri and AmbitionBox page structure and values can change; unreadable fields are returned as null rather than fabricated. Salary is often the string
Not disclosed. - Deduplication: within a run, listings are deduplicated by
jobId. Across runs, usejobId(orurl) as the stable key and filter against previously stored IDs. - Detail fallback: listing data is returned even when job-detail enrichment fails.
- Normalization:
minimumExperienceandmaximumExperienceare integers;postedDateis ISO 8601;skillsis a string array.sourceQueryandsourceLocationare written on search-produced rows. - Location spelling: keyword search locations should match Naukri's search labels (for example
bangalore). Listing text may use a different spelling (for exampleBengaluru).
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API poll or webhook consumer | Store job listings alongside talent tables |
| Google Sheets | Apify Google Sheets integration | Share role shortlists with recruiting teams |
| CRM / ATS pipeline | Webhook on run completion | Push new listings into applicant tracking |
| S3 / cloud storage | Scheduled export via Apify scheduler + integration | Archival of labor-market snapshots |
Pricing and cost examples
The Actor uses pay-per-event pricing. Events are tiered by Apify plan. Published event rates:
| Event | Trigger | Rate |
|---|---|---|
| Actor start | Once per run | $0.00005 |
| dataset-item | Every job record pushed to the dataset | $0.003 / job ($3.00 per 1,000 jobs) |
| job-details | scrapeJobDetails enabled, detail data fetched | $0.003 / job ($3.00 per 1,000 jobs) |
| company-overview | scrapeCompanyOverview enabled, once per unique company | $0.003 / company ($3.00 per 1,000 companies) |
| company-reviews | scrapeCompanyReviews enabled, per AmbitionBox review | $0.002 / review ($2.00 per 1,000 reviews) |
Example costs at the published event rates (Actor start is $0.00005 per run):
| Records | Configuration | Estimated base cost |
|---|---|---|
| 1,000 jobs | Listing only | $3.00 |
| 10,000 jobs | Listing only | $30.00 |
| 1,000 jobs | Listing + job details | $6.00 |
| 1,000 jobs + 200 unique companies | Listing + company overview | $3.60 |
| 1,000 jobs + 1,000 reviews | Listing + reviews | $5.00 |
| 1,000 jobs + details + 200 overviews + 1,000 reviews | All enrichments | $8.60 |
Paid Apify plans apply lower tiered event rates. Compute units consumed by the run are billed by your Apify plan. Estimates depend on the verified pricing model, unique-company count, review volume, and the options selected for the run.
Limitations and responsible data use
- The Actor collects publicly accessible data from Naukri job and company pages, and from AmbitionBox review pages when reviews are enabled.
- Field availability depends on what the source renders at run time; some values can be null or missing, and site changes can alter fields.
freshnessandworkModeapply to keyword/location searches. Location values should match Naukri search labels.- Company overview and reviews attach onto job rows; they are not standalone dataset items.
- The Actor does not provide historical snapshots unless you store them yourself.
- You are responsible for compliance with Naukri and AmbitionBox terms of service, applicable privacy law, and any contractual obligations before using the data.
Dataset questions
What does one dataset item represent?
One Naukri job listing. Company overview fields and AmbitionBox reviews attach onto that job row. A job whose company has 20 reviews still produces a single dataset item.
Which field should I use as a unique identifier?
jobId is the stable Naukri job identifier and is the recommended deduplication key. The url is a reasonable secondary key.
Are fields nullable or conditional?
Yes. Job-detail fields exist only when scrapeJobDetails is enabled; company overview fields exist only when scrapeCompanyOverview is enabled; the reviews array exists only when scrapeCompanyReviews is enabled. Within available records, fields the listing does not render are returned as null. salary is often the string Not disclosed.
How do I collect live jobs for one company?
Add the Naukri overview URL or AmbitionBox review URL to companyUrls. The Actor collects that company's live jobs up to maxJobs and attaches overview and review fields onto those rows when the corresponding toggles are on.
Can I retrieve the records as CSV or JSON?
Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API.
Does the Actor return historical data?
No. Each run captures the state of the listings at run time. To track posting or salary changes, schedule repeated runs and store the outputs yourself.
What counts as a billable result?
Four pay-per-event charges apply after a $0.00005 Actor-start charge: a dataset-item charge for every job row ($3.00 per 1,000), a job-details charge for each enriched job ($3.00 per 1,000), a company-overview charge once per unique company ($3.00 per 1,000), and a company-reviews charge per AmbitionBox review ($2.00 per 1,000). A listing-only run incurs Actor start plus dataset-item charges.
Related datasets from Data Scrapers
- Glassdoor Jobs Scraper — Job listings with employer ratings that can be compared with Naukri rows by title, company, and location.
- ZipRecruiter Scraper — US job listings for cross-board labor-market comparison against Naukri India results.
- StepStone Jobs Scraper — European job listings useful for multi-region hiring-volume analysis.
- LinkedIn Company Scraper — Company profiles that can be joined with Naukri jobs by company name.
- LinkedIn Profile Scraper — Public professional profiles for talent and hiring research alongside Naukri openings.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.