# Naukri Jobs Scraper - India Jobs with Salaries, Fast & Cheap (`fabrikit/naukri-jobs-scraper`) Actor

Scrape Naukri.com job listings across India: title, company, salary, experience, location, work mode, skills, full description and company rating. Filter by keyword, city, experience, salary, freshness and work mode. No login. From US$0.40 per 1,000 jobs.

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

## Pricing

from $0.40 / 1,000 job scrapeds

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 - India Jobs with Salaries

Scrape job listings from **Naukri.com**, India's largest job board, and get clean structured data: title, company, **salary range**, experience range, city, **work mode** (remote / hybrid / on-site), skills, the **full job description**, posting date and company rating. No login, no cookies, no browser.

Pay only for the jobs you get: **from US$0.40 per 1,000 jobs**.

### What you can do with it

- Build an India salary benchmark by role, city and experience level.
- Track hiring by company (who is hiring how many Python / data / sales people, and where).
- Feed a job aggregator, a recruiting CRM or a newsletter with fresh listings every day.
- Find remote and hybrid roles, or fresher roles (0 years of experience).
- Generate B2B leads: companies that are hiring right now in a given city or skill.

### Input

| Field | Description |
|---|---|
| `keywords` | Job titles or skills (one search per entry, a job matching any entry is returned). |
| `locations` | Indian cities: Bangalore, Mumbai, Delhi NCR, Hyderabad, Pune, Chennai, Gurgaon, Kolkata, ... Empty = all India. |
| `maxItems` | Maximum jobs to save (default 50). |
| `minExperience` / `maxExperience` | Years of experience. `minExperience: 3` keeps jobs that accept 3 years; `maxExperience: 0` keeps fresher jobs. |
| `minSalaryLakhs` / `maxSalaryLakhs` | Salary band in lakhs per year (1 lakh = 100,000 INR). Only jobs with a disclosed salary pass. |
| `onlyDisclosedSalary` | Skip "Not disclosed" salaries. |
| `postedWithinDays` | Freshness window in days. |
| `workMode` | `any`, `remote`, `hybrid`, `office`. |
| `companyNames` / `excludeCompanyNames` | Keep or hide companies by name (e.g. hide staffing agencies). |
| `sort` | `newest` (default) or `relevance`. |
| `proxyConfiguration` | Apify Proxy (default). Falls back to residential IPs in India automatically if blocked. |

Example:

```json
{
  "keywords": ["data analyst", "business analyst"],
  "locations": ["Bangalore", "Pune"],
  "minExperience": 2,
  "minSalaryLakhs": 8,
  "postedWithinDays": 14,
  "workMode": "hybrid",
  "maxItems": 200
}
```

### Output example

```json
{
  "jobId": "110926016874",
  "url": "https://www.naukri.com/job-listings-...-110926016874",
  "title": "Senior Data Analyst",
  "companyName": "Example Technologies",
  "companyId": 123456,
  "companyUrl": "https://www.naukri.com/example-technologies-jobs-careers-123456",
  "companyRating": 3.9,
  "companyReviewCount": 1520,
  "location": "Hybrid - Pune",
  "workMode": "Hybrid",
  "experience": "3-6 Yrs",
  "minExperienceYears": 3,
  "maxExperienceYears": 6,
  "salary": "12-18 Lacs PA",
  "salaryMin": 1200000,
  "salaryMax": 1800000,
  "salaryCurrency": "INR",
  "salaryDisclosed": true,
  "skills": ["SQL", "Python", "Power BI"],
  "description": "Role & responsibilities ...",
  "postedAt": "2026-10-10T05:37:18.277Z",
  "postedAgo": "3 Days Ago",
  "walkIn": false,
  "scrapedAt": "2026-10-13T17:15:47.742Z"
}
```

### Pricing

| Event | Price |
|---|---|
| Job scraped (`job-result`) | **US$0.40 per 1,000 jobs** (US$0.0004 each) |
| Actor start | US$0.00005 |

The full description is included in every job at no extra cost. There is no charge for jobs filtered out. Set `maxItems` and a maximum cost per run in Apify to cap your spend.

### FAQ

**Does it return recruiter names, e-mails or phone numbers?** No. Only company and job data. E-mails and phone numbers that appear inside descriptions are removed.

**How many jobs can I get?** Up to 100,000 per run. Very narrow filters (for example one rare keyword in one small city with a high salary floor) return fewer jobs because there simply are few matches.

**Why is salary sometimes empty?** Many employers on Naukri hide the salary ("Not disclosed"). `salaryDisclosed` tells you; use `onlyDisclosedSalary` to skip them.

**Is it legal?** The Actor reads public job listings that anyone can see without logging in. Use the data in line with Naukri's terms and applicable laws.

### En espanol

Scraper de ofertas de empleo de Naukri.com (India): cargo, empresa, rango de sueldo, experiencia, ciudad, modalidad (remoto/hibrido/presencial), habilidades y descripcion completa. Filtros por palabra clave, ciudad, experiencia, sueldo y antiguedad. Sin login. Desde US$0.40 por cada 1,000 ofertas. No entrega datos de reclutadores.

# Actor input Schema

## `keywords` (type: `array`):

Job titles or skills, one search per entry (for example: python developer, data analyst, accountant). A job is returned when it matches any entry. Leave empty for all jobs.

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

Indian cities (for example: Bangalore, Mumbai, Delhi NCR, Hyderabad, Pune, Chennai, Gurgaon, Kolkata). Leave empty for all of India.

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

Stop after this many jobs. You are only charged for jobs saved.

## `minExperience` (type: `integer`):

Only jobs that accept candidates with at least this many years of experience (the job's range must reach this value). Example: 3.

## `maxExperience` (type: `integer`):

Only jobs whose minimum required experience is at most this many years. Use 0 for freshers.

## `minSalaryLakhs` (type: `number`):

Only jobs whose disclosed top salary is at least this many lakhs per annum (1 lakh = 100,000 INR). Jobs without a disclosed salary are skipped.

## `maxSalaryLakhs` (type: `number`):

Only jobs whose disclosed minimum salary is at most this many lakhs per annum. Jobs without a disclosed salary are skipped.

## `onlyDisclosedSalary` (type: `boolean`):

Skip jobs that show 'Not disclosed' as salary.

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

Only jobs posted in the last N days. Leave empty for any date.

## `workMode` (type: `string`):

Filter by remote, hybrid or on-site jobs.

## `companyNames` (type: `array`):

Keep jobs whose company name contains one of these texts (for example: infosys, tcs, flipkart). Leave empty for all companies.

## `excludeCompanyNames` (type: `array`):

Drop jobs whose company name contains one of these texts (useful to hide staffing agencies).

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

Newest first starts from the most recently posted jobs; Relevance keeps Naukri's own order.

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

Apify Proxy is used by default. If Naukri blocks the datacenter IPs, the Actor switches to residential IPs in India automatically.

## Actor input object example

```json
{
  "keywords": [
    "python developer"
  ],
  "locations": [
    "Bangalore"
  ],
  "maxItems": 50,
  "onlyDisclosedSalary": false,
  "workMode": "any",
  "sort": "newest",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All records collected during the run

# 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 = {
    "keywords": [
        "python developer"
    ],
    "locations": [
        "Bangalore"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fabrikit/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 = {
    "keywords": ["python developer"],
    "locations": ["Bangalore"],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("fabrikit/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 '{
  "keywords": [
    "python developer"
  ],
  "locations": [
    "Bangalore"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call fabrikit/naukri-jobs-scraper --silent --output-dataset

```

## MCP server setup

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