Naukri Scraper - Jobs, Salaries, Companies India avatar

Naukri Scraper - Jobs, Salaries, Companies India

Pricing

Pay per event

Go to Apify Store
Naukri Scraper - Jobs, Salaries, Companies India

Naukri Scraper - Jobs, Salaries, Companies India

Scrape Naukri.com jobs in India: title, company, salary, skills, location, role, industry. 30+ fields per job. Filter by keyword, location, experience, work mode.

Pricing

Pay per event

Rating

0.0

(0)

Developer

deusex machine

deusex machine

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

2

Monthly active users

3 days ago

Last modified

Share

Naukri Scraper API — Jobs, Salaries, Companies & Skills Data from India

A high-performance Naukri scraper that extracts complete job listings from Naukri.com, India's largest job portal with 7M+ active listings across IT services, financial services, manufacturing, BPO and healthcare. Pull 30+ structured fields per job — title, company, salary (parsed to INR and USD), required experience, skills, education, role category, industry, department, and full description — without writing a single line of HTML parsing logic.

Designed for recruiters building talent pipelines, market analysts tracking India's labor demand on portals like Glassdoor, LinkedIn Jobs, and Indeed, founders mapping competitor hiring patterns, salary benchmarking firms enriching their compensation datasets, and ML/AI startups training resume-to-job matching models. Compatible with schema.org JobPosting downstream pipelines and exports cleanly to CSV, JSON, Excel or Google Sheets.

What this Naukri scraper does

This actor automates browsing naukri.com like a real user. It opens the public job search pages, paginates through results, parses every job tuple into a clean record, and (optionally) opens each job detail page to extract premium fields that aren't visible in the search results — like the full job description, applicant count, salary breakdown by tier, employment type, education requirements, and addresses.

Output is structured JSON, ready for direct ingestion into any database, BI tool or LLM pipeline. Salary strings like "6-15 Lacs PA" are parsed into salaryMin: 600000, salaryMax: 1500000, salaryCurrency: "INR", plus a salaryUsdEstimate: "$7,229 - $18,072" field that nobody else in the market provides.

The scraper is built on a stealth browser stack tuned specifically for India's anti-bot protections. No reCAPTCHA solving services required, no residential proxies — runs on Apify's datacenter network out of the box.

Data fields the Naukri scraper extracts

Every job record contains these fields when available:

  • jobId — Unique 12-18 digit Naukri job identifier
  • jobUrl — Direct link to the full job listing
  • title — Position title as displayed
  • companyName — Hiring company
  • companyUrl — Naukri career page of the hiring company
  • companyLogoUrl — Company logo image URL
  • companyRating — AmbitionBox rating out of 5 (e.g. 3.5)
  • companyReviewsCount — Total employee reviews (e.g. 48992)

Location & arrangement

  • locationText — Raw location string ("Hybrid - Kolkata, Hyderabad, Bengaluru")
  • locations — Parsed list of cities (["Kolkata", "Hyderabad", "Bengaluru"])
  • workMode"hybrid", "remote", "office" or null
  • address — Detailed address from job detail page (when fetchDetails=true)

Experience & seniority

  • experienceText — Raw display string ("5-10 Yrs")
  • experienceMin — Minimum years required (integer)
  • experienceMax — Maximum years required (integer)
  • seniority — Derived label: "fresher", "junior", "mid", "senior", "lead"

Compensation

  • salaryText — Raw salary display ("6-15 Lacs PA")
  • salaryMin — Minimum salary in INR (integer)
  • salaryMax — Maximum salary in INR (integer)
  • salaryCurrency — Currency code (typically "INR")
  • salaryUsdEstimate — Estimated USD range for international users

Skills & description

  • skills — Clean array of skill chips (["Python", "Django", "AWS"])
  • jobDescriptionPreview — First 600 chars shown in search results
  • jobDescription — Full description text (only with fetchDetails=true)
  • jobDescriptionHtml — Original HTML markup of description (truncated 30K chars)

Role taxonomy (fetchDetails=true)

  • role — Specific role like "Back End Developer" or "Full Stack Developer"
  • roleCategory — Broader category like "Software Development"
  • department — Functional area like "Engineering - Software & QA"
  • industry — Industry type like "IT Services & Consulting"
  • employmentType"Full Time, Permanent", "Contract", etc.

