# Naukri Jobs Scraper (`khadinakbar/naukri-jobs-scraper`) Actor

Scrape Naukri.com job listings from India with title, company, location, salary, experience, skills, description, and apply URL. MCP-ready.

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

## Pricing

from $6.00 / 1,000 job scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Jobs Scraper

Scrape Naukri.com job listings from India by keyword, location, experience, and posting age. The actor returns clean JSON for recruiting automation, market mapping, salary research, job-board monitoring, and AI-agent workflows.

### What You Get

Each dataset item is one Naukri job posting with the fields agents and data teams usually need:

- Job title, job ID, Naukri job URL, and apply URL
- Company name, rating, review count, logo, and company URL when available
- Location, required experience, parsed minimum and maximum experience
- Salary text, posted date or freshness label, job type, skills, and description
- Search keyword, search location, search URL, page number, and scrape timestamp

### When To Use This Actor

Use this actor when you need structured Naukri job data for hiring research, lead generation, job-market analytics, salary benchmarking, or workflow automation. It is built for public job listings on Naukri.com and does not log in, apply to jobs, scrape resumes, or access candidate profiles.

### Input Options

You can run a normal keyword search or paste Naukri URLs directly.

- `keyword`: role, title, or skill, for example `data analyst`
- `location`: city or region, for example `mumbai` or `bengaluru`
- `experience`: optional Naukri experience filter from 0 to 15 years
- `jobAge`: optional posting-age filter for recent jobs
- `startUrls`: Naukri search-result or job-detail URLs
- `maxItems`: maximum jobs to return and bill for
- `enrichDetails`: optional detail-page fetch for richer descriptions

### Pricing

This actor uses predictable pay-per-event pricing.

| Event | Price |
| --- | ---: |
| Actor start | $0.00005 per run |
| Job scraped | $0.006 per job returned |

A 50-job run costs about $0.30 plus the tiny start event, before any platform usage or proxy charges shown by Apify.

### Reliability Notes

Naukri is protected by Akamai and often blocks datacenter traffic. The default proxy configuration uses Apify Residential proxies in India and low browser concurrency to keep sessions consistent. If a run returns zero jobs, keep the default proxy, reduce concurrency, and try a smaller `maxItems` canary before running a large export.

### Output Example

