# Naukri Jobs Scraper - $0.80/1000 Jobs (`scrapeunblocker/naukri-scraper`) Actor

Scrape Naukri job listings as JSON: title, company, location, work mode, experience, salary, skills, company rating, posted date and job URL. India's largest job board, with pagination and filters by location, experience, posting age and remote. Powered by ScrapeUnblocker.

- **URL**: https://apify.com/scrapeunblocker/naukri-scraper.md
- **Developed by:** [Scrapeunblocker](https://apify.com/scrapeunblocker) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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.

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

Scrape **Naukri.com job listings** as clean, structured JSON - title, company, location, work mode, experience range, salary, skills, company rating, posted date and a direct job URL. Naukri is India's largest job board; this actor pages through its search and returns every job as a dataset item. No Naukri API key.

Powered by [ScrapeUnblocker](https://scrapeunblocker.com)'s anti-bot bypass - no proxies or CAPTCHA setup.

### What you get per job

- **Title** and a clean job **URL**
- **Company**, company profile **URL**, **AmbitionBox rating** and **review count**
- **Experience** range (text + parsed `experienceMinYears` / `experienceMaxYears`)
- **Location** (list of cities) and **work mode** - hybrid, remote or on-site (`workFromHome` flag)
- **Salary** when disclosed (text + parsed `min` / `max` and unit, e.g. Lacs PA)
- **Skills / tags**, a **description** snippet, the **posted date** and the company **logo**

### Features

- **India's biggest job board** - millions of live listings across every city and role.
- **Automatic pagination** - set `max_results` and the scraper pages through Naukri until it collects that many (~20 per page).
- **Filters** - `location` (city), `experience` (years), `days` (posting age: 1 / 3 / 7 / 15 / 30) and `remote`.
- **Sorting** - by relevance or by date (newest first).

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `keyword` | string | **required** | What to search, e.g. `python developer`. |
| `location` | string | - | City, e.g. `Bangalore`. Blank = all of India. |
| `max_results` | integer | 40 | How many jobs to collect (~20 per page). |
| `sort` | select | Relevance | `relevance` or `date`. |
| `experience` | integer | - | Candidate experience in years (0-30). |
| `days` | select | Any time | Posting age: 1, 3, 7, 15 or 30 days. |
| `remote` | boolean | false | Only work-from-home / remote jobs. |
| `proxy_country` | string | - | Exit-IP country (ISO-2), or blank for a smart exit. |

### Example output (one dataset item)

```json
{
  "jobId": "030926011737",
  "title": "Python Developer",
  "url": "https://www.naukri.com/job-listings-python-developer-tech-mahindra-pune-5-to-10-years-030926011737",
  "company": "Tech Mahindra",
  "companyUrl": "https://www.naukri.com/tech-mahindra-jobs-careers-1066",
  "companyRating": 3.3,
  "reviewsCount": 45598,
  "experience": "5-10 Yrs",
  "experienceMinYears": 5,
  "experienceMaxYears": 10,
  "location": "Hybrid - Pune",
  "locations": ["Pune"],
  "workMode": "hybrid",
  "workFromHome": true,
  "salary": { "text": "10-20 Lacs PA", "min": 10, "max": 20, "unit": "lacs_pa" },
  "skills": ["Angular", "Python", "SQL", "Python Development"],
  "description": "Experience with version control systems, preferably Git...",
  "postedDate": "6 days ago",
  "companyLogo": "https://img.naukimg.com/logo_images/groups/v1/2114.gif"
}
```

### Use cases

- **India job-market intelligence** - track roles, salary ranges, in-demand skills and hiring companies across cities and functions.
- **Recruiting and sourcing** - pull matching openings by keyword, city and experience, deduplicated by job id, straight into your workflow.
- **ATS / job-aggregator feeds** - keep an aggregator or careers board fresh with structured Naukri listings and clean job URLs.
- **Competitive hiring analysis** - see who is hiring for what, at what experience level, and how recently.

### Pricing

$3 per 1,000 jobs - full listing detail (skills, experience, salary and company rating) included, with no proxy or anti-bot setup.

***

Built on [ScrapeUnblocker](https://scrapeunblocker.com). Questions? [docs.scrapeunblocker.com](https://docs.scrapeunblocker.com)

# Actor input Schema

## `keyword` (type: `string`):

What to search, e.g. 'python developer' or 'data analyst'.

## `location` (type: `string`):

City to search in, e.g. 'Bangalore' or 'Mumbai'. Leave blank for all of India.

## `max_results` (type: `integer`):

How many jobs to collect across pages (~20 per page).

## `sort` (type: `string`):

Ordering of the results.

## `experience` (type: `integer`):

Candidate experience in years (0-30). Leave blank for any.

## `days` (type: `string`):

Only jobs posted within this many days.

## `remote` (type: `boolean`):

Only work-from-home / remote jobs.

## `proxy_country` (type: `string`):

Exit-IP country (ISO-2). Leave blank for a smart exit.

## Actor input object example

```json
{
  "keyword": "python developer",
  "max_results": 40,
  "sort": "relevance",
  "days": "",
  "remote": false
}
```

# Actor output Schema

## `items` (type: `string`):

Collected job listings

# 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 = {
    "keyword": "python developer"
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapeunblocker/naukri-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 = { "keyword": "python developer" }

# Run the Actor and wait for it to finish
run = client.actor("scrapeunblocker/naukri-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 '{
  "keyword": "python developer"
}' |
apify call scrapeunblocker/naukri-scraper --silent --output-dataset

```

## MCP server setup

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