Education requirements (fetchDetails=true)

  • educationUG — Undergraduate degree expected (e.g. "B.Tech in Any Specialization")
  • educationPG — Postgraduate degree expected (e.g. "M.Tech in Any Specialization")

Competition metrics (fetchDetails=true)

  • applicants — Number of applicants so far (signal for competitiveness)
  • vacancy — Number of open positions for this listing
  • applyByDate — Application deadline when published

Timestamps

  • postedRelative — Naukri's relative date ("4 days ago", "1 week ago")
  • postedDate — Estimated ISO 8601 timestamp derived from the relative date

Use cases for this Naukri data API

  1. Recruitment & talent acquisition — Build a daily-updated stream of jobs matching your target keywords across multiple cities. Use companyReviewsCount and companyRating to filter only well-rated employers.
  2. Compensation benchmarking — Aggregate salaryMin/salaryMax by role + experienceMin to produce reliable Indian market salary tables. The salaryUsdEstimate field makes it directly usable in global comp reports.
  3. Hiring intelligence — Track which companies are scaling specific functions (e.g. AI/ML engineers, growth marketers). The industry + roleCategory taxonomy lets you slice the dataset cleanly.
  4. Resume-to-job ML training data — Pair the skills array, full jobDescription, and experienceMin/Max fields to train recommendation models. Tens of thousands of jobs per day.
  5. Skill demand tracking — Run a weekly cron, count the top occurring skills entries by roleCategory. Identify trending technologies before they show up in industry reports.
  6. Lead generation — Cold outreach to hiring managers at companies actively recruiting in your niche. Combine with company website lookup tools for full B2B enrichment.

How to use this Naukri scraper

Choose between keywords mode (easiest — provide one or many search keywords and the scraper builds the URLs) or URLs mode (advanced — paste pre-built Naukri search URLs with all the filter parameters already encoded).

Mode 1 — Search by keywords

{
"mode": "keywords",
"keywords": ["python developer", "data engineer mumbai"],
"maxJobs": 100,
"fetchDetails": false
}

Mode 2 — Search by URLs

{
"mode": "urls",
"searchUrls": [
{ "url": "https://www.naukri.com/python-developer-jobs-in-bangalore?experience=3" }
],
"maxJobs": 50,
"fetchDetails": true,
"workMode": "remote"
}

Mode 3 — Filtered, detailed mode for premium analysis

{
"mode": "keywords",
"keywords": ["data scientist"],
"maxJobs": 200,
"fetchDetails": true,
"workMode": "hybrid",
"experienceMin": 3,
"experienceMax": 7,
"cities": ["Bengaluru", "Pune", "Hyderabad"]
}

Input parameters

ParameterTypeDefaultDescription
modeenum"keywords""keywords" or "urls"
keywordsarray of strings["python developer"]Search keywords; slugs are auto-built
searchUrlsarray[]Pre-built Naukri search URLs (use when mode=urls)
maxJobsinteger50Cap per keyword/URL (1–5000)
fetchDetailsbooleanfalseOpen each job detail page for premium fields
workModeenum"any""any", "remote", "hybrid", "office"
experienceMininteger0Filter jobs requiring at least N years
experienceMaxinteger40Filter jobs requiring at most N years
citiesarray[]Whitelist cities (post-extract filter)

Output example (single record, JSON)

{
"jobId": "230326014707",
"title": "Python Developer",
"jobUrl": "https://www.naukri.com/job-listings-python-developer-movate-technologies-bengaluru-5-to-8-years-230326014707",
"companyName": "Movate Technologies",
"companyUrl": "https://www.naukri.com/movate-technologies-jobs-careers-2034621",
"companyLogoUrl": "https://img.naukimg.com/logo_images/groups/v1/2034621.gif",
"companyRating": 3.1,
"companyReviewsCount": 2646,
"locationText": "Bengaluru",
"locations": ["Bengaluru"],
"workMode": null,
"experienceText": "5-8 Yrs",
"experienceMin": 5,
"experienceMax": 8,
"seniority": "mid",
"salaryText": "16-20 Lacs PA",
"salaryMin": 1600000,
"salaryMax": 2000000,
"salaryCurrency": "INR",
"salaryUsdEstimate": "$19,277 - $24,096",
"skills": ["Django", "React.Js", "Python", "Python Development", "SQL"],
"postedRelative": "1 week ago",
"postedDate": "2026-05-16T05:42:06.471457+00:00",
"role": "Full Stack Developer",
"roleCategory": "Software Development",
"department": "Engineering - Software & QA",
"industry": "IT Services & Consulting",
"employmentType": "Full Time, Permanent",
"educationUG": "Any Graduate",
"applicants": 1,
"jobDescription": "We are looking for an experienced Python developer..."
}

