# Naukri Jobs Scraper – India Jobs API with Salary (LPA) (`data_daemon/naukri-jobs-scraper`) Actor

$0.80 per 1,000 jobs, full details included | Naukri.com jobs by keyword, city, experience and date, or every new job on the board (~12,000 a day). Salary in LPA, skills, applicants, views, AmbitionBox rating, description. Only-new mode for daily feeds. No login, no proxy.

- **URL**: https://apify.com/data_daemon/naukri-jobs-scraper.md
- **Developed by:** [Daemon Data](https://apify.com/data_daemon) (community)
- **Categories:** Jobs, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.56 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Naukri Jobs Scraper** extracts jobs from [Naukri.com](https://www.naukri.com), India's largest job board, as clean JSON: title, company, city, work mode, experience, **salary in rupees and LPA**, skills, applicants, views, role, industry, AmbitionBox rating and the **full description**. Search by keyword, city, experience and posting date, or export **every new job on the board** (about 12,000 a day) for a daily jobs feed. No login, no cookies, no proxy.

Run it in Apify Console, call it through the API, schedule it, or connect it to Google Sheets, Zapier, Make, n8n or an AI agent through the Apify MCP server.

### What does Naukri Jobs Scraper do?

- **Keyword search:** one or more keywords (job titles, skills or companies) in one or more Indian cities, with experience, work mode and posting-date filters.
- **Whole-board export:** turn on **All jobs** to get every job posted on Naukri in the last N days. Naukri's search stops paging at about 15,000 results, so large exports are split automatically by job function and city and merged without duplicates.
- **Only new jobs:** schedule a daily run with **Only new jobs since the last run** and each run returns only jobs you have not received before. Skipped jobs are not charged.
- **Full details included:** the description, applicants, views, role, function, industry, education, employment type, openings and the company's website and address come from each job page **at no extra charge**.

### Why scrape Naukri jobs?

- **Job aggregators and job boards:** a complete daily feed of new Indian jobs in one schema.
- **Recruiters and staffing firms:** see which companies are hiring for which roles and cities, and how many people already applied.
- **HR analytics and salary research:** salary bands in LPA by role, city and experience; demand by skill.
- **Sales teams:** companies that are hiring are companies that are growing; use hiring as a buying signal.
- **AI agents and job-search tools:** fresh Indian jobs as structured data through the API or MCP.

### How to scrape Naukri jobs

1. Open the **Input** tab.
2. Enter keywords such as `data analyst` or `java developer`, and optionally cities such as `Bangalore` or `Pune`. Or turn on **All jobs** for the whole board.
3. Set **Posted within (days)** to 1 for a daily feed, and optionally turn on **Only new jobs since the last run**.
4. Click **Start**. Results appear in the **Output** tab; download them as JSON, CSV, Excel or XML, or read them through the API.
5. To keep a feed going, save the input as a task and add a daily schedule.

### Input example

```json
{
  "queries": ["data analyst", "business analyst"],
  "locations": ["Bangalore", "Pune"],
  "postedWithinDays": 3,
  "experienceYears": 3,
  "workModes": ["hybrid", "remote"],
  "keywordInTitle": true,
  "maxJobsPerQuery": 200
}
```

Whole board, newest jobs of the last day, only jobs not delivered before:

```json
{
  "allJobs": true,
  "postedWithinDays": 1,
  "onlyNewSinceLastRun": true,
  "includeDescription": false
}
```

### Output example

A real row (description shortened); `descriptionHtml` holds the same text as HTML.

```json
{
  "id": "271026018499",
  "dedupKey": "naukri:271026018499",
  "url": "https://www.naukri.com/job-listings-data-analyst-renaissance-academy-of-wisdom-bengaluru-0-to-3-years-271026018499",
  "title": "Data Analyst",
  "company": {
    "name": "Renaissance Academy Of Wisdom",
    "id": 125528420,
    "groupId": 11195954,
    "logo": "https://img.naukimg.com/logo_images/groups/v1/11195954.gif",
    "website": null,
    "address": "Building No./Flat No .: Flat No-19-D, Road/Street:   Sector 7, Dwarka Sec-6, Locality/Sub Locality: S o  uth West Delhi, City/Town/Village: New Delhi, District: South West Delhi, State: Delhi, Pin Code:, NEW DELHI, Delhi, India",
    "ambitionBoxRating": 3.8,
    "ambitionBoxReviews": 22,
    "ambitionBoxUrl": "https://www.ambitionbox.com/reviews/renaissance-academy-of-wisdom-reviews"
  },
  "experienceMinYears": 0,
  "experienceMaxYears": 3,
  "experienceText": "0-3 Yrs",
  "salaryMinInr": 300000,
  "salaryMaxInr": 750000,
  "salaryMinLpa": 3,
  "salaryMaxLpa": 7.5,
  "salaryHidden": false,
  "salaryText": "3-7.5 Lacs",
  "locations": [
    "Bengaluru"
  ],
  "locationText": "Hybrid - Bengaluru",
  "workMode": "hybrid",
  "skills": [
    "Data Analytics",
    "Machine Learning",
    "Python",
    "SQL",
    "Power BI"
  ],
  "roleCategory": "Data Science & Machine Learning",
  "role": "Data Scientist",
  "functionalArea": "Data Science & Analytics",
  "industry": "Analytics / KPO / Research",
  "employmentType": "Full Time, Permanent",
  "education": {
    "ug": [
      "Any Graduate"
    ],
    "pg": [],
    "doctorate": []
  },
  "openings": 2,
  "applicants": 31983,
  "views": 41432,
  "postedByConsultant": false,
  "walkIn": false,
  "postedAt": "2026-10-27T07:31:59.657Z",
  "summary": "Bachelor's or master's degree in relevant field with expertise in SQL, Python, Power BI/Tableau, data quality, and repor ...",
  "description": "Position summary
Renaissance Academy of Wisdom Private Limited is seeking a detail-oriented, analytical, and technically proficient Data Analyst SE to support d ...",
  "query": "data analyst",
  "scrapedAt": "2026-11-04T08:42:30.588Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data fields

| Field | Description |
|---|---|
| `id`, `dedupKey`, `url` | Naukri job ID, a stable `naukri:<id>` key for your database, and the job page |
| `title`, `company` | Job title; company name, IDs, logo, website, address and AmbitionBox rating |
| `experienceMinYears`, `experienceMaxYears`, `experienceText` | Experience range |
| `salaryMinInr`, `salaryMaxInr`, `salaryMinLpa`, `salaryMaxLpa`, `salaryHidden`, `salaryText` | Yearly salary in rupees and LPA; Naukri employers disclose it on about a third (data analyst searches) to over half (all new jobs, 4 Nov 2026) of jobs |
| `locations`, `locationText`, `workMode` | Cities and office / hybrid / remote |
| `skills` | Key skills |
| `roleCategory`, `role`, `functionalArea`, `industry`, `employmentType`, `education` | Classification from the job page |
| `openings`, `applicants`, `views` | Openings, applications so far and page views |
| `postedByConsultant`, `walkIn` | Posted by a recruitment consultant; walk-in interview |
| `postedAt`, `summary`, `description`, `descriptionHtml` | Posting time, short summary and full description |

### How much does it cost to scrape Naukri?

This Actor uses pay-per-event pricing: **$0.80 per 1,000 jobs** plus **$0.001 per run**, with the full description and job-page details included. There is no separate charge for platform usage. Jobs skipped in only-new mode, listed in `skipJobIds` or left out by the title filter are not charged. Higher Apify plans get the Store discount automatically.

| Run | Jobs | Cost |
|---|---:|---:|
| One keyword, one city | 100 | about $0.08 |
| 10 keywords x 3 cities | 3,000 | about $2.40 |
| Every new job of one day (whole board) | ~12,000 | about $9.70 |

Set **Maximum cost per run** in the run options to cap any run; the Actor stops cleanly at the limit and keeps everything it saved.

### Tips

- **Daily feed of all Indian jobs:** All jobs + Posted within 1 day + Only new jobs, scheduled once or twice a day. Turn descriptions off if you only need the search-card fields; the run is then several times faster.
- **Relevant results:** Naukri's keyword match is broad (a search for `data analyst` also returns "Risk Analyst" or "Operations Manager"). Keep **Sort by** on Relevance, or turn on **Keyword must be in the job title**.
- **Many cities:** each city is its own search, so `maxJobsPerQuery` applies per keyword and city.
- **Run summary:** the `RUN-SUMMARY` record in the key-value store lists found, new, skipped and charged counts for each run.

### FAQ

**Do I need a Naukri account or a proxy?** No. The Actor reads Naukri's public job search and job pages without logging in, and needs no proxy.

**How fresh is the data?** Every run reads Naukri live. `postedAt` is Naukri's own posting time.

**Is scraping Naukri legal?** The Actor collects publicly visible job postings and no personal data about candidates. Recruiter names and contact details are not collected. Check that your use complies with the laws and terms that apply to you.

**Something is missing or broken?** Open an issue on the **Issues** tab with the input you used and we will look at it.

### Related Actors by Daemon Data

- [India Jobs Feed](https://apify.com/data_daemon/india-jobs-feed) – one search across nine Indian job boards in one schema, salary in LPA, duplicates removed
- [IIMJobs Jobs Scraper](https://apify.com/data_daemon/iimjobs-jobs-scraper) – MBA, finance, consulting and management jobs with salary in LPA
- [Hirist Jobs Scraper](https://apify.com/data_daemon/hirist-jobs-scraper) – Indian tech jobs (developers, data, DevOps) with salary and skills
- [foundit Jobs Scraper](https://apify.com/data_daemon/foundit-jobs-scraper) – foundit (Monster India) jobs by keyword, city and experience
- [Shine Jobs Scraper](https://apify.com/data_daemon/shine-jobs-scraper) – Shine.com jobs with salary, experience and skills
- [Apna Jobs Scraper](https://apify.com/data_daemon/apna-jobs-scraper) – Apna blue- and grey-collar jobs with monthly salary and locality

More data tools: [Daemon Data on Apify](https://apify.com/data_daemon)

# Actor input Schema

## `queries` (type: `array`):

Job titles, skills or company names, one search each (e.g. `data analyst`, `java developer`, `Infosys`). Leave empty and turn on **All jobs** to export the whole board.

## `allJobs` (type: `boolean`):

Export every job posted on Naukri in the posting window instead of keyword searches (about 12,000 new jobs a day). Searches larger than Naukri's paging limit (~15,000) are split automatically by job function and city. If `postedWithinDays` is empty it is set to 1.

## `locations` (type: `array`):

Cities to search, one search per city (e.g. `Bangalore`, `Mumbai`, `Delhi`, `Pune`, `Hyderabad`, `Remote`). Empty = all of India.

## `experienceYears` (type: `integer`):

Only jobs open to a candidate with this many years of experience (Naukri's experience filter).

## `workModes` (type: `array`):

Only jobs with these work modes. Empty = all.

## `postedWithinDays` (type: `integer`):

Only jobs posted in the last N days (1-30). Empty = any date (up to Naukri's 30-day window).

## `sortBy` (type: `string`):

Relevance (default) puts true keyword matches first; Naukri's date order mixes in loosely related jobs. All jobs always runs newest first.

## `keywordInTitle` (type: `boolean`):

Keep only jobs whose title contains every word of the keyword (e.g. `data analyst` keeps "Senior Data Analyst", drops "Business Analyst"). Left-out jobs are not charged. Off by default.

## `includeDescription` (type: `boolean`):

On (default): opens each job for the full description, applicants, views, role, function, industry, education, employment type and the company's website and address, at no extra charge. Off: faster, search-card fields only (title, company, salary, experience, city, skills, short summary).

## `maxJobsPerQuery` (type: `integer`):

Stop each keyword (per city) after this many jobs. Not used with All jobs.

## `maxJobs` (type: `integer`):

Stop the run after this many jobs in total. 0 = no limit (the run's maximum cost still applies).

## `onlyNewSinceLastRun` (type: `boolean`):

On: deliver only jobs that an earlier run with the same `stateName` (or the same search) has not delivered, and skip the rest without charging. If `postedWithinDays` is empty it is set to 3. Off (default): return every matching job.

## `stateName` (type: `string`):

Optional name for the only-new memory, e.g. `bangalore-data-jobs`. Runs with the same name share one memory. Empty = derived from the keywords, cities, experience and work mode.

## `skipJobIds` (type: `array`):

Naukri job IDs you already have (the `id` field, e.g. `041126017601`); they are skipped and not charged.

## `proxyConfiguration` (type: `object`):

Optional, none by default. Naukri's job API does not block datacenter IPs, so no proxy is needed.

## Actor input object example

```json
{
  "queries": [
    "data analyst"
  ],
  "allJobs": false,
  "locations": [],
  "workModes": [],
  "sortBy": "relevance",
  "keywordInTitle": false,
  "includeDescription": true,
  "maxJobsPerQuery": 100,
  "maxJobs": 0,
  "onlyNewSinceLastRun": false,
  "skipJobIds": []
}
```

# Actor output Schema

## `dataset` (type: `string`):

Jobs as JSON items in the default dataset (also downloadable as CSV, Excel, XML).

## `runSummary` (type: `string`):

RUN-SUMMARY record: searches, jobs found, new, skipped (already delivered / skipJobIds), split searches and charged counts.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "data analyst"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_daemon/naukri-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["data analyst"] }

# Run the Actor and wait for it to finish
run = client.actor("data_daemon/naukri-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "data analyst"
  ]
}' |
apify call data_daemon/naukri-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_daemon/naukri-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DOYOSKHQvhLynNBd7/builds/KcKmo241KfTYW2MKw/openapi.json
