# Naukri.com Job Scraper \[$5/1K💰] | India Jobs · Salary Data (`ahmed_jasarevic/naukri-job-scraper`) Actor

Extract Indian job listings from Naukri.com — India's #1 job board. Get titles, companies, salary ranges (INR), experience, skills, recruiter names, and full descriptions across Bangalore, Mumbai, Delhi and Hyderabad. Ideal for Indian salary benchmarking and recruitment research.

- **URL**: https://apify.com/ahmed\_jasarevic/naukri-job-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Naukri.com Job Scraper — Indian Job Listings, Salary & Skills Data

Scrape **Naukri.com** — India's #1 job board — to build a structured **India jobs dataset** for
recruitment research, **Indian salary benchmarking**, and skills-demand analysis. Extract job titles,
companies, salary ranges (INR), experience required, locations across Indian cities, key skills,
posted dates, full descriptions, recruiter names, vacancy counts, and AmbitionBox-style company
ratings — all as clean JSON/CSV/Excel, no login or API key required.

### Main Use Cases

- **Indian salary benchmarking** — aggregate salary ranges and CTC by role, seniority and city
- **Skills-in-demand analysis** — mine the `skills` field across thousands of postings to see which
  technologies and roles Indian employers are hiring for
- **IT jobs India data & labour-market research** — track hiring volume and trends across
  Bangalore, Mumbai, Delhi/NCR, Hyderabad, Pune, Chennai and more
- **Recruitment lead generation** — build lists of companies actively hiring (with recruiter names on
  detail scrapes) for staffing firms and HR-SaaS outreach
- **Job aggregation** — power a niche Indian job board or job-matching product with clean listings
- **Competitive hiring intelligence** — monitor which companies are expanding, in which functions and cities

### Collect Indian Job Market Data Without An Official Naukri API

Naukri.com does not offer a public job-listing API. This actor crawls Naukri's public search results
and, optionally, individual job pages, then returns every listing as one flat, normalized row. It
handles pagination automatically (via `maxItems` / `maxPagesPerSearch`) and fans out across every
keyword × city combination you provide. Because Naukri is protected by **Akamai Bot Manager**, the
actor uses Playwright-based, Akamai-friendly techniques and Apify's **residential proxy** — set the
proxy country to **IN** (India) for the most reliable results.

### Input

| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| `searchKeywords` | string/array | **Yes** | — | Job titles, skills, or roles to search, e.g. `"data analyst"` or `["java developer", "devops"]` |
| `locations` | string/array | No | `["india"]` | City/area to narrow search, e.g. `"bangalore"`, `["mumbai","pune"]`; `india` searches all of India |
| `maxItems` | number | No | `50` | Max results across all searches; max `1000` |
| `includeJobDetails` | boolean | No | `true` | Open each job's detail page for the full description, recruiter name and extra fields |
| `maxPagesPerSearch` | number | No | `5` | Max result pages per keyword×city search; max `50` |
| `maxConcurrency` | number | No | `2` | Concurrent page requests; max `5` |
| `proxy` | object | No | Apify residential | Use Apify residential (recommend `countryCode: "IN"`) or your own proxies |

### Example Input

```json
{
  "searchKeywords": "data analyst",
  "locations": ["bangalore", "mumbai", "pune"],
  "maxItems": 200,
  "includeJobDetails": true
}
```

### Output

Each scraped job is one dataset record. Core fields (from search results) include `title`,
`company`, `location`, `salary` (INR), `experience`, `skills`, `postedDate`, `jobUrl`; with
`includeJobDetails: true` you also get the full `description`, `recruiter` name, `vacancyCount`,
company rating/review counts and more. Records are honest about salary — many Naukri postings do not
disclose pay, and that is reflected in the output as given by the source.

### Example Output

```json
{
  "title": "Data Analyst",
  "company": "Tata Consultancy Services",
  "location": "Bangalore / Bengaluru",
  "salary": "4-8 LPA",
  "experience": "2-5 Yrs",
  "skills": ["SQL", "Python", "Power BI", "Excel"],
  "postedDate": "5 days ago",
  "jobUrl": "https://www.naukri.com/job-details/...",
  "recruiter": "Priya Sharma"
}
```

### Scheduling, Monitoring & Automation

Recommended for real value: run on a **weekly schedule** (or daily for hiring-velocity tracking) to
monitor new postings, salary shifts and skills demand over time. Results are available via the Apify
**API**, can be streamed with **webhooks**, and export directly to CSV/JSON/Excel for your
spreadsheets, dashboards, or ATS/CRM.

### Related Actors

- **Reed.co.uk Job Scraper** (own) — UK job listings, salary and talent data
- **SEEK Job Scraper** (own) — Australia & New Zealand job listings, salary and labour-market data
- **LinkedIn Jobs Scraper** (`apify`) — the authoritative global job dataset

Together these cover the three largest English-language job markets — India, UK, and AU/NZ.

### FAQ

#### Why use this actor instead of the Naukri API?

Naukri.com has **no public API** for job listings. This actor delivers the same structured data by
crawling the public site, and it solves the two things that make manual Naukri scraping hard:
**Akamai Bot Manager** protection (handled via Playwright stealth) and **rate/geo blocking** (handled
via India residential proxies). You get a clean, normalized India jobs dataset without maintaining a
scraping stack.

