NaukriAnswer

Does Naukri have an API? Naukri job data as JSON

Naukri has no public API for job search; its integrations serve recruiters. Ours returns 20 jobs a page with salary and skills, at 1 credit a call.

5 min read

Short answer

  • Naukri has no public job search API, no developer portal and no self-serve key. Its integrations connect recruiter software to Naukri's own hiring tools.
  • In date order Naukri matches a search loosely, so only 9 of the first 20 python developer jobs mentioned Python. Relevance order matched all 20.
  • ToolzerHub's /v1/naukri/search returns 20 jobs a page with salary, skills and the company's AmbitionBox rating, and /v1/naukri/job returns a full posting, at 1 credit a call.
On this page

Naukri has no public API for job search. There is no developer portal and no key to sign up for, and its integrations serve recruiters who post jobs and screen applicants. To pull Naukri jobs as data, use our Naukri API; the script below saves a search to CSV.

What Naukri's API is for

Naukri sells hiring tools to employers, and its recruiter software, Naukri RMS, connects to partner products such as HackerEarth's assessments. Nothing is published for developers: developer.naukri.com, developers.naukri.com and api.naukri.com do not resolve. That is software for running your own hiring, not a way to search other employers' jobs.

Naukri jobs with ToolzerHub

We make ToolzerHub. Our Naukri API has two routes, each a GET with the x-api-key header at 1 credit a call:

  • /v1/naukri/search?query=...&location=... returns 20 jobs a page. Optional filters: experience_years, work_mode (office, remote or hybrid), posted_within_days (1, 3, 7, 15 or 30), sort and page.
  • /v1/naukri/job?job_id_or_url=... takes a job link or its 12-digit ID and returns the full posting: description, key skills, education, role, industry, applicant count and the company profile. An expired posting returns data: null.
bash
export TOOLZERHUB_API_KEY=your_key
curl -G -H "x-api-key: $TOOLZERHUB_API_KEY" \
  --data-urlencode "query=python developer" \
  "https://api.toolzerhub.com/v1/naukri/search"

The first job in data.results, trimmed:

json
{
  "job_id": "041126009125",
  "title": "Python Developer",
  "url": "https://www.naukri.com/job-listings-python-developer-mphasis-gurugram-bengaluru-8-to-10-years-041126009125",
  "company": {
    "name": "Mphasis",
    "rating": 3.2,
    "reviews_count": 11374
  },
  "locations": ["Gurugram", "Bengaluru"],
  "experience": { "min_years": 8, "max_years": 10, "label": "8-10 Yrs" },
  "salary": { "min": null, "max": null, "currency": "INR", "label": "Not disclosed", "disclosed": false },
  "skills": ["Artificial Intelligence", "Cd", "Glue", "SQL", "Python", "AWS", "Ml", "Python Development"],
  "posted_at": "2026-11-04T09:58:30+05:30"
}

A salary shown as "8-12 Lacs PA" comes back as min 800000 and max 1200000 in rupees, so you don't parse lakhs yourself. A hidden salary is disclosed: false with no figures, never zero.

Relevance or newest first

Sort order decides how closely the jobs match. In date order Naukri matches a search loosely: on page 1 of "python developer", 9 of 20 jobs had Python in the title or skills and 2 in the title. Relevance order had it in all 20 titles, and "data analyst" went from 10 of 20 to 20 of 20 the same way.

Relevance is the default, as on naukri.com. Its pages can repeat a few jobs from the page before (2 to 7 in three pages of "python developer"), so the script keeps each job_id once.

Relevance order does not drop old jobs. Five pages of "data analyst" in Mumbai with no age filter gave 98 dated jobs, and 42 of them were posted more than 30 days earlier, 28 more than 90 days. The script sets posted_within_days=30 to keep the list current.

Save Naukri jobs to CSV

The script pages through one search limited to the last 30 days, skips jobs it has already written, and saves one row per job with the company, its rating, location, experience, salary range in rupees, skills and posting time. Save it as naukri_jobs.py and install requests (pip install requests).

python
import csv
import os
import sys

import requests

API = "https://api.toolzerhub.com/v1/naukri/search"
HEADERS = {"x-api-key": os.environ["TOOLZERHUB_API_KEY"]}


def search(query, location="", pages=5, days=30):
    seen = set()
    for page in range(1, pages + 1):
        params = {"query": query, "location": location, "page": page,
                  "posted_within_days": days}
        body = requests.get(API, headers=HEADERS, params=params, timeout=60).json()["data"]
        for job in body["results"]:
            if job["job_id"] not in seen:
                seen.add(job["job_id"])
                yield job
        if not body["has_more"]:
            break


def main():
    query, location = sys.argv[1], (sys.argv[2] if len(sys.argv) > 2 else "")
    fields = ["job_id", "title", "company", "rating", "locations", "experience",
              "salary", "salary_min", "salary_max", "skills", "posted_at", "url"]
    with open("naukri_jobs.csv", "w", newline="", encoding="utf-8") as out:
        writer = csv.DictWriter(out, fieldnames=fields)
        writer.writeheader()
        count = 0
        for job in search(query, location):
            writer.writerow({
                "job_id": job["job_id"],
                "title": job["title"],
                "company": job["company"]["name"],
                "rating": job["company"]["rating"],
                "locations": "; ".join(job["locations"]),
                "experience": job["experience"]["label"],
                "salary": job["salary"]["label"],
                "salary_min": job["salary"]["min"],
                "salary_max": job["salary"]["max"],
                "skills": "; ".join(job["skills"]),
                "posted_at": job["posted_at"],
                "url": job["url"],
            })
            count += 1
    print(f"saved {count} jobs to naukri_jobs.csv")


if __name__ == "__main__":
    main()

python naukri_jobs.py "data analyst" Mumbai saved 100 jobs from 78 companies in 12 seconds, and python naukri_jobs.py "python developer" Bangalore saved 100 from 43 companies in 12 seconds.

What the jobs show

  • The searches stayed on topic: 94 of the 100 data analyst jobs had both words in the title, such as "Data Governance Analyst", and all 100 python developer jobs had Python in the title.
  • One employer can fill a search. Infosys posted 33 of the 100 python developer jobs in Bangalore; no data analyst employer in Mumbai had more than 7.
  • Most salaries are hidden. 33 data analyst jobs showed one, with a median midpoint of ₹8.0 lakh a year and midpoints from ₹1.8 to 16.0 lakh. 20 python developer jobs did, with a median midpoint of ₹19.0 lakh and midpoints from ₹8.0 to 42.5 lakh.
  • 68 and 76 of the jobs carried an AmbitionBox rating for the company, with medians of 3.7 and 3.5.
  • The most common skill tags were Data analysis (45 jobs), SQL (30) and Power BI (17) for data analysts, and Python (72) and Django (34) for python developers.

What it costs

A search of five pages costs 5 credits and returns up to 100 jobs; a full posting is 1 more credit each. The 100 free credits a month cover 20 such searches; $19 buys 10,000 credits that never expire, and plans for higher volume cover more searches. Set your key and the first search is a CSV in under a minute.

For other job boards, see Upwork jobs as JSON, Internshala internships, Hiring.cafe jobs as JSON, the Indeed API, Seek job ads as JSON and the LinkedIn jobs API.

We are not affiliated with Naukri.

Get this data from your own code

The Naukri API returns it as JSON with one x-api-key header. 100 free credits monthly.