Apify Store
AS
Apify Store
/blackfalcondata/naukri-jobs-feed

Naukri Job Scraper 💰 Just $0.27/1k - Salary, Skills & Detail

Naukri Job Scraper for naukri.com: India's largest job board (500K+ listings). Salary, walk-in contacts, skills, company profiles, full descriptions. Just $0.27/1K on paid plans; $0.39/1K free, no mon

liveasyncunknown~30s typical
jobslead generationautomationnaukrifeed
$0.00049
per result + $0.005 call
plus $0.001 platform fee per run
Actor charges $0.00039 per result; Cracked adds 25% plus a $0.005 call fee
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /blackfalcondata/naukri-jobs-feed for me.

Input

FieldTypeDescription
keywordstringCanonical job search keyword (e.g. 'python developer', 'data analyst'). Not required if jobIds, startUrls, companyGroupIds, or searchQueries is provided. Compatibility: `query` is accepted as an alias for `keyword`.
searchQueriesarrayRun one search task per entry — useful for batching related searches in a single run. `maxResults` is a GLOBAL cap across the union of all queries (not per-query); under that cap, earlier queries in the list have scheduling priority. Whitespace-only entries are ignored, and exact duplicates are deduplicated (preserving order of first occurrence). Mutually exclusive with `keyword`: if both are supplied, canonical `keyword` wins and searchQueries is ignored. Results dedupe by jobId across queries.
skillsarrayFilter by skill names (e.g. ['Python', 'Django', 'AWS']). Appended to the search keyword for server-side matching.
jobIdsarrayFetch specific jobs by their Naukri job IDs (skips keyword search). Each ID is fetched individually.
startUrlsarrayPaste any naukri.com URL straight from your browser. Four shapes work: (1) single-job pages like https://www.naukri.com/job-listings-...-220426501512, (2) search-results like https://www.naukri.com/jobs?keyword=devops&location=mumbai, (3) 'X jobs in Y' SEO URLs like https://www.naukri.com/python-developer-jobs-in-bangalore (optionally -1-to-3-years), and (4) keyword-only SEO URLs like https://www.naukri.com/python-developer-jobs. Mix freely with keyword and jobIds; results dedupe by jobId.
ignoreUrlFailuresbooleanWhen true (default), unparseable startUrls are logged and skipped. When false, the run fails fast on the first bad URL. default true
locationstringFilter by location (e.g. 'Bangalore', 'Mumbai', 'Delhi')
experiencestringConvenient shortcut for the experience filter. Accepts ranges like "0-1", "3-6", "10-15", open-ended "5+", a single integer like "2", or labels: fresher, entry, junior, mid, senior, lead. Fans out to experienceMin + experienceMax. If you also supply experienceMin/experienceMax, those win.
experienceMinintegerMinimum years of experience. Most users should set the `experience` shortcut above instead — only use this for explicit numeric control.
experienceMaxintegerMaximum years of experience. Most users should set the `experience` shortcut above instead — only use this for explicit numeric control.
salarystring (0to3 | 3to6 | 6to10 | 10to15 | 15to25 | 25to50)Salary range filter in lakhs per annum. Note: Naukri's API does not enforce this filter strictly — many matched jobs still hide their actual salary (salaryDetail.hideSalary=true).
sortBystring (relevance | date)Sort results by relevance or posting date
workModestring (office | remote | hybrid | temporary_wfh)Filter by work arrangement
freshnessintegerOnly show jobs posted within this many days (1, 3, 7, 15, or 30). Compatibility: `freshnessInDays` is accepted as an alias.
datePostedstringConvenient shortcut for the freshness filter. Accepts integer days ("7"), shorthand like "24h", "7d", "30d", or labels: today, yesterday, week, fortnight, month, quarter (the last|past|this prefix is tolerated, e.g. "last_week"). Coerces to integer days. If you also supply freshness, that wins.
roleCategorystringPost-filter by role category (e.g. 'Software Engineering', 'Data Science', 'Sales'). Partial match, case-insensitive. Requires fetchDetails.
industrystringPost-filter by industry (e.g. 'IT Services', 'Banking', 'Healthcare'). Partial match, case-insensitive. Requires fetchDetails.
cityTypeGidintegerFilter by Naukri city ID (e.g. 97 for Bengaluru, 17 for Hyderabad, 139 for Pune). Stronger filter than the free-text 'location' field. IDs come from the citiesGid cluster in taxonomy_clusters.json.
groupIdintegerFilter to a single company group (e.g. 10476 for Accenture, 223346 for TCS). IDs come from the topGroupId cluster in taxonomy_clusters.json.
companyIdintegerFilter to a specific company entity (e.g. 1354 for Virtusa, 6762 for Conduent). Different ID-space from groupId — companyId targets a single entity, groupId targets a parent group with subsidiaries. IDs come from the featuredCompanies cluster.
companyGroupIdsarrayCrawl multiple company groups in parallel by ID. Each ID becomes its own search seed with independent pagination. IDs from the 1892-company prefetch seed (taxonomy_seed_v4.json) are verified compatible. Mutually exclusive with single groupId.
companyTypearrayServer-side filter by company type (multi-select). Common IDs: 213=Foreign MNC, 211=Corporate, 217=Indian MNC, 62=Startup, 215=Govt/PSU, 60=MNC. Best-effort — Naukri's mobile API may interpret inconsistently.
postedBystring (Both | Company | Consultant)Filter by who posted the job. Verified client-side via the `consultant` field — reliable. "Company" drops recruiter/consultant listings (recruiter-spam-filter); "Consultant" keeps only consultant-posted; "Both" (default) returns all.
departmentIdsarrayServer-side filter by department (multi-select). E.g. 5=Engineering-SW&QA, 3=Data Science, 14=Sales. See Naukri's filter list for full ID set. Best-effort.
roleCategoryIdsarrayServer-side role-category filter via Naukri's roleCategoryGid (e.g. 1028=Software Development, 1067=Data Science). Distinct from `roleCategory` text filter (which is client-side post-filter on detail). Use IDs for fast server-side narrowing. Best-effort.
ugCoursearrayFilter by undergraduate course/degree (multi-select). E.g. "37"=B.Com, "5"=B.Tech. Niche filter for university recruiting.
pgCoursearrayFilter by postgraduate course/degree (multi-select). E.g. "8"=MBA, "22"=M.Tech.
stipendarrayFilter internship listings by stipend bracket. Naukri taxonomy IDs.
durationarrayFilter internship listings by duration bracket. Naukri taxonomy IDs.
topCompaniesarrayFilter to Naukri's curated top-employer lists (multi-select). Naukri taxonomy IDs.
fetchDetailsbooleanFetch full job details. Enables: description, roleCategory, functionalArea, jobRole, employmentType, educationUG, educationPG, applyCount, vacancy, workMode, companyDescription, companyWebsite, plus AmbitionBox reviews/salaries/benefits and walk-in details. Slower — one extra request per job.
maxResultsintegerMaximum number of jobs to return (0 = unlimited). Compatibility: `limit` and `maxItems` are accepted as aliases. default 25
compactbooleanReturn only core fields (jobId, title, company, location, salary, experience, skills, createdDate, portalUrl, description). Ideal for AI agents and MCP workflows. default false
excludeEmptyFieldsbooleanDrop null / empty-string / empty-array fields (and fully-null nested objects) from each output record. Off by default to preserve dataset schema compatibility; turn on to slim output for LLM / agent consumption. default false
descriptionMaxLengthintegerTruncate job descriptions to this many characters (0 or empty = no truncation)
incrementalbooleanOnly return new or changed jobs since last run (state scoped per keyword+location). Tracks NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED classifications across runs.
stateKeystringOverride the incremental state key. By default scoped to keyword+location. Use this to isolate state for different workflows using the same query. Concurrent runs with the same stateKey are blocked by a soft 30-min lock to prevent state corruption.
skipRepostsbooleanExclude listings detected as reposts of previously seen jobs (matched by content hash). default false
emitUnchangedbooleanIncremental only — also emit jobs that are still in the SERP but whose tracked content has not changed since last run. default false
emitExpiredbooleanIncremental only — also emit jobs that were present last run but are gone this run (marks them as EXPIRED). default false

Call it

curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
  -H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
  -d '{"provider":"apify","endpoint":"/blackfalcondata/naukri-jobs-feed","input":{"keyword":"python developer","maxResults":3,"maxConcurrency":3,"descriptionFormat":"all"},"wait":false}'
poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."
cli
npx cracked-ai run -p apify -e /blackfalcondata/naukri-jobs-feed -i '{"keyword":"python developer","maxResults":3,"maxConcurrency":3,"descriptionFormat":"all"}' -w 120
mcp
run_tool({ provider: "apify", endpoint: "/blackfalcondata/naukri-jobs-feed", input: {"keyword":"python developer","maxResults":3,"maxConcurrency":3,"descriptionFormat":"all"}, wait: false })

Try it

Runs against your signed-in workspace balance. Sign in if you have not.