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.
The actor referenced in this article. Pay only for results delivered.
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
Pay per job returned. Zero charge on empty searches.
Explore the scraper referenced in this article — see inputs, outputs, and pricing, then run it 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.
How to Scrape CutShort Jobs for India Tech Hiring Data (No API)
CutShort is where Indian startups post engineering and product roles, and it has no public jobs API. Learn how to extract titles, companies, salary ranges, skills, and experience bands as structured JSON for recruiting feeds and talent market research.
Airbnb Scraper: Listing Prices, Ratings, and Availability Without the API
Airbnb has no public listings API. Here's how to pull nightly price, rating, superhost status and coordinates from Airbnb search results using Python.
Maps Leads: Verified Email Extraction from Google Maps Business Listings
How to pull B2B leads from Google Maps with MX-verified emails, past the official API's 120-result cap, and pay only for contactable businesses.