```json
{
  "jobId": "120626012345",
  "title": "Senior Software Engineer",
  "companyName": "Acme Technologies",
  "location": "Bengaluru",
  "experience": "3-7 Yrs",
  "minExperienceYears": 3,
  "maxExperienceYears": 7,
  "salaryText": "12-22 Lacs PA",
  "postedAgo": "2 days ago",
  "skills": ["Java", "Spring Boot", "Microservices"],
  "jobUrl": "https://www.naukri.com/job-listings-senior-software-engineer-acme-bengaluru-120626012345",
  "source": "naukri.com",
  "searchKeyword": "software engineer",
  "searchLocation": "bengaluru",
  "pageNumber": 1,
  "scrapedAt": "2026-06-12T12:00:00.000Z"
}
````

### For AI Agents And MCP

This actor is optimized for agent calls: small default input, clear cost cap, stable field names, and one result record per job. Use it when the user asks for Naukri job listings, India hiring trends, role demand, company hiring research, or salary signals from Naukri. Do not use it for LinkedIn jobs, Indeed jobs, candidate resumes, or private applicant data.

# Actor input Schema

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

Use this when you want to search Naukri by role, skill, or title. Enter a query such as 'software engineer', 'data analyst', or 'sales manager'. Defaults to 'software engineer'. This is not a Naukri URL, paste URLs into Start URLs instead.

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

Use this to restrict the Naukri search to a city, region, or remote-style location phrase. Enter values like 'bengaluru', 'mumbai', 'delhi ncr', or 'remote'. Defaults to 'bengaluru'. Leave empty to search all locations.

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

Use this when you already have Naukri search-result pages or job-detail URLs to scrape. Accepts links from naukri.com search pages and /job-listings- detail pages. When provided, Keyword, Location, Experience, and Date posted are ignored for the first page. Do not paste non-Naukri URLs here.

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

Use this to filter jobs by required years of experience. Choose 'any' or a starting year from 0 to 15, matching Naukri's search filter. Defaults to 'any'. This is not the extracted experience field returned in each job record.

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

Use this to restrict results to recently posted jobs. Allowed values are 'any', '1', '3', '7', '15', and '30', representing days back on Naukri search. Defaults to 'any'. This is a search filter, not the returned postedAgo text.

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

Use this to cap how many job postings the actor returns and bills for. Defaults to 50 and stops cleanly when the limit is reached. One returned job costs $0.006 plus the tiny run-start event. Do not use this as a page count.

## `enrichDetails` (type: `boolean`):

Use this when you need the richest detail-page description and structured fields. Defaults to false because Naukri's search API often returns enough data and detail pages cost more browser time. Enable it for smaller, high-value runs. It does not change the per-job PPE price.

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

Use this to control the proxy used for Naukri requests. Defaults to Apify Residential proxies in India because Naukri is protected by Akamai and commonly blocks datacenter traffic. Keep the default unless you know your proxy can pass Naukri. This is not an authentication or cookie field.

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

Use this to control how many browser pages run at once. Defaults to 2 to keep sessions consistent and reduce Naukri blocking. Increase only after successful canary runs on your proxy pool. This is not the result limit.

## `debugDumpHtml` (type: `boolean`):

Internal troubleshooting flag that saves raw Naukri pages to the key-value store. Use this only when extraction returns zero jobs or the site layout changes. Defaults to false. Normal users should leave it disabled.

## Actor input object example

```json
{
  "keyword": "data analyst",
  "location": "mumbai",
  "startUrls": [
    {
      "url": "https://www.naukri.com/data-analyst-jobs-in-mumbai?k=data%20analyst&l=mumbai"
    }
  ],
  "experience": "any",
  "jobAge": "any",
  "maxItems": 50,
  "enrichDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  },
  "maxConcurrency": 2,
  "debugDumpHtml": false
}
```

# Actor output Schema

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

All scraped Naukri job postings as structured JSON records.

## `runSummary` (type: `string`):

Summary of totals, cost cap, captured API payload count, block signals, and warnings.

# 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": "software engineer",
    "location": "bengaluru",
    "maxItems": 50,
    "enrichDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IN"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/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 = {
    "keyword": "software engineer",
    "location": "bengaluru",
    "maxItems": 50,
    "enrichDetails": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IN",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/naukri-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": "software engineer",
  "location": "bengaluru",
  "maxItems": 50,
  "enrichDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}' |
apify call khadinakbar/naukri-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/naukri-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Naukri Jobs Scraper",
        "description": "Scrape Naukri.com job listings from India with title, company, location, salary, experience, skills, description, and apply URL. MCP-ready.",
        "version": "1.0",
        "x-build-id": "NsWW7zrvqzMlBWcco"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~naukri-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-naukri-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/khadinakbar~naukri-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-naukri-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/khadinakbar~naukri-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-naukri-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Use this when you want to search Naukri by role, skill, or title. Enter a query such as 'software engineer', 'data analyst', or 'sales manager'. Defaults to 'software engineer'. This is not a Naukri URL, paste URLs into Start URLs instead.",
                        "default": "software engineer"
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Use this to restrict the Naukri search to a city, region, or remote-style location phrase. Enter values like 'bengaluru', 'mumbai', 'delhi ncr', or 'remote'. Defaults to 'bengaluru'. Leave empty to search all locations.",
                        "default": "bengaluru"
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Use this when you already have Naukri search-result pages or job-detail URLs to scrape. Accepts links from naukri.com search pages and /job-listings- detail pages. When provided, Keyword, Location, Experience, and Date posted are ignored for the first page. Do not paste non-Naukri URLs here.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "experience": {
                        "title": "Experience",
                        "enum": [
                            "any",
                            "0",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5",
                            "6",
                            "7",
                            "8",
                            "9",
                            "10",
                            "11",
                            "12",
                            "13",
                            "14",
                            "15"
                        ],
                        "type": "string",
                        "description": "Use this to filter jobs by required years of experience. Choose 'any' or a starting year from 0 to 15, matching Naukri's search filter. Defaults to 'any'. This is not the extracted experience field returned in each job record.",
                        "default": "any"
                    },
                    "jobAge": {
                        "title": "Date posted",
                        "enum": [
                            "any",
                            "1",
                            "3",
                            "7",
                            "15",
                            "30"
                        ],
                        "type": "string",
                        "description": "Use this to restrict results to recently posted jobs. Allowed values are 'any', '1', '3', '7', '15', and '30', representing days back on Naukri search. Defaults to 'any'. This is a search filter, not the returned postedAgo text.",
                        "default": "any"
                    },
                    "maxItems": {
                        "title": "Maximum jobs",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Use this to cap how many job postings the actor returns and bills for. Defaults to 50 and stops cleanly when the limit is reached. One returned job costs $0.006 plus the tiny run-start event. Do not use this as a page count.",
                        "default": 50
                    },
                    "enrichDetails": {
                        "title": "Fetch full job details",
                        "type": "boolean",
                        "description": "Use this when you need the richest detail-page description and structured fields. Defaults to false because Naukri's search API often returns enough data and detail pages cost more browser time. Enable it for smaller, high-value runs. It does not change the per-job PPE price.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Use this to control the proxy used for Naukri requests. Defaults to Apify Residential proxies in India because Naukri is protected by Akamai and commonly blocks datacenter traffic. Keep the default unless you know your proxy can pass Naukri. This is not an authentication or cookie field.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "IN"
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Use this to control how many browser pages run at once. Defaults to 2 to keep sessions consistent and reduce Naukri blocking. Increase only after successful canary runs on your proxy pool. This is not the result limit.",
                        "default": 2
                    },
                    "debugDumpHtml": {
                        "title": "Debug: dump raw HTML",
                        "type": "boolean",
                        "description": "Internal troubleshooting flag that saves raw Naukri pages to the key-value store. Use this only when extraction returns zero jobs or the site layout changes. Defaults to false. Normal users should leave it disabled.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
