# Naukri Scraper — India Jobs, Salary & Company Ratings (`haketa/naukri-scraper`) Actor

Extract India job listings with salary data from Naukri.com — India's #1 job portal. Get salary ranges (min/max/currency), skills, experience levels, and company ratings by keyword and city. For recruitment intelligence, salary benchmarking, and Indian job market research.

- **URL**: https://apify.com/haketa/naukri-scraper.md
- **Developed by:** [Haketa](https://apify.com/haketa) (community)
- **Categories:** Jobs, Lead generation
- **Features:** Limited permissions
- **Stats:** 24 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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.
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 Scraper — India Job Listings, Salary & Company Ratings

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-00C853?style=for-the-badge\&logo=apify\&logoColor=white)](https://apify.com/haketa/naukri-scraper)
[![India Job Market](https://img.shields.io/badge/Region-India_All_Cities_%26_Remote-1E88E5?style=for-the-badge)](https://www.naukri.com)
[![Export Formats](https://img.shields.io/badge/Export-JSON_%7C_CSV_%7C_Excel_%7C_API-FF6F00?style=for-the-badge)](https://apify.com/haketa/naukri-scraper)
[![Pagination](https://img.shields.io/badge/Scale-1,000%2B_Jobs_Unlocked-8E24AA?style=for-the-badge)](https://apify.com/haketa/naukri-scraper)

**This Naukri scraper extracts job listings from [Naukri.com](https://www.naukri.com), India's leading recruitment platform** with tens of millions of registered professionals and thousands of fresh jobs posted every day. Use this **Naukri data extractor** to **scrape Naukri** job titles, hiring companies, **structured salary ranges (`salaryMin`, `salaryMax`, `salaryCurrency`)**, experience requirements, locations, required skills, job descriptions, employment types, and company ratings — all by keyword and city, with **no login and no coding**.

Bulk export every listing to **JSON, CSV, Excel, XML, or API** for **Naukri lead generation**, compensation benchmarking, and **B2B intelligence**.

> 💡 **Built for:** recruiters and talent-intelligence teams, HR and compensation analysts building India CTC salary benchmarks, B2B sales teams mining active hiring signals for lead generation, and labour-market researchers tracking India's job economy across IT, BFSI, GCCs, healthcare, and manufacturing.

***

### ⚡ At a glance

| Feature | Details |
|---|---|
| **Data source** | [Naukri.com](https://www.naukri.com) — Pan-India job listings across all industries & seniority levels |
| **Captured fields** | `jobId`, `title`, `companyName`, `salary`, `salaryMin`, `salaryMax`, `salaryCurrency`, `experience`, `location`, `skills`, `description`, `employmentType`, `companyRating`, `companyTags`, `postedOn`, `url` |
| **Salary & ratings** | Optional enrichment populates numeric INR CTC ranges (`salaryMin` / `salaryMax`) + AmbitionBox `companyRating` |
| **City coverage** | 17 built-in Indian hubs (Bengaluru, Mumbai, Delhi/NCR, Hyderabad, Pune, Chennai, Gurugram, Noida, etc.) + custom cities |
| **Scale & pagination** | **1,000+ results pagination** (20 jobs/page, automatic cursor stepping, cross-keyword `jobId` deduplication) |
| **Export formats** | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS & direct **Apify REST API** |

***

### 📋 Table of contents

- [At a glance](#-at-a-glance)
- [Why scrape Naukri.com?](#-why-scrape-naukricom)
- [What this Naukri scraper does](#-what-this-naukri-scraper-does)
- [Use cases](#-use-cases)
- [Popular India job markets & roles](#-popular-india-job-markets--roles)
- [Input](#-input)
- [Output](#-output)
- [Pagination & scale](#-pagination--scale)
- [How to use](#️-how-to-use)
- [Integrations & automation](#-integrations--automation)
- [Tips & best practices](#-tips--best-practices)
- [FAQ](#-faq)
- [Related scrapers](#-related-scrapers)
- [Changelog](#-changelog)

***

### 🔎 Why scrape Naukri.com?

[Naukri.com](https://www.naukri.com) is India's dominant job portal — where virtually every major employer posts openings, from IT-services giants like TCS, Infosys, Wipro, and HCL to global capability centers (GCCs), Fortune 500 engineering hubs, and fast-growing startups in Bengaluru, Hyderabad, Pune, Gurugram, and Mumbai. Across IT services, software product, BFSI, manufacturing, healthcare, pharma, retail, and education, Naukri is the single most comprehensive source of **Indian job-market data**.

That data is spread across millions of individual listings, each with its own CTC salary band, skill set, experience requirement, and employer profile. Collecting it by hand — opening every listing, copying the salary, the skills, the posting date — is slow, error-prone, and impossible at scale. This **Naukri scraper** turns that sprawling job board into clean, structured, analysis-ready rows you can drop straight into a spreadsheet, CRM, data warehouse, or BI dashboard.

The real value is in the structured detail: **numeric salary ranges**, **company ratings**, and **required skills** that power compensation benchmarks, hiring-demand trackers, and B2B prospecting lists.

**Common reasons teams scrape Naukri:**

- 📊 **Salary benchmarking** — build compensation bands by role, city, and experience level from real CTC ranges (`Lacs P.A.` and raw INR).
- 🔎 **Recruitment intelligence** — track which technical skills and roles are surging across Indian cities in real time.
- 🏢 **Competitive hiring analysis** — map which roles rivals and GCCs are filling, at what pay, and in which locations.
- 🎯 **B2B lead generation** — every job posting is a verified buying signal for staffing agencies, HR-tech SaaS, cloud vendors, and corporate training providers.
- 📈 **Labour-market & macroeconomic research** — study employment trends by sector, tier-1 vs tier-2 cities, and skill category.
- 🗂️ **Job boards & aggregators** — power niche vertical job portals with fresh, structured India job listings.

***

### ✨ What this Naukri scraper does

- ✅ **Multi-keyword search** — pass any number of job titles, roles, skills, or company names (e.g. `python developer`, `data analyst`, `sales manager`, `Infosys`). Each keyword runs its own paginated search.
- ✅ **City targeting** — focus results on one or more Indian cities (Bengaluru, Mumbai, Delhi/NCR, Hyderabad, Pune, Chennai, Kolkata, Gurugram, Noida, Ahmedabad, Kochi, Jaipur, Indore, Chandigarh, Coimbatore, Lucknow, Remote) or leave empty for pan-India coverage. Advanced users can add any custom city.
- ✅ **1,000+ automatic pagination** — walks the Naukri result pages (20 jobs per page) and keeps collecting up to your `maxItemsPerSearch` / `maxTotalItems` limits, returning **de-duplicated** records so the same job never appears twice across keywords.
- ✅ **Salary & company ratings enrichment** — with `enrichSalary: true`, each job is enriched with structured **salary ranges** (`salaryMin` / `salaryMax` / `salaryCurrency`), **company ratings**, full skills, and job description.
- ✅ **Rich captured fields** — identity (`jobId`, `title`, `url`), employer (`companyName`, `companyRating`, `companyTags`), compensation (`salary`, `salaryMin`, `salaryMax`, `salaryCurrency`), role detail (`experience`, `location`, `skills`, `description`, `employmentType`), and provenance (`postedOn`, `searchKeyword`, `scrapedAt`).
- ✅ **Direct URLs** — `startUrls` lets you paste ready-made Naukri search URLs you already have.
- ✅ **Bulk export anywhere** — results stream to a dataset you can download as **JSON, CSV, Excel, or XML**, or pull via the **Apify API** and pipe into Make, Zapier, Google Sheets, or a webhook.

***

### 🎯 Use cases

#### 1. B2B Lead Generation & Staffing Outreach

Companies actively posting roles on Naukri have approved headcount and budget. Group scraped listings by `companyName`, filter for high-growth tags (`MNC`, `Startup`, `Fortune 500`) or specific tech stacks (`AWS`, `Kubernetes`, `Snowflake`, `SAP`), and feed your SDR or staffing team a daily list of verified hiring accounts.

#### 2. India CTC Compensation & Salary Benchmarking

With `enrichSalary: true`, the scraper captures both the formatted CTC label (`"4.0-5.0 Lacs P.A."`) and raw annual INR integers (`salaryMin: 400000`, `salaryMax: 500000`). Pivot by `location` and `experience` in Excel or Python to compare engineering, finance, or operations pay across Bengaluru, Hyderabad, Pune, and Delhi/NCR.

#### 3. Global Capability Center (GCC) & Competitor Monitoring

Pass competitor company names in `searchKeywords` (`"JPMorgan"`, `"Goldman Sachs"`, `"Target"`, `"Walmart"`, `"TCS"`, `"Infosys"`). Schedule weekly runs to track headcount expansion, new technology adoption, and regional office build-outs.

#### 4. Skill Demand & Curriculum Intelligence

EdTech platforms, universities, and workforce planners analyze the comma-separated `skills` field across thousands of postings to identify which frameworks, cloud certifications, and AI skills command the highest salary premiums.

#### 5. Recruitment Agency Candidate-to-Job Matching

Executive search firms and staffing agencies schedule automated runs across their core practice areas (e.g. `SAP FICO`, `Salesforce Architect`, `Full Stack Java`, `Chartered Accountant`), matching newly posted requisitions against their bench or candidate database within hours of posting.

#### 6. Private Equity & Venture Capital Due Diligence

Investment analysts track portfolio companies and acquisition targets on Naukri to measure hiring velocity, engineering-to-sales ratios, and geographic expansion across Tier-1 and Tier-2 Indian cities before quarterly numbers are reported.

***

### 🔑 High-intent SEO & search keywords

This actor is designed for teams searching for: **Naukri scraper**, **scrape Naukri**, **Naukri.com job scraper**, **Naukri data extractor**, **Naukri API alternative**, **Naukri lead generation**, **India job portal scraper**, **Indian salary benchmark data**, **CTC range extractor**, **AmbitionBox rating scraper**, **bulk export Naukri jobs JSON CSV Excel**, **1,000+ results pagination**, and **B2B recruitment intelligence**.

***

### 🏙️ Popular India job markets & roles

You can combine any role keyword with any Tier-1 or Tier-2 Indian city:

| Hub / City | Key Sectors & Typical Searches |
|---|---|
| **Bengaluru (Bangalore)** | Software Product, AI/ML, Cloud, DevOps, Semiconductor, Startups, GCCs |
| **Hyderabad** | Enterprise IT, Pharma & Life Sciences, Cloud Engineering, Data Science |
| **Mumbai & Navi Mumbai** | BFSI, Investment Banking, FinTech, Media, Enterprise Sales, Operations |
| **Delhi / NCR (Gurugram & Noida)** | E-commerce, Consulting, BPO/KPO, Telecom, Digital Marketing, Product Management |
| **Pune** | Automotive Engineering, Manufacturing, Enterprise SaaS, ERP/SAP |
| **Chennai** | SaaS, Core Engineering, Hardware, Automobile, Financial Back-Office |
| **Tier-2 Hubs (Ahmedabad, Kochi, Jaipur, Indore, Chandigarh, Coimbatore)** | IT Services, Regional Sales, Accounting, Customer Support, Operations |

***

### 📥 Input

Configure the scraper with a few simple fields. Leave keywords empty to get a ready-made mix of popular India job categories.

| Field | Type | Description |
|---|---|---|
| `searchKeywords` | `array<string>` | Job titles, roles, skills, or company names to search — e.g. `python developer`, `data analyst`, `marketing manager`. Each entry runs its own search. Empty = a ready-made popular mix. |
| `locations` | `array<string>` | One or more Indian cities from the picker (Bengaluru, Mumbai, Delhi/NCR, Hyderabad, Pune, Chennai, Kolkata, Gurugram, Noida, Ahmedabad, Kochi, Jaipur, Indore, Chandigarh, Coimbatore, Lucknow, Remote). Empty = all of India. |
| `customLocations` | `array<string>` | Advanced. Any city not in the picker, typed by name (e.g. `Nagpur`, `Bhubaneswar`, `Vadodara`). |
| `enrichSalary` | `boolean` | Fetch each job's detail for structured salary ranges (`salaryMin`/`salaryMax`) and company ratings. Default `true`. |
| `maxItemsPerSearch` | `integer` | How many jobs to collect per keyword. `0` = no per-keyword limit (supports 1,000+ jobs). Default `100`. |
| `maxTotalItems` | `integer` | Overall cap across all keywords. `0` = unlimited. Default `0`. |
| `proxyConfiguration` | `object` | Proxy settings. **India-based residential proxies (`apifyProxyCountry: "IN"`) are configured by default** for reliable access. |
| `startUrls` | `array<string>` | Advanced. Paste ready-made Naukri search URLs (e.g. `https://www.naukri.com/python-developer-jobs-in-bengaluru`). |

#### Example input — multi-role tech scan (1,000+ scale)

```json
{
  "searchKeywords": [
    "python developer",
    "java developer",
    "data scientist",
    "devops engineer",
    "react developer",
    "product manager"
  ],
  "locations": ["Bengaluru", "Hyderabad", "Pune", "Mumbai"],
  "maxItemsPerSearch": 250,
  "maxTotalItems": 1200,
  "enrichSalary": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "IN"
  }
}
```

#### Example input — single-company hiring tracker

```json
{
  "searchKeywords": ["Tata Consultancy Services", "Infosys", "Wipro"],
  "maxItemsPerSearch": 300,
  "enrichSalary": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "IN"
  }
}
```

***

### 📤 Output

Each job is saved as one structured record in the Apify Dataset. Example output item:

```json
{
  "jobId": "240626008807",
  "title": "Talent Acquisition Operations Specialist",
  "companyName": "Applied Materials",
  "salary": "4.0-5.0 Lacs P.A.",
  "salaryMin": 400000,
  "salaryMax": 500000,
  "salaryCurrency": "INR",
  "experience": "3-6 years",
  "location": "Bengaluru",
  "skills": "IT Recruitment, Talent Acquisition, End to End Recruitment, Screening, Sourcing, Contract Staffing",
  "description": "End-to-end recruitment across technical positions, sourcing, screening and offer management...",
  "employmentType": "Full Time, Permanent",
  "companyRating": 3.8,
  "companyTags": "MNC, Fortune 500",
  "postedOn": "2026-06-24 10:36:12.0",
  "url": "https://www.naukri.com/job-listings-talent-acquisition-operations-specialist-240626008807",
  "searchKeyword": "python developer",
  "scrapedAt": "2026-11-02T00:51:40.000Z"
}
```

#### Field reference & coverage

##### 🏷️ Job Identity & Employer

| Field | Coverage | Description |
|---|---|---|
| `jobId` | 🟢 High (100%) | Unique Naukri job identifier (natural key used for cross-search de-duplication). |
| `title` | 🟢 High (100%) | Job title / position name. |
| `companyName` | 🟢 High (100%) | Hiring company or recruitment firm name. |
| `companyRating` | 🟡 Conditional | AmbitionBox aggregate company rating on a 1–5 scale (present when the company has reviews and `enrichSalary: true`). |
| `companyTags` | 🟡 Conditional | Company segment tags (e.g. `MNC, Fortune 500, Forbes Global 2000`). |
| `url` | 🟢 High (100%) | Direct link to the job listing on Naukri.com. |

##### 💰 Compensation & Experience

| Field | Coverage | Description |
|---|---|---|
| `salary` | 🟡 Conditional | Formatted annual CTC range, e.g. `"5.0-10.0 Lacs P.A."` (populated when disclosed by employer or via enrichment). |
| `salaryMin` | 🟡 Conditional | Minimum annual salary in raw INR (e.g. `500000`). |
| `salaryMax` | 🟡 Conditional | Maximum annual salary in raw INR (e.g. `1000000`). |
| `salaryCurrency` | 🟡 Conditional | Salary currency code, typically `"INR"`. |
| `experience` | 🟢 High (98%+) | Required experience range, e.g. `"2-5 years"` or `"0-2 years"`. |

##### 🛠️ Skills, Role Details & Metadata

| Field | Coverage | Description |
|---|---|---|
| `location` | 🟢 High (95%+) | Normalized Indian city / location list (`Bengaluru`, `Mumbai`, `Hyderabad`, `Remote`, etc.). |
| `skills` | 🟢 High (95%+) | Required technical and functional skills, comma-separated. |
| `description` | 🟢 High (95%+) | Job description summary or enriched role description. |
| `employmentType` | 🟡 Conditional | Contract type (`Full Time, Permanent`, `Part Time`, `Contract`, `Internship`). |
| `postedOn` | 🟢 High | Listing publication timestamp as reported by Naukri. |
| `searchKeyword` | 🟢 High (100%) | The keyword that discovered this job listing. |
| `scrapedAt` | 🟢 High (100%) | ISO 8601 extraction timestamp. |

***

### 🔁 Pagination & scale

The scraper paginates Naukri's search results automatically to support **1,000+ results pagination**:

- Requests **20 jobs per page**, increments the `pageNo` cursor, collects and de-duplicates results by `jobId`, and stops when it reaches your `maxItemsPerSearch` budget for the keyword, exhausts the available pages, or hits the global `maxTotalItems` cap.
- When you run with default keywords and pass an explicit `maxTotalItems` or `maxItemsPerSearch` (e.g. `1000`), the actor honors your requested target across all searches without artificial caps.
- Run multiple keywords and/or multiple cities in one job to assemble **thousands** of de-duplicated listings in a single dataset.

> **⚠️ Proxy requirement (important):** Naukri geo-fences job search results to **India (`IN`)** and applies active anti-bot challenges on non-Indian or datacenter traffic. Always keep **Apify Residential Proxy (`apifyProxyCountry: "IN"`)** enabled (set as the default in input schema) for reliable extraction.

***

### ⚙️ How to use

1. **Open the actor** on the Apify Console and enter your `searchKeywords` and optional `locations`.
2. **Keep the default proxy** (`RESIDENTIAL`, country `IN`).
3. **Set your limits** (`maxItemsPerSearch` and `maxTotalItems`) and toggle `enrichSalary`.
4. **Click Start** — run on-demand or schedule recurring daily/weekly runs.
5. **Export** the dataset as **JSON, CSV, Excel, or XML**, or consume it via the **Apify API**.

#### Run via API (Node.js)

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });

const run = await client.actor('haketa/naukri-scraper').call({
    searchKeywords: ['python developer', 'data engineer'],
    locations: ['Bengaluru', 'Hyderabad'],
    maxItemsPerSearch: 100,
    enrichSalary: true,
    proxyConfiguration: {
        useApifyProxy: true,
        apifyProxyGroups: ['RESIDENTIAL'],
        apifyProxyCountry: 'IN',
    },
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} Naukri job listings.`);
```

#### Run via API (Python)

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")

run = client.actor("haketa/naukri-scraper").call(run_input={
    "searchKeywords": ["data analyst", "machine learning engineer"],
    "locations": ["Bengaluru", "Pune"],
    "maxItemsPerSearch": 100,
    "enrichSalary": True,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], "|", item["companyName"], "|", item.get("salary"))
```

***

### 🔌 Integrations & automation

Connect this **Naukri scraper** directly into your recruitment or GTM stack:

- **Google Sheets & Airtable** — sync fresh Indian job postings into shared tracking sheets automatically.
- **Make, Zapier & n8n** — trigger enrichment workflows (Apollo, Clay, Hunter) whenever a target company posts a new role.
- **Slack & Email alerts** — notify account executives or sourcers when key accounts post urgent openings.
- **Snowflake, BigQuery & PostgreSQL** — stream historical compensation and skill-demand datasets via webhook or REST API.

***

### 💡 Tips & best practices

- **Indian job titles differ from Western ones** — `"Software Developer"` often returns higher volume than `"Software Engineer"`; `"Delivery Manager"` is standard in IT services; `"Fresher"` and `"Walk-in"` target entry-level cohorts.
- **Combine role + technology** — `java developer`, `python developer`, `react developer`, `sap abap consultant` return more targeted results than generic terms.
- **Search by company** — put employer names in `searchKeywords` (`Tata Consultancy Services`, `Infosys`, `Accenture`) to track a specific company's hiring footprint.
- **Enrichment trade-off** — `enrichSalary: true` adds a detail request per job (populating `salaryMin`/`salaryMax` and `companyRating`); for ultra-fast title/company discovery at high volume, set `enrichSalary: false`.
- **Target 2–4 cities per run** for clean regional comparisons, or leave `locations` empty for pan-India coverage.

***

### ❓ FAQ

#### Do I need an India proxy or login to scrape Naukri?

No login is required. However, Naukri geo-restricts job search results to **India-geolocated IPs** and blocks standard datacenter ranges. Using **Apify Residential Proxy with country `IN`** (the default setting) is strongly recommended.

#### How many jobs can I extract in a single run?

There is no hard cap — Naukri lists millions of openings and the scraper paginates 20 listings per page across all your keywords. Set `maxItemsPerSearch` and `maxTotalItems` to `1000+` (or `0` for unlimited) to run large-scale extractions.

#### Is salary data available for every job?

Not every employer discloses salary publicly on Naukri. Enabling `enrichSalary: true` significantly increases salary coverage by querying each job's detail metadata for structured `minimumSalary` and `maximumSalary` values. Undisclosed salaries are returned cleanly as `null`.

#### Can I search by company name or custom Tier-2/Tier-3 city?

Yes. Enter company names in `searchKeywords` and any non-dropdown Indian city (e.g. `Nagpur`, `Bhubaneswar`, `Surat`, `Visakhapatnam`) in `customLocations`.

#### What export formats are supported?

Results export to **JSON, CSV, Excel (XLSX), XML, and HTML** from the Apify Console, and are available programmatically via the **Apify API**.

#### Does it support remote and work-from-home jobs in India?

Yes. Select `Remote` in the `locations` dropdown or include `remote` / `work from home` in `searchKeywords`.

***

### 🔗 Related scrapers

Scaling your job-market and recruitment data beyond India? Pair this **Naukri scraper** with other job-board scrapers from the Haketa collection:

- [Seek Scraper](https://apify.com/haketa/seek-scraper) — jobs, salaries and company data from Seek (Australia & New Zealand)
- [ZipRecruiter Scraper](https://apify.com/haketa/ziprecruiter-scraper) — US/UK/CA job listings with salary estimates and company details
- [Xing Jobs Scraper](https://apify.com/haketa/xing-jobs-scraper) — DACH (Germany, Austria, Switzerland) job postings and salaries
- [GulfTalent Jobs Scraper](https://apify.com/haketa/gulftalent-jobs-scraper) — Middle East & GCC job listings
- [Arbeitsagentur Scraper](https://apify.com/haketa/arbeitsagentur-scraper) — Germany's official federal jobs database
- [Workana Scraper](https://apify.com/haketa/workana-scraper) — freelance projects and remote-work listings

***

### 📋 Changelog

- **v1.2 (2026-11)** — Unlocked **1,000+ results pagination** across keywords and default discovery runs, added `startUrls` URL parser support, configured default `IN` residential proxy for out-of-the-box reliability, and expanded README with `⚡ At a glance` and field coverage tables.
- **v1.1 (2026-10)** — Added concurrent batch enrichment (`enrichSalary`) for structured `salaryMin`, `salaryMax`, `salaryCurrency`, and AmbitionBox `companyRating`.
- **v1.0 (2026-05)** — Initial release with pan-India keyword & city search, experience/skill normalization, and `jobId` deduplication.

***

**Ready to map India's job market?** Add your keywords, keep the India residential proxy enabled, and run the **Naukri scraper** to export structured jobs, salaries, and company ratings to JSON, CSV, Excel, or API.

# Changelog

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

# Actor input Schema

## `searchKeywords` (type: `array`):

Type any job titles, roles, or skills you want to find — for example 'python developer', 'data scientist', or 'marketing manager'. Each entry runs its own search. Leave empty to get a ready-made mix of popular India job categories.

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

Pick one or more Indian cities to focus your results on. Leave empty to search across all of India.

## `customLocations` (type: `array`):

Optional. Add any city not in the list above by typing its name, e.g. 'Nagpur' or 'Bhubaneswar'. Most users can leave this empty and use the Cities picker instead.

## `enrichSalary` (type: `boolean`):

Fetch each job's detail for structured salary ranges (min/max) and company ratings. Recommended on for richer, benchmark-ready data.

## `maxItemsPerSearch` (type: `integer`):

How many jobs to collect for each keyword. Use 0 for no per-keyword limit (supports 1,000+ jobs across pages and searches).

## `maxTotalItems` (type: `integer`):

Overall cap across all keywords. Use 0 for unlimited (supports 1,000+ job listings).

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

Proxy settings. India-based residential proxies are recommended for reliable runs.

## `startUrls` (type: `array`):

Optional. Paste ready-made Naukri search URLs if you already have them. Most users should use the keyword and city options above instead.

## Actor input object example

```json
{
  "searchKeywords": [
    "java developer",
    "data analyst"
  ],
  "locations": [],
  "customLocations": [
    "Nagpur"
  ],
  "enrichSalary": true,
  "maxItemsPerSearch": 50,
  "maxTotalItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  },
  "startUrls": []
}
```

# Actor output Schema

## `jobId` (type: `string`):

Naukri job ID

## `title` (type: `string`):

Job title/position

## `companyName` (type: `string`):

Company/hiring organization

## `companyRating` (type: `string`):

AmbitionBox company rating (1-5)

## `salary` (type: `string`):

Salary range/CTC

## `salaryMin` (type: `string`):

Minimum annual salary

## `salaryMax` (type: `string`):

Maximum annual salary

## `salaryCurrency` (type: `string`):

Salary currency code

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

Required experience (years)

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

Job location/city

## `skills` (type: `string`):

Required skills/technologies

## `companyTags` (type: `string`):

Company highlights/tags

## `employmentType` (type: `string`):

Full Time, Part Time, etc.

## `description` (type: `string`):

Job description snippet

## `postedOn` (type: `string`):

Job posting date

## `url` (type: `string`):

Job detail page URL

## `searchKeyword` (type: `string`):

Keyword used for search

## `scrapedAt` (type: `string`):

Extraction timestamp

# 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": [
        "data analyst",
        "python developer"
    ],
    "locations": [],
    "customLocations": [],
    "maxItemsPerSearch": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    },
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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 = {
    "searchKeywords": [
        "data analyst",
        "python developer",
    ],
    "locations": [],
    "customLocations": [],
    "maxItemsPerSearch": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("haketa/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 '{
  "searchKeywords": [
    "data analyst",
    "python developer"
  ],
  "locations": [],
  "customLocations": [],
  "maxItemsPerSearch": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  },
  "startUrls": []
}' |
apify call haketa/naukri-scraper --silent --output-dataset

```

## MCP server setup

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