How to call this Naukri scraper from your code

From the Apify API (curl)

curl -X POST "https://api.apify.com/v2/acts/makework36~naukri-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "keywords",
"keywords": ["data engineer"],
"maxJobs": 100,
"fetchDetails": false
}'

From Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("makework36/naukri-scraper").call(run_input={
"mode": "keywords",
"keywords": ["python developer", "react developer"],
"maxJobs": 200,
"fetchDetails": True,
"workMode": "remote",
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["companyName"], job["salaryUsdEstimate"])

From Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('makework36/naukri-scraper').call({
mode: 'keywords',
keywords: ['devops engineer mumbai'],
maxJobs: 100,
fetchDetails: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} jobs`);

Export to CSV

curl "https://api.apify.com/v2/acts/makework36~naukri-scraper/runs/last/dataset/items?format=csv&token=$APIFY_TOKEN" \
-o naukri_jobs.csv

Performance & cost

The scraper runs on a stealth browser at 4 GB RAM. Typical performance:

ModeTime per page (20 jobs)Time per detail100 jobs ETA
Search only (fast)~7 s~35 s
With fetchDetails=true~7 s + 25 s/job~25 s~45 min

Each search page returns 20 jobs. Pagination is automatic up to maxJobs. The detail-page fetch is slower because it loads the full job description, but it adds 9 premium fields that are not available in the search results.

Naukri scraper comparison

FeatureThis actorBrowser-only (residential proxy)Headless w/ proxy + captcha solver
Output fields30+ structured20–2525
Salary parsed to INR + USD
Seniority field (fresher/junior/mid/senior/lead)
Skills cleaned of UI noise
Residential proxy required
Captcha solver required
Pricing modelPAY_PER_EVENT tieredflat or rentalflat

Step-by-step tutorial — your first run in 3 minutes

  1. Click Try for free at the top of this page.
  2. In the input form, leave mode as keywords.
  3. Replace the default keyword with one matching your niche (e.g. "machine learning engineer").
  4. Set maxJobs to 20 for a quick first run.
  5. Leave fetchDetails off for the first test — saves time and compute.
  6. Click Start. The run finishes in 30–60 seconds.
  7. Open the dataset tab. You'll see a table view with company logos, titles, locations and salaries.
  8. Click Export → choose CSV or JSON. Open in Excel or your tool of choice.
  9. Once you're happy with the output, increase maxJobs, enable fetchDetails for richer data, or schedule a daily run.

Advanced usage patterns

Pattern A — Daily talent radar

Schedule the actor with keywords: ["your role"], maxJobs: 50, fetchDetails: false. Each morning you get a CSV in your inbox via Apify's email integration showing what's new in your niche.

Pattern B — Multi-city compensation report

Run with keywords: ["python developer"], cities: ["Bengaluru","Pune","Hyderabad","Mumbai","Delhi"], fetchDetails: true. Aggregate salaryMin/salaryMax by city to produce a salary heatmap.

Weekly cron with keywords covering 5 broad role categories. Group jobs by roleCategory, count skill occurrences in the skills array. Top-trending skills emerge over time.

Pattern D — Recruiter outreach pipeline

Use fetchDetails: true to capture full description and applicants count. Filter jobs where applicants < 10 (early-stage listings — your candidates have less competition). Export and prioritize for outreach.

Pattern E — B2B sales prospecting

Use the dataset to identify companies hiring specific roles (e.g. all companies hiring a "Head of Growth" in India). Combine with company website finders to build cold outreach lists.

Troubleshooting

My run takes too long with fetchDetails: true. The detail fetch adds ~25 s per job because the actor opens each listing's full page. For 1000 jobs with details, expect 7–8 hours. To go faster, run search-only mode first, then re-run only on jobs with missing salary using mode: urls.

Some salaryMin/salaryMax come back null. Naukri lists "Not Disclosed" for ~80% of jobs in the search results. The fetchDetails: true mode raises that recovery rate dramatically because more listings expose salary on the detail page.

I see workMode: null on most jobs. That's expected — Naukri only marks Hybrid - or Remote explicitly. Office-based jobs come through as plain locations and the field stays null. You can infer office-mode safely if workMode is null && locations is not empty.

The actor returned 0 jobs for my keyword. Naukri requires the keyword in slug form. Try a more common phrasing (e.g. "data scientist" not "data sciences specialist"). Or use mode urls with a search URL pre-built on the website.

My free credit ran out mid-run. Bump your account's free tier limit in the Apify console, or set a tighter maxJobs value. Each search page (20 jobs) costs much less than a single detail fetch.

I want only specific industries (e.g. only fintech jobs). Pre-filter via the search URL by appending Naukri's industry filter (e.g. &industry=BankingFinancialServicesInsurance) and pass that URL via searchUrls.

Pricing

This actor uses PAY_PER_EVENT pricing with tiered volume discounts. You pay only for what you extract; no monthly subscriptions, no idle costs.

TierStandard job (search only)Detailed job (with fetchDetails)
FREE$3.50 / 1K$9.50 / 1K
BRONZE$2.50 / 1K$7.00 / 1K
SILVER$1.80 / 1K$5.00 / 1K
GOLD$1.20 / 1K$3.50 / 1K
PLATINUM$0.90 / 1K$2.80 / 1K
DIAMOND$0.65 / 1K$2.50 / 1K

Plus a one-time $0.001 per actor run for initialization. A typical run of 200 standard jobs costs $0.70 (FREE tier) or as little as $0.13 (DIAMOND).

FAQ

Does this Naukri scraper work for international users? Yes. The salaryUsdEstimate field provides converted ranges in USD so compensation comparisons across markets work without manual conversion. The actor runs from Apify's datacenter so you don't need any India-located infrastructure.

Is scraping Naukri.com legal? This actor accesses publicly available pages — no login, no bypassing paywalls, no scraping of user accounts. Always check the target site's terms of service before deploying at scale and consult legal counsel for your jurisdiction.

How fresh is the data? The scraper fetches in real time when you run it. Job listings on Naukri update continuously throughout the day. Schedule the actor as frequently as your use case demands.

Can I scrape Naukri without writing code? Yes. Use the input form on this page, click Start, then download the results as CSV or Excel. No Python or Node required.

Why don't I see educationPG for every job? Naukri only lists postgraduate requirements when relevant. Roles that don't require a PG show null for educationPG. The educationUG field is more consistently populated.

Does the actor handle pagination automatically? Yes. Set maxJobs to your desired total and the scraper paginates internally until it reaches the cap or runs out of results, whichever comes first.

Can I scrape jobs from a specific company? Yes — use mode: urls and pass the company's Naukri career page URL (e.g. https://www.naukri.com/cognizant-jobs-careers-2114). The scraper treats it like any search page.

What if Naukri changes its HTML structure? The scraper uses defensive selectors and DOM extraction. When Naukri pushes a layout change, fixes typically land within 24–48 hours. Use the Issues tab to report problems.

Is there a rate limit? The actor inserts a ~0.5 s delay between pages and 1–2 s between detail fetches to stay polite. For large runs (>1000 jobs), consider splitting across multiple Apify Tasks scheduled minutes apart.

Does this support Naukri's company review/AmbitionBox data? The scraper extracts companyRating and companyReviewsCount directly from the search results. A separate dedicated AmbitionBox scraper is on the roadmap.

Changelog

  • 0.1 (2026-05) — Initial release. Search mode + detail mode. 30+ fields. Tiered pricing.

This Naukri scraper is intended for authorized data collection on publicly available information. It does not bypass authentication, paywalls, or extract personally identifiable information beyond what is shown publicly. Users are responsible for complying with Naukri.com's terms of use, India's Information Technology Act, and any data protection regulations applicable in their jurisdiction (e.g. GDPR, CCPA). The author of this actor takes no responsibility for misuse.