#### What are the alternatives to this actor?

- **Naukri** alternatives on Apify include several community Naukri scrapers and the global
  **LinkedIn Jobs Scraper** and **Indeed Job Scraper** for broader job coverage.
- To extend Indian coverage you can combine this actor with a company-ratings source (the output
  already includes company rating/review counts).

#### How do I benchmark Indian salaries from Naukri data?

Aggregate the `salary` (INR) and `experience` fields by job title and city across a large run
(e.g. `maxItems: 1000`) to build salary bands. Note many Indian employers do **not** disclose pay, so
use disclosed ranges alongside skills and seniority as the salary signal.

#### How do I find in-demand skills in the Indian job market?

Run a high `maxItems` search across the skill keywords you care about (or broad role titles) and
analyze the `skills` arrays to see which technologies appear most across active postings.

#### How do I bypass Naukri Akamai bot protection?

The actor handles Akamai automatically with Playwright-based stealth. Use **Apify residential proxy
with `countryCode: "IN"`** for the most reliable results; non-India traffic is scored more harshly.

### For AI Agents & LLM Apps

**Purpose:** Extracts structured Indian job listings from Naukri.com and returns one record per job
(title, company, location, salary INR, experience, skills, postedDate, jobUrl, optional full
description + recruiter).

**Minimal working input** (searchKeywords is the only required field):

```json
{ "searchKeywords": "data analyst", "maxItems": 50 }
```

**Typical input** (multi-city research):

```json
{ "searchKeywords": ["java developer", "devops"], "locations": ["bangalore", "pune"], "maxItems": 500, "includeJobDetails": true }
```

**Output fields:** `title`, `company`, `location`, `salary`, `experience`, `skills`, `postedDate`,
`jobUrl` (search level); plus `description`, `recruiter`, `vacancyCount`, company rating and review
counts when `includeJobDetails: true`.

**Behaviors an agent should know:**

- `searchKeywords` is **required** — the actor will not run without it.
- `maxItems` caps the whole run (default 50, max 1000); leave unset for quick preview, raise for a
  full dataset. Each returned job is billed.
- `locations` defaults to `["india"]` (all of India); pass specific cities for targeted data.
- `includeJobDetails: true` (default) opens each job's detail page — more accurate but slower/more
  requests; set `false` for fast bulk search summaries.
- Use **Apify residential proxy with `countryCode: "IN"`** for the most reliable results against
  Naukri's Akamai protection.
- Salary is often **not disclosed** by Indian employers on Naukri; treat `salary` as source-provided,
  not guaranteed.

**Billing:** pay-per-result at **$0.005 per job** (~$5 per 1,000 jobs), plus a small start event fee.

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Naukri**
or Info Edge (India) Ltd. It accesses **only publicly available** Naukri job pages — it does not
bypass logins or solve CAPTCHAs. As with all web scraping, you are responsible for your own
compliance with Naukri's Terms of Service and applicable law — including India's **Digital Personal
Data Protection Act (DPDP) 2023** — especially when the output includes recruiter contact names.
Recruiter and company data collected here should not be used for unsolicited commercial outreach that
violates applicable anti-spam or data-protection law. This summary is informational, not legal advice.

### SEO Keywords

naukri.com job scraper, scrape naukri jobs, india job listings data, indian salary benchmarking, india jobs salary data, skills in demand india, it jobs india data, bangalore jobs data, mumbai jobs data, recruitment intelligence india, recruitment lead generation india, job aggregation india, indian labour market analysis, naukri api alternative, india job board data, remote jobs india, hybrid jobs india, naukri akamai bot protection

# Actor input Schema

## `searchKeywords` (type: `string`):

Job title or keywords to search for on Naukri, e.g. "python developer".

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

City or area names to search in (e.g. bangalore, pune, mumbai, delhi-ncr, hyderabad, india for all of India).

## `maxItems` (type: `integer`):

Maximum number of jobs to collect.

## `includeJobDetails` (type: `boolean`):

Open each job's detail page to extract the full description and recruiter info. Slower but more complete. When disabled, only listing-page data is collected.

## `maxPagesPerSearch` (type: `integer`):

Maximum number of result pages to crawl per keyword + location combination.

## `maxConcurrency` (type: `integer`):

Maximum number of concurrent browser pages.

## `proxy` (type: `object`):

Apify Proxy with Residential IPs is recommended to avoid blocking (Naukri is protected by Akamai Bot Manager).

## Actor input object example

```json
{
  "searchKeywords": "software engineer",
  "locations": [
    "india"
  ],
  "maxItems": 50,
  "includeJobDetails": true,
  "maxPagesPerSearch": 5,
  "maxConcurrency": 2,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "searchKeywords": "software engineer",
    "locations": [
        "india"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/naukri-job-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 = {
    "searchKeywords": "software engineer",
    "locations": ["india"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/naukri-job-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 '{
  "searchKeywords": "software engineer",
  "locations": [
    "india"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/naukri-job-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/naukri-job-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/PcuH5Bet8s1UAh7oa/builds/GWfkfKamlXruCcIzj/openapi.json
