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

18

Total users

6

Monthly active users

7 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.

✨ Why use this scraper

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.

📤 Output fields

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

  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

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

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

{
"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..."
}

💻 Code examples

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

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.

📊 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

💵 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.