The Mine Works
Browse on Apify
← All posts
tutorial June 22, 2026 · 2 min read Updated June 22, 2026

How to Scrape Naukri.com Jobs in Python (Structured JSON with Salaries)

Naukri.com has no public API. Learn how to scrape India's #1 job board for titles, companies, salary ranges, skills, experience, and work mode as structured JSON with pay-per-result pricing.

Try the scraper

The actor referenced in this article is live on Apify. Pay only for results delivered.

Open on Apify →

Naukri.com is India’s largest job board with over 100,000 active listings at any time. With no official API, scraping is the only way to get structured job data at scale. Here is the complete guide.

Why Naukri data matters

Naukri is where most Indian companies post jobs first. Unlike LinkedIn, Naukri captures:

  • Mid-market and non-tech companies that do not use LinkedIn for hiring
  • Salary ranges displayed openly (not hidden behind “Sign in to see”)
  • Experience ranges and required skill lists per listing
  • Work mode (WFH, hybrid, office) clearly indicated

For hiring intelligence and labour market research in India, Naukri is the primary source.

What each listing contains

  • Job title and company name
  • Salary range in lakhs per annum (normalised from various display formats)
  • Experience range required (e.g. “3-7 years”)
  • Required skills list
  • Location (city or cities)
  • Work mode: work from home, hybrid, or office
  • Direct Naukri application URL

Using the Apify actor

import apify_client

client = apify_client.ApifyClient('YOUR_APIFY_TOKEN')

run_input = {
    "searchQuery": "data engineer",
    "location": "Bangalore",
    "experienceMin": 2,
    "experienceMax": 6,
    "maxResults": 200,
}

run = client.actor('themineworks/naukri-jobs').call(run_input=run_input)

for job in client.dataset(run['defaultDatasetId']).iterate_items():
    print(f"{job['title']} at {job['company']}")
    print(f"  Salary: {job['salary']}  Experience: {job['experience']}")
    print(f"  Skills: {', '.join(job['skills'][:5])}")
    print(f"  {job['location']}  {job['work_mode']}")
    print(f"  {job['url']}")

Salary benchmarking by role

Aggregate salary data across listings to build a benchmark by role and city:

import statistics
results = list(client.dataset(run['defaultDatasetId']).iterate_items())

# Extract min salary values for jobs with salary data
salaries = []
for job in results:
    if job.get('salary_min_lpa'):
        salaries.append(job['salary_min_lpa'])

if salaries:
    print(f"Data Engineer salaries in Bangalore:")
    print(f"  Median: {statistics.median(salaries):.1f} LPA")
    print(f"  P25: {sorted(salaries)[len(salaries)//4]:.1f} LPA")
    print(f"  P75: {sorted(salaries)[3*len(salaries)//4]:.1f} LPA")

Skills demand analysis

Find the most in-demand skills in your target role:

from collections import Counter

all_skills = []
for job in results:
    all_skills.extend(job.get('skills', []))

skill_counts = Counter(all_skills)
print("Top 15 skills for data engineers in Bangalore:")
for skill, count in skill_counts.most_common(15):
    pct = count / len(results) * 100
    print(f"  {skill}: {count} jobs ({pct:.0f}%)")

Competitor hiring monitoring

Track when a competitor starts hiring heavily in a new function:

run_input = {
    "company": "Flipkart",          # monitor specific company
    "maxResults": 500,
    "includeAllLocations": True,
}

WFH and work mode breakdown

from collections import Counter

modes = Counter(job.get('work_mode', 'Not specified') for job in results)
for mode, count in modes.most_common():
    print(f"  {mode}: {count} ({count/len(results)*100:.0f}%)")

Scheduling for market tracking

Run weekly to track how demand for specific skills or roles changes over time. Combine with a time-series database for trend charts.

Pricing

First 25 results free. Pay per job returned. Zero charge on empty searches.

Related Actor

Try the scraper referenced in this article — live on Apify, pay only for results.

Open naukri-jobs on Apify →

Frequently asked questions

Does Naukri have an official API? +

No. Naukri.com does not provide a public API for job listings. All programmatic access requires scraping.

What salary data does the scraper return? +

Salary ranges normalised to lakhs per annum. Naukri displays salaries in multiple formats — the scraper standardises them all to LPA for consistent analysis.

What is the difference between Naukri and LinkedIn Jobs for India? +

Naukri has far greater coverage for non-tech and mid-market Indian companies. LinkedIn skews toward tech and enterprise. For blue-collar to middle-management roles in India, Naukri is the primary source.