# Naukri Job Scraper (`logiover/naukri-job-scraper`) Actor

Scrape thousands of job listings from Naukri.com - India's #1 job portal. Extract job title, company, salary, location, experience, skills & more. Optional detail scraping for full description, education, industry & role data. Uses residential proxies to bypass anti-bot protection. Fast & reliable.

- **URL**: https://apify.com/logiover/naukri-job-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 7 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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/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 Job Scraper — Indian Job Listings, Salaries & Company Data

Scrape **Naukri.com**, India's largest job portal with **1M+ active listings**, to extract structured job data at scale.

### What does Naukri Job Scraper do?

This actor scrapes job listings from Naukri.com and extracts 24 structured fields per job including title, company, salary, experience, skills, location, industry, education, ratings, and direct apply links. It supports keyword search, location filtering, experience ranges, salary ranges, job age, and work-from-home filters.

### Why scrape Naukri.com?

Naukri.com is India's #1 job portal with over 100K+ recruiters and millions of job seekers. Use this data for recruitment analytics, salary benchmarking, market research, competitor analysis, skill demand tracking, and building job aggregator platforms focused on the Indian market.

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| keywords | string[] | [] | Job search terms (e.g., "python developer") |
| locations | string[] | [] | City/region filter (e.g., "bangalore") |
| experienceMin | integer | 0 | Minimum years of experience |
| experienceMax | integer | 30 | Maximum years of experience |
| salaryMin | integer | 0 | Min annual salary in lakhs |
| salaryMax | integer | 0 | Max annual salary in lakhs |
| jobAge | string | "" | Posting age: 1, 3, 7, 15, or 30 days |
| workFromHome | string | "" | WFH filter |
| sortBy | string | "relevance" | Sort by relevance or date |
| maxPages | integer | 5 | Pages per search combo (~20 jobs/page) |
| scrapeJobDetails | boolean | false | Fetch full descriptions from detail pages |
| maxConcurrency | integer | 3 | Concurrent requests |
| proxyConfig | object | Residential | Proxy settings (residential recommended) |

### Output Fields (24 fields)

| Field | Description |
|-------|-------------|
| jobId | Naukri job ID |
| jobTitle | Position / role title |
| companyName | Hiring company |
| companyRating | Company rating (out of 5) |
| companyReviewsCount | Number of reviews |
| experience | Required experience range |
| salary | Salary range (lakhs/year) |
| location | Job location(s) |
| skills | Required skills |
| description | Full job description |
| industry | Industry sector |
| functionalArea | Department / function |
| roleCategory | Role category |
| role | Specific role name |
| employmentType | Full-time / Part-time / Contract |
| education | Required qualification |
| postedDate | When posted |
| vacancyCount | Number of openings |
| workFromHome | Remote / Hybrid / Office |
| companyUrl | Company profile link |
| jobUrl | Direct job listing URL |
| applyUrl | Apply link |
| searchKeyword | Search term used |
| scrapedAt | Scrape timestamp (ISO 8601) |

### Cost Estimate

- **~100 jobs** (5 pages, 1 keyword): ~$0.01–$0.02 (residential proxy)
- **~1,000 jobs** (50 pages): ~$0.10–$0.20
- **~10,000 jobs** (500 pages): ~$1.00–$2.00
- With `scrapeJobDetails: true`: ~2–3x cost (individual page requests)
- Residential proxies recommended for reliability

### Tips

1. **Start simple**: Run with default settings first to verify results
2. **Combine keywords + locations**: Each combination creates a separate search
3. **Job details**: Enable `scrapeJobDetails` only when you need full descriptions
4. **Freshness**: Use `jobAge` filter for recent postings only
5. **Rate limits**: Keep maxConcurrency at 3-5 for stability
6. **Scheduling**: Schedule daily/weekly runs to track new postings

### FAQ

**Q: Does this need a browser?**
A: No. This actor uses HTTP requests only — no Puppeteer or Playwright. Fast and cost-effective.

**Q: Why residential proxies?**
A: Naukri.com has anti-bot protection that may block datacenter IPs. Residential proxies (especially India-based) provide the best success rate.

**Q: How many jobs can I scrape?**
A: Naukri limits search results to ~50 pages (~1,000 jobs) per query. Use multiple keyword + location combinations for larger datasets.

**Q: What if I get 0 results?**
A: Naukri may update their HTML structure. Check the actor logs for debug info and report issues.

# Actor input Schema

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

Job search keywords (e.g., 'python developer', 'data analyst'). Leave empty to browse all jobs.
## `locations` (type: `array`):

Filter by city or region (e.g., 'bangalore', 'mumbai', 'delhi ncr'). Leave empty for all India.
## `experienceMin` (type: `integer`):

Minimum years of experience required. 0 for freshers.
## `experienceMax` (type: `integer`):

Maximum years of experience. Set high to include all.
## `salaryMin` (type: `integer`):

Minimum annual salary in lakhs. 0 for no filter.
## `salaryMax` (type: `integer`):

Maximum annual salary in lakhs. 0 for no filter.
## `jobAge` (type: `string`):

Filter by how recently jobs were posted.
## `workFromHome` (type: `string`):

Filter for remote/WFH jobs.
## `sortBy` (type: `string`):

