# Naukri Jobs Scraper — India Jobs, Skills & Experience API (`sian.agency/naukri-jobs-scraper`) Actor

Naukri jobs scraper and India job data API. Extract job postings: title, company, location, experience range, skills, description, posted date and apply link — clean JSON/CSV. Salary is returned when the employer discloses it; most Naukri listings hide it. No Naukri API key needed.

- **URL**: https://apify.com/sian.agency/naukri-jobs-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Jobs, Automation, Lead generation
- **Stats:** 11 total users, 3 monthly users, 93.3% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.92 / 1,000 extracted job details

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 — India Job Listings & Data API 🇮🇳

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Flipkart Product Scraper](https://img.shields.io/badge/Store-Flipkart%20Product%20Scraper-2874F0)](https://apify.com/sian.agency/flipkart-product-scraper?fpr=sian) [![Jobs Search API](https://img.shields.io/badge/Store-Jobs%20Search%20API-1AE392)](https://apify.com/sian.agency/jsearch-jobs-scraper?fpr=sian) [![LinkedIn Jobs Scraper](https://img.shields.io/badge/Store-LinkedIn%20Jobs%20Scraper-0077B5)](https://apify.com/sian.agency/linkedin-jobs-scraper?fpr=sian)

#### 🎉 Search live Naukri jobs by keyword and city — salary band, experience, skills and vacancies for every job

##### Built for recruiters, talent-sourcing teams, HR analysts and job aggregators who need fresh India job data without copy-paste

***

### 🔍 What is the Naukri Jobs Scraper — and when should you use it?

The **Naukri Jobs Scraper** turns a Naukri job search into clean, structured rows you can filter, export and feed into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** live Indian job postings for a role or skill, with the hiring company, city, salary band, experience range, key skills, vacancy count and posting date.

**Use something else when:** you need jobs from Indeed, LinkedIn or Glassdoor, or from outside India. Use [Jobs Search API](https://apify.com/sian.agency/jsearch-jobs-scraper?fpr=sian) for that.

***

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/naukri-jobs-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per job delivered.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want a list of live job openings in India for a role, using the Apify Actor `sian.agency/naukri-jobs-scraper`.

Use it when I need: Naukri job postings with company, city, salary band, experience range, skills, vacancies and posting date.

Don't use it when: I need jobs from Indeed, LinkedIn or Glassdoor, or outside India — use `sian.agency/jsearch-jobs-scraper` instead.

How to call it: set "scrapeMode" to "search", then give either a "keyword" (optionally with a "city" and filters such as "experience", "jobAge", "wfhType" or "ctcFilter"), or paste Naukri search-result URLs in "searchUrls". Each page holds about 20 jobs.

Start with this input:
{
  "scrapeMode": "search",
  "keyword": "data analyst",
  "city": "Bangalore",
  "jobAge": "7",
  "maxPages": 2,
  "maxResults": 40
}

Ask me which role and city I care about, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *"Find remote Python developer jobs posted on Naukri this week and list the companies hiring."*
- *"Compare the salary bands for data analyst jobs in Bangalore and Pune."*
- *"Which skills show up most often in product manager openings in Mumbai?"*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/naukri-jobs-scraper.md](https://apify.com/sian.agency/naukri-jobs-scraper.md).

***

### 📋 Overview

**Pull live job postings from India's biggest careers portal into JSON or CSV.** Type a role, pick a city, and get every matching job as a clean row.

**What you get:**

- ✅ **Full job rows**: title, company, city, salary band, experience range, skills, vacancies, posting date and a description snippet
- ⚡ **Fast**: a two-page search (about 40 jobs) finishes in roughly a minute
- 🎯 **Same results as the site**: keyword, city, experience, freshness, work mode, salary band and sort order all apply exactly as on naukri.com
- 💰 **Pay-per-result**: you pay for jobs delivered, not for compute
- 💎 **One schema**: every job lands in the same shape, ready for a sheet, database or BI tool
- ✨ **NEW**: city filter, pasted city search URLs, and salary, experience and vacancy fields on every search result

***

### ✨ Features

- 🔍 **Keyword search**: any role or skill, e.g. "python developer", "data scientist", "accountant"
- 📍 **City filter**: Bangalore, Mumbai, Delhi, Pune, Hyderabad or any other Indian city
- 🔗 **Paste search URLs**: copy a Naukri results page from your browser, filters and city included
- 💰 **Salary bands**: annual minimum and maximum in INR, plus a flag when the employer hides the salary
- 🧑‍💼 **Experience range**: minimum and maximum years for every job
- 🏠 **Work-mode filter**: office, hybrid or remote
- 📅 **Freshness filter**: only jobs posted in the last 1, 3, 7, 15 or 30 days
- 🧾 **Run report**: an HTML summary of every run with key totals
- 📥 **Export anywhere**: JSON, CSV or Excel straight from the Apify dataset

***

### 🎬 Quick Start

Send a keyword and a city and get the first two pages of live jobs back. Each page holds about 20 jobs. Promoted listings that repeat across pages are delivered, and billed, once.

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~naukri-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode": "search", "keyword": "python developer", "city": "Bangalore", "maxPages": 2}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Type a keyword

Enter a role or skill, for example "python developer". You can also paste a Naukri search URL instead.

#### Step 2: Narrow it down

Add a city, and optionally experience, freshness, work mode or a salary band.

#### Step 3: Run & export

Click **Start** and download your jobs as JSON, CSV or Excel.

**That's it! In about a minute, you'll have:**

- A structured list of live Indian job postings
- Salary bands, experience ranges and skills per job
- A run report with totals

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| scrapeMode | string | Yes | `search` |
| keyword | string | One of keyword / searchUrls | Role or skill to search for |
| city | string | No | Only return jobs in this city, e.g. `Pune` |
| searchUrls | array | One of keyword / searchUrls | Naukri search-results URLs, filters in the URL are honored |
| experience | string | No | Years of experience, e.g. `5` |
| jobAge | string | No | Posted within N days: `1`, `3`, `7`, `15`, `30` |
| wfhType | string | No | Work mode: `0` office, `1` hybrid, `2` remote |
| ctcFilter | string | No | Salary band in lakhs: `0to3`, `3to6`, `6to10`, `10to15`, `15to25`, `25to50`, `50to75`, `75to100` or `100to500` |
| sort | string | No | `relevance`, `freshness` or `sponsored` |
| maxPages | integer | No | Result pages to read, about 20 jobs each (default 2) |
| maxResults | integer | No | Max jobs per run (FREE: 25, PAID: unlimited) |

**Example — keyword and city:**

```json
{
  "scrapeMode": "search",
  "keyword": "java developer",
  "city": "Hyderabad",
  "experience": "3",
  "maxPages": 3
}
```

**Example — pasted search URLs:**

```json
{
  "scrapeMode": "search",
  "searchUrls": [
    "https://www.naukri.com/software-developer-jobs-in-bangalore",
    "https://www.naukri.com/data-scientist-jobs?jobAge=7"
  ],
  "maxPages": 2
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **20+ fields** per job, including:

| Field | Type | Description |
|-------|------|-------------|
| jobTitle | string | Role / position title |
| company_name | string | Hiring company |
| company_id | string | The company's Naukri ID |
| location | string | City or cities, including "Remote" and "Hybrid" |
| salary_min / salary_max | number | Annual salary band in INR (empty when the employer hides it) |
| salary_disclosed | boolean | Whether the employer published the salary |
| experience_min / experience_max | number | Years of experience required |
| vacancies | number | Number of open positions, when listed |
| tags_and_skills | array | Key skills for the role |
| description | string | Short description snippet from the listing |
| posted_date | string | Date the job was posted (YYYY-MM-DD) |
| days_ago | number | Days since the job was posted |
| url | string | Public job-listing URL |

**Example:**

```json
{
  "id": "240926010027",
  "url": "https://www.naukri.com/job-listings-performance-marketing-manager-vandan-holy-services-pune-3-to-7-years-240926010027",
  "source": "search",
  "jobTitle": "Performance Marketing Manager",
  "company_name": "Vandan Holy Services",
  "company_id": "125547004",
  "location": "Remote",
  "experience_min": 3,
  "experience_max": 7,
  "salary_min": 800000,
  "salary_max": 1200000,
  "salary_disclosed": true,
  "currency": "INR",
  "tags_and_skills": ["SEO", "Meta Ads", "Google Ads", "Data Analysis", "Campaign Management", "Performance Marketing"],
  "description": "You should be equally comfortable looking at campaign numbers, launching a Meta campaign...",
  "posted_date": "2026-09-24",
  "days_ago": 1,
  "country": "IN"
}
```

***

### 💼 Use Cases & Examples

#### 1. Talent Sourcing

**Recruiters mapping who is hiring for the roles they fill.**

**Input:** A keyword like "data scientist" plus a city
**Output:** Every matching live job with company, experience range and skills
**Use:** See which companies compete with you for the same candidates

#### 2. Salary Benchmarking

**HR and compensation analysts pricing roles for the Indian market.**

**Input:** One role across several cities, e.g. "accountant" in Mumbai, Pune and Delhi
**Output:** Published salary bands and experience ranges per job
**Use:** Build salary bands by role, city and seniority

#### 3. Hiring-Trend Tracking

**Market researchers tracking which skills and roles are heating up.**

**Input:** Daily scheduled runs with `jobAge` set to `1`
**Output:** A fresh feed of new postings with skill tags and posting dates
**Use:** See which skills are rising and where hiring is picking up

#### 4. Remote-Job Feeds

**Job boards and newsletters curating remote roles in India.**

**Input:** Keywords with `wfhType` set to `2`
**Output:** Remote-only postings, ready to publish
**Use:** Power a niche job board or a weekly remote-jobs digest

#### 5. Competitor Hiring Analysis

**Strategy teams watching where rivals are expanding.**

**Input:** Role keywords for the teams you care about, city by city
**Output:** Companies, locations and vacancy counts
**Use:** See which cities and teams a rival is hiring for

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/naukri-jobs-scraper').call({
  scrapeMode: 'search',
  keyword: 'python developer',
  city: 'Bangalore',
  maxPages: 2
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/naukri-jobs-scraper').call(
    run_input={'scrapeMode': 'search', 'keyword': 'python developer', 'city': 'Bangalore', 'maxPages': 2}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~naukri-jobs-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode": "search", "keyword": "python developer", "maxResults": 50}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle JSON results
4. **Action**: Save to a sheet, CRM or database

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 jobs** per run — full feature access, same quality
- No credit card required
- Perfect for testing and small projects

#### PAID Tier (Production Ready)

- **Unlimited** jobs per run
- Pay-per-result: charged per job delivered to your dataset
- Lower per-job price on higher Apify plans

💰 **Pay per job delivered.** No subscription.

🔗 [View current pricing](https://apify.com/sian.agency/naukri-jobs-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many jobs can I extract?**
A: FREE tier: 25 per run. PAID tier: unlimited. Each result page holds about 20 jobs, so raise `maxPages` for bigger pulls.

**Q: Do I need a Naukri account or API key?**
A: No. Just run the actor.

**Q: What output formats are available?**
A: JSON, CSV and Excel, exported straight from the Apify dataset.

**Q: Why is the salary sometimes empty?**
A: Many employers hide the salary band. For those jobs `salary_disclosed` is `false` and the salary fields stay empty rather than showing 0.

**Q: Can I fetch a single job by its link or ID?**
A: Not right now. Job details mode is temporarily unavailable. Search for the role and company instead, and every matching job comes back with its link.

**Q: How long does a run take?**
A: About a minute for two pages (around 40 jobs).

**Q: Is this legal?**
A: We only extract publicly available job listings. See the legal note below.

***

### 🐛 Troubleshooting

**Fewer jobs than requested**

- Your search may have fewer live matches than `maxResults`. Widen the keyword, drop a filter, or remove the city.
- Raise `maxPages`: each page holds about 20 jobs.

**A pasted URL is rejected**

- Use a search-results URL such as `https://www.naukri.com/python-developer-jobs` or `https://www.naukri.com/jobs-in-pune`, not a single job listing.

**The run ends with a "blocked" message**

- Naukri occasionally blocks a search. No jobs are billed on those runs, only the run-start fee. Wait a few minutes and run it again.

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

> **Trademark notice:** Naukri® and Naukri.com® are trademarks of Info Edge (India) Ltd. This actor is an independent tool and is **not** affiliated with, endorsed by, or sponsored by Info Edge or Naukri.com. It accesses only publicly available job listings.

***

### 🤝 Support

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Changelog

This Actor's version history is a separate document: https://apify.com/sian.agency/naukri-jobs-scraper/changelog.md

# Actor input Schema

## `scrapeMode` (type: `string`):

🧭 **How to collect jobs.** Keyword search finds live Naukri jobs by keyword, city and filters — title, company, location, salary band, experience, skills, vacancies, a description snippet and the job link per result.

ℹ️ Job details mode is temporarily unavailable.

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

🔍 **Search keyword** — e.g. `python developer`, `data scientist`, `product manager`.

💡 Combine with a city and the filters below to narrow results.

## `city` (type: `string`):

📍 **Only return jobs in this city** — e.g. `Bangalore`, `Mumbai`, `Pune`, `Hyderabad`, `Delhi`. Leave blank to search all of India.

## `searchUrls` (type: `array`):

🔗 **Paste Naukri search-results URLs** (one per line), e.g. `https://www.naukri.com/python-developer-jobs` or `https://www.naukri.com/software-developer-jobs-in-bangalore`. Filters in the URL are honored. Alternative to typing a keyword.

## `experience` (type: `string`):

🧑‍💼 **Filter by years of experience**, e.g. `5`.

## `jobAge` (type: `string`):

📅 **Freshness filter** — show only jobs posted within N days. Common values: `1`, `3`, `7`, `15`, `30`.

## `wfhType` (type: `string`):

🏠 **Work-from-home filter**: `0` = office, `1` = hybrid, `2` = remote.

## `ctcFilter` (type: `string`):

💰 **Salary band filter** — only jobs whose published salary falls in this band (lakhs per year). Naukri's own bands only.

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

↕️ **Result sort order**.

## `maxPages` (type: `integer`):

📑 **How many result pages to read** (≈20 jobs per page).

## `maxResults` (type: `integer`):

🔢 **Maximum jobs to extract this run.**

- **FREE users:** up to 25 jobs per run
- **PAID users:** unlimited

The scraper stops once this many jobs are saved.

## Actor input object example

```json
{
  "scrapeMode": "search",
  "keyword": "python developer",
  "city": "Bangalore",
  "searchUrls": [
    "https://www.naukri.com/python-developer-jobs"
  ],
  "sort": "relevance",
  "maxPages": 2,
  "maxResults": 50
}
```

# Actor output Schema

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

All extracted job postings — title, company, salary, experience, skills, location, apply link.

## `scrapingSummary` (type: `string`):

HTML summary of the run with key metrics.

# 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 = {
    "scrapeMode": "search",
    "keyword": "python developer",
    "sort": "relevance",
    "maxPages": 2,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/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 = {
    "scrapeMode": "search",
    "keyword": "python developer",
    "sort": "relevance",
    "maxPages": 2,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/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 '{
  "scrapeMode": "search",
  "keyword": "python developer",
  "sort": "relevance",
  "maxPages": 2,
  "maxResults": 50
}' |
apify call sian.agency/naukri-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/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/sKZbDyQK3Uoj0Y2bx/builds/5x97Ct8sGybCEhPQf/openapi.json
