Naukri job search
Jobs on Naukri.com (India) for a keyword and/or location, with the site's filters: experience, salary band, freshness, work mode, sort, and every facet the results page offers. total is Naukri's count. Facets come back in facets (work mode, location, salary, company, industry, department, role, education, company type, posted by…) with counts; pass a value's filter (e.g. cityTypeGid:97) back as filter (repeatable, or several joined with ;). Each job: id, title, company, company_id, group_id, company_jobs_slug (for /naukri/v1/company/jobs), logo, url, experience (min, max, label), salary (label, min, max in INR per year, hidden), location, locations, work_mode, skills, snippet, posted_at, posted_label, openings, walk_in, company_rating and company_reviews (AmbitionBox), promoted and raw (the site's record). Pass next_page back as page; null on the last page. Named filters (industry, department, role, education, company_type, company, city ...) take the ids shown in facets and work like filter.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
q | string | Keywords (role, skill or company), e.g. python developer. Required unless location is given. Example: python developer |
location | string | City or area, e.g. bangalore, pune, delhi-ncr. Example: bangalore |
experience | integer | Years of experience the job must accept (0-30). |
salary | string | Salary bands (lakhs per year), comma-separated: 0to3, 3to6, 6to10, 10to15, 15to25, 25to50, 50to75, 75to100, 100to500. |
freshness | 1 | 3 | 7 | 15 | 30 | Posted within this many days. |
work_mode | string | Comma-separated: office, remote, hybrid, temp_wfh. |
sort | relevance | date | Order. |
filter | string | More filters as key:value from facets[].values[].filter, e.g. qctopGroupId:10476 (a company) or industryTypeIdGid:109. Repeatable. |
page | integer | Page number (20 jobs per page). Pass next_page from the previous response; null on the last page. |
industry | string | Industry ids from the industry facet (facets[].values[].id), comma-separated. |
department | string | Department (functional area) ids from facets, comma-separated. |
role | string | Role ids from facets, comma-separated. |
role_category | string | Role category ids from facets, comma-separated. |
education | string | Graduate (UG) course ids from facets, comma-separated. |
pg_education | string | Postgraduate course ids from facets, comma-separated. |
company_type | string | Company type (business size) ids from facets, comma-separated. |
company | string | Featured company ids from facets, comma-separated. |
top_company_group | string | Company group ids from the companies facet, comma-separated. |
city | string | City ids from the location facet, comma-separated. |
job_type | string | Job type ids from facets, comma-separated. |
employment_type | string | Employment type ids from facets, comma-separated. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/naukri/v1/search?q=python+developer" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/naukri/v1/search",
params={"q": "python developer"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/naukri/v1/search");
url.searchParams.set("q", "python developer");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).