Naukri India Jobs Scraper — Keyword + City API
Pricing
from $2.00 / 1,000 jobs
Naukri India Jobs Scraper — Keyword + City API
Scrape Naukri.com India job listings by keyword and optional city: title, company, experience, posted date, URL and description. Salary only when Naukri discloses it (Not disclosed stays empty). HTTP jobapi — PPE per job, Residential IN if blocked.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Noah Adler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Naukri India Jobs Scraper
Naukri.com India jobs scraper by keyword + optional location: title, company, experience, city, posted label, job URL, and description — one clean Dataset row per listing. Salary is filled only when Naukri discloses a real figure (rows with “Not disclosed” leave salary empty).
Built for recruiting intel, salary benchmarking, lead gen (IN), and PPE-friendly exports. No browser automation — HTTP + Chrome TLS fingerprint + RSA nkparam + Naukri jobapi/v3/search.
Naukri’s public search UI calls
jobapi/v3/searchwith a short-lived RSA-encryptednkparamheader. This Actor warms a session on the SEO search page, generates a fresh token per request, and paginates untilmaxJobs. India residential proxy is optional (often works without proxy).
Why this Actor: Keyword + city · Clean schema · No Playwright · Regional SEO (India) · Cheaper than bloated multi-board incumbents · CSV / API / webhooks ready
Store icon: set the Actor icon in Apify Console (PNG not shipped in this repo).
Table of contents
- What this Actor does
- What you get
- Features
- Input
- Output example
- Output fields
- Quick start (API)
- Use cases
- Limitations
- FAQ
- Keywords
What this Actor does
| Step | Action |
|---|---|
| 1 | Accept keyword + optional location / days / maxJobs |
| 2 | Warm session: GET Naukri SEO search page (cookies) |
| 3 | Generate RSA nkparam (`v0 |
| 4 | GET jobapi/v3/search with keyword, location, pageNo |
| 5 | Parse jobDetails[] → Dataset rows |
| 6 | Paginate until maxJobs or empty page |
Input: keyword, location, max jobs, optional days filter, proxy.
Output: one Dataset row per job (title, companyName, salary, jobUrl, …).
What you get
Job
jobId,title,companyName,salary,experience,location
Timing / links
postedLabel,postedAt,jobUrl,description
Meta
keyword,scrapedAt,error,errorMessage
Features
| Capability | Detail |
|---|---|
| Keyword + location | e.g. python developer in bangalore |
| No browser | curl_cffi impersonate chrome124 + browserforge headers |
| Live jobapi | Official Naukri search JSON (jobDetails) |
| RSA nkparam | Fresh token per request via cryptography |
| Recency filter | Optional days param |
| Proxy-aware | Optional Apify proxy (IN RESIDENTIAL recommended if blocked) |
Input
| Field | Required | Description |
|---|---|---|
keyword | Yes | Search term (e.g. python developer) |
location | No | City / slug (e.g. bangalore, mumbai) |
maxJobs | No | Cap (default 40, max 500) |
days | No | Only jobs posted within N days |
proxyConfiguration | No | Default off; enable RESIDENTIAL if needed |
Example
{"keyword": "python developer","location": "bangalore","maxJobs": 20,"proxyConfiguration": {"useApifyProxy": false}}
Example with recency
{"keyword": "data analyst","location": "hyderabad","maxJobs": 50,"days": 7}
Output example
{"jobId": "123456789012","title": "Python Developer","companyName": "Acme Technologies Pvt Ltd","salary": "8-12 Lacs P.A.","experience": "2-5 Yrs","location": "Bengaluru","postedLabel": "2 Days Ago","postedAt": "2026-09-18T10:00:00Z","jobUrl": "https://www.naukri.com/job-listings-python-developer-acme-...","description": "We are hiring a Python developer with Django experience...","keyword": "python developer","scrapedAt": "2026-09-20T22:00:00Z","error": false,"errorMessage": null}
Output fields
| Field | Notes |
|---|---|
jobId, title, companyName | Core listing identity |
salary | From placeholders type=salary |
experience | experienceText |
location | From placeholders type=location |
postedLabel, postedAt | Footer label + createdDate (ISO when parseable) |
jobUrl | Absolute URL from jdURL |
description | jobDescription when present in search payload |
keyword, scrapedAt, error, errorMessage | Run metadata |
Quick start (API)
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("YOUR_USERNAME/naukri-india-jobs").call(run_input={"keyword": "python developer","location": "bangalore","maxJobs": 20,"proxyConfiguration": {"useApifyProxy": False},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item.get("title"), item.get("companyName"), item.get("salary"))
Use cases
- India hiring pipelines and agency sourcing lists
- Salary / experience market snapshots by city
- Competitor employer monitoring on Naukri
- Feed ATS / CRM with fresh public listings
- Regional SEO niche: India jobs vs global multi-board scrapers
Limitations
- Public search only: no apply, no login, no CV download.
- Description depth: search
jobDetailsmay include a snippet; full JD detail endpoint is out of v0.1. - Blocking: usually works without proxy; if you see 403, enable Apify RESIDENTIAL (India preferred).
- Pagination: capped by
maxJobs(500) and internal page safety limit. - Respect Naukri Terms of Service and applicable laws when scraping.
FAQ
Do I need a location?
No. Omit location for a broader India-wide keyword search.
How do I get only recent jobs?
Set "days": 7 (or another N) — passed through to Naukri’s days param.
403 / empty results?
Retry with residential proxy. Warm session + fresh nkparam are already handled.
Does this use Playwright?
No. HTTP only (curl_cffi + browserforge + cryptography for RSA).
Icon missing?
Configure the Actor icon in Apify Console when you publish.
Keywords
naukri scraper, naukri jobs api, naukri india jobs export, scrape naukri by keyword location, india job listings dataset, bangalore jobs scraper, naukri salary experience, PPE naukri jobs, india recruitment lead gen, naukri.com jobapi