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.
Try it live: Naukri Jobs Scraper, 21 Fields, 7 Filters, New-Job Monitor. Pay only for results delivered, no result no charge.
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: 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.
GitHub Repo Intelligence: Vet Any Dependency Before You Add It
Pull stars, forks, contributors, commit recency, latest release and full README for any public GitHub repo in one call. No token required, MCP-ready for agents doing dependency checks.
Bilibili Scraper: Video, Creator and Search Data in Python
Pull Bilibili videos by keyword, URL or creator ID: titles, view and like counts, duration, author stats. Plain HTTP, no cookies, no login required.
SEEK Jobs Scraper: Australian Job Listings in Python
How to pull SEEK.com.au job listings by keyword, location, work type and salary band in Python: title, company, salary range, apply link, no login or API key.