Sort order for results.
## `maxPages` (type: `integer`):

Maximum number of pages to scrape per keyword-location combination. Each page has ~20 jobs.
## `scrapeJobDetails` (type: `boolean`):

Visit each job page to get full description, company info, and extra details. Slower but more data.
## `maxConcurrency` (type: `integer`):

Maximum concurrent requests. Lower = safer, higher = faster.
## `proxyConfig` (type: `object`):

Residential proxies recommended for Naukri.com. India-based proxies work best.

## Actor input object example

```json
{
  "keywords": [
    "software engineer"
  ],
  "locations": [],
  "experienceMin": 0,
  "experienceMax": 30,
  "salaryMin": 0,
  "salaryMax": 0,
  "jobAge": "",
  "workFromHome": "",
  "sortBy": "relevance",
  "maxPages": 5,
  "scrapeJobDetails": false,
  "maxConcurrency": 3,
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
````

# Actor output Schema

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

Naukri job ID

## `jobTitle` (type: `string`):

Job title / position name

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

Hiring company name

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

Company rating on Naukri (out of 5)

## `companyReviewsCount` (type: `string`):

Number of company reviews

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

Required experience range (e.g., '2-5 Yrs')

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

Salary range (e.g., '5-10 Lakhs')

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

Job location(s)

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

Required skills (comma-separated)

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

Job description text

## `industry` (type: `string`):

Industry / sector

## `functionalArea` (type: `string`):

Functional area / department

## `roleCategory` (type: `string`):

Role category

## `role` (type: `string`):

Specific role

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

Full Time / Part Time / Contract

## `education` (type: `string`):

Required education / qualification

## `postedDate` (type: `string`):

When the job was posted

## `vacancyCount` (type: `string`):

Number of vacancies

## `workFromHome` (type: `string`):

WFH type (Remote / Hybrid / Office)

## `companyUrl` (type: `string`):

Company profile URL on Naukri

## `jobUrl` (type: `string`):

Direct link to job listing on Naukri

## `applyUrl` (type: `string`):

Direct apply URL

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

Keyword used to find this job

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

ISO timestamp when data was scraped

# 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": [
        "software engineer"
    ],
    "locations": [],
    "proxyConfig": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/naukri-job-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": ["software engineer"],
    "locations": [],
    "proxyConfig": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/naukri-job-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 '{
  "keywords": [
    "software engineer"
  ],
  "locations": [],
  "proxyConfig": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call logiover/naukri-job-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Naukri Job Scraper",
        "description": "Scrape thousands of job listings from Naukri.com - India's #1 job portal. Extract job title, company, salary, location, experience, skills & more. Optional detail scraping for full description, education, industry & role data. Uses residential proxies to bypass anti-bot protection. Fast & reliable.",
        "version": "0.0",
        "x-build-id": "KBVTkMSDi0eXyY7PT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logiover~naukri-job-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logiover-naukri-job-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/logiover~naukri-job-scraper/runs": {
            "post": {
                "operationId": "runs-sync-logiover-naukri-job-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/logiover~naukri-job-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-logiover-naukri-job-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": {
                    "keywords": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Job search keywords (e.g., 'python developer', 'data analyst'). Leave empty to browse all jobs.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Filter by city or region (e.g., 'bangalore', 'mumbai', 'delhi ncr'). Leave empty for all India.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "experienceMin": {
                        "title": "Minimum Experience (Years)",
                        "minimum": 0,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Minimum years of experience required. 0 for freshers.",
                        "default": 0
                    },
                    "experienceMax": {
                        "title": "Maximum Experience (Years)",
                        "minimum": 0,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Maximum years of experience. Set high to include all.",
                        "default": 30
                    },
                    "salaryMin": {
                        "title": "Minimum Salary (Lakhs/Year)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Minimum annual salary in lakhs. 0 for no filter.",
                        "default": 0
                    },
                    "salaryMax": {
                        "title": "Maximum Salary (Lakhs/Year)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum annual salary in lakhs. 0 for no filter.",
                        "default": 0
                    },
                    "jobAge": {
                        "title": "Job Posting Age",
                        "enum": [
                            "",
                            "1",
                            "3",
                            "7",
                            "15",
                            "30"
                        ],
                        "type": "string",
                        "description": "Filter by how recently jobs were posted.",
                        "default": ""
                    },
                    "workFromHome": {
                        "title": "Work From Home",
                        "enum": [
                            "",
                            "1",
                            "2",
                            "3"
                        ],
                        "type": "string",
                        "description": "Filter for remote/WFH jobs.",
                        "default": ""
                    },
                    "sortBy": {
                        "title": "Sort By",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "Sort order for results.",
                        "default": "relevance"
                    },
                    "maxPages": {
                        "title": "Max Pages Per Search",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of pages to scrape per keyword-location combination. Each page has ~20 jobs.",
                        "default": 5
                    },
                    "scrapeJobDetails": {
                        "title": "Scrape Full Job Details",
                        "type": "boolean",
                        "description": "Visit each job page to get full description, company info, and extra details. Slower but more data.",
                        "default": false
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum concurrent requests. Lower = safer, higher = faster.",
                        "default": 3
                    },
                    "proxyConfig": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Residential proxies recommended for Naukri.com. India-based proxies work best.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
