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

Scrape public Naukri job listings by keyword, location, and start URLs.

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

## Pricing

from $0.70 / 1,000 item processeds

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

Use this Naukri job scraper to collect public Naukri job listings by keyword, location, experience range, or start URL, then export clean job data to CSV, JSON, Excel, or API.

Use this Naukri scraper for recruiting research, job-market monitoring, salary and skill analysis, company hiring intelligence, repeatable job-board exports, and Naukri API-style workflows.

### Who is it for?

- Recruiting agencies monitoring fresh Naukri openings for sourcing and outreach.
- Talent-market analysts tracking hiring demand, skills, salaries, and locations.
- Job aggregators and data teams building repeatable public job-board exports.
- Sales teams identifying companies that are actively hiring for target roles.

### At a glance

- **Best for:** job-market monitoring, recruiting research, hiring intelligence, salary/skill analysis, and job-board datasets.
- **Inputs:** keywords, location, start URLs, experience filters, maximum jobs, description toggle, and proxy settings.
- **Outputs:** one public job listing per row with title, company, location, experience, salary, skills, description, apply link, and source URL when available.
- **Exports:** download CSV, JSON, Excel, XML, RSS, or use the Apify Dataset API.
- **Cost:** `$0.005` per run plus `$0.001` for each saved job listing.

### Ready-to-run examples

- [Software engineer jobs in Bangalore](https://apify.com/fetch_cat/naukri-naukrigulf-jobs-scraper/examples/naukri-software-engineer-bangalore-jobs) — a five-job starter run for checking the output.
- [Data analyst jobs in Bangalore](https://apify.com/fetch_cat/naukri-naukrigulf-jobs-scraper/examples/naukri-data-analyst-bangalore-jobs) — exports up to 20 listings with public descriptions when available.
- [Backend developer jobs in Bangalore](https://apify.com/fetch_cat/naukri-naukrigulf-jobs-scraper/examples/naukri-backend-developer-bangalore-jobs) — a larger 60-job dataset for market research.

### What can it do?

Naukri Jobs Scraper collects public job listings from verified Naukri India search or job pages. It can generate search URLs from keywords and locations, or process public start URLs you provide.

- **Search Naukri India:** collect verified Naukri public listings by role, location, and start URL.
- **Generate job searches:** combine keywords, locations, and experience filters without hand-building URLs.
- **Process public start URLs:** paste tuned search or job URLs when you already have a specific source page.
- **Export job intelligence:** save titles, companies, skills, salaries, experience, locations, descriptions, and apply links when visible.
- **Use as a job listings API:** run through Apify API, export CSV/Excel/JSON, schedule monitoring, or connect AI agents through Apify MCP.

### Output fields

| Field | Description |
| --- | --- |
| `source` | `naukri` |
| `searchUrl` | Search URL that produced the job when available |
| `jobUrl` | Public job listing URL |
| `jobId` | Job identifier when visible |
| `title` | Job title |
| `companyName` | Hiring company name |
| `companyUrl` | Public company URL when available |
| `location` | Listed job location |
| `postedAt` | Posted date text from the site |
| `experience` | Experience range text |
| `salary` | Salary text when public |
| `employmentType` | Employment type when public |
| `workMode` | Remote, hybrid, office, or similar text when public |
| `education` | Education requirement when public |
| `skills` | Skills or tags returned by the listing |
| `description` | Public job description when `includeDescription` is enabled and available |
| `industry` | Industry text when visible |
| `functionArea` | Function area or department text when visible |
| `applyUrl` | Apply URL when public |
| `scrapedAt` | Timestamp when the row was saved |

### Pricing

This Actor uses Apify pay-per-event pricing. It charges a one-time `start` event when a run begins and an `item` event for each dataset job posting saved. Current rates and plan-tier discounts are shown on the live [Apify Pricing tab](https://apify.com/fetch_cat/naukri-naukrigulf-jobs-scraper/pricing).

Apify may also charge platform usage for compute, storage, proxies, or data transfer. Check the Actor run and the live Pricing tab for the exact cost shown to your account.

### Quick start

1. Use the default verified `site`: `naukri`.
2. Enter one or more `keywords`, add a `location`, or paste public `startUrls`.
3. Optionally set `experienceMin` and `experienceMax`.
4. Set `maxItems` to a small number for the first run.
5. Keep `includeDescription` enabled if you need job descriptions.
6. Run the Actor and export the dataset as JSON, CSV, Excel, XML, RSS, or through the Apify API.

### Example input

```json
{
  "site": "naukri",
  "keywords": ["software engineer", "backend developer"],
  "location": "Bangalore",
  "experienceMin": 2,
  "experienceMax": 6,
  "maxItems": 50,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "IN"
  }
}
```

### Example output

```json
{
  "source": "naukri",
  "searchUrl": "https://www.naukri.com/software-engineer-jobs-in-bangalore",
  "jobUrl": "https://www.naukri.com/job-listings-example",
  "jobId": "123456789",
  "title": "Software Engineer",
  "companyName": "Example Technologies",
  "companyUrl": "https://www.naukri.com/example-technologies-jobs-careers",
  "location": "Bangalore",
  "postedAt": "2 days ago",
  "experience": "2-5 Yrs",
  "salary": "Not disclosed",
  "employmentType": "Full Time",
  "workMode": "Hybrid",
  "education": null,
  "skills": ["JavaScript", "Node.js", "API"],
  "description": "Example public job description...",
  "industry": "IT Services",
  "functionArea": "Engineering - Software",
  "applyUrl": "https://www.naukri.com/job-listings-example",
  "scrapedAt": "2026-07-03T10:00:00.000Z"
}
```

### Input configuration

| Setting | JSON key | Description |
| --- | --- | --- |
| Job site | `site` | Verified Naukri India source. NaukriGulf is deferred until a representative non-empty route is verified. |
| Keywords | `keywords` | Job titles, roles, or skills to search. |
| Location | `location` | City, region, country, or remote keyword for generated searches. |
| Start URLs | `startUrls` | Public Naukri search/detail URLs to process. |
| Minimum experience | `experienceMin` | Optional minimum years of experience for generated searches. |
| Maximum experience | `experienceMax` | Optional maximum years of experience for generated searches. |
| Maximum jobs | `maxItems` | Maximum saved job listings across all sources. |
| Include descriptions | `includeDescription` | Save public job descriptions when available. |
| Proxy configuration | `proxyConfiguration` | Apify proxy settings. Residential proxy is recommended when traffic is blocked. |

### Tips for better results

- **Start small:** Use `maxItems: 10` to confirm the query before scaling up.
- **Pick one site first:** Use `site: "naukri"` and start with a small maxItems value when debugging a new search.
- **Use specific keywords:** Role plus skill terms usually return cleaner listings than broad words like `manager`.
- **Add experience filters carefully:** Some site URLs may ignore unsupported filters.
- **Use start URLs for exact searches:** Paste the public search URL when you already tuned filters in the browser.

### Naukri API usage with Node.js

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });

const run = await client.actor('fetch_cat/naukri-naukrigulf-jobs-scraper').call({
  site: 'naukri',
  keywords: ['software engineer'],
  location: 'Bangalore',
  maxItems: 20,
});

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

### Naukri jobs API usage with Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])

run = client.actor('fetch_cat/naukri-naukrigulf-jobs-scraper').call(run_input={
    'site': 'naukri',
    'keywords': ['software engineer'],
    'location': 'Bangalore',
    'maxItems': 20,
})

items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### API usage with cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~naukri-naukrigulf-jobs-scraper/runs?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"site":"naukri","keywords":["software engineer"],"location":"Bangalore","maxItems":20}'
```

### MCP and AI agents

Use the official Apify MCP server to run this Actor from compatible AI tools. The default server can search and run Actors; the focused URL exposes only this Actor.

Focused MCP URL:

```text
https://mcp.apify.com?tools=fetch_cat/naukri-naukrigulf-jobs-scraper
```

Claude CLI setup example:

```bash
claude mcp add apify-naukri-jobs "https://mcp.apify.com?tools=fetch_cat/naukri-naukrigulf-jobs-scraper"
```

Generic MCP JSON config:

```json
{
  "mcpServers": {
    "apify-naukri-jobs": {
      "url": "https://mcp.apify.com?tools=fetch_cat/naukri-naukrigulf-jobs-scraper"
    }
  }
}
```

Example prompts:

- "Run Naukri Jobs Scraper for backend developer jobs in Bangalore and summarize common skills."
- "Use this public Naukri search URL and return job titles, companies, locations, and apply links."

### Limits and notes

This Actor targets public job listings visible without logging in. It does not collect resumes, private recruiter data, candidate profiles, account-only fields, or application form content.

Naukri can change page structures or block traffic. If a run returns fewer jobs than expected, try a smaller `maxItems`, a narrower query, or Apify Proxy.

### FAQ

#### What data can I export with naukri job scraper?

You can export job title, company, company URL, location, experience, salary, posted date, skills, work mode, education, industry, function area, public job URL, apply URL, source, search URL, and monitoring timestamps when those fields are visible.

#### Can I export to CSV, Excel, JSON, or API?

Yes. Apify datasets can be exported as JSON, CSV, Excel, XML, RSS, HTML, or queried through the Apify API.

#### Does it require a Naukri login?

No. The Actor is designed for public job pages and public search results.

#### Does it scrape NaukriGulf?

Not in this verified build. NaukriGulf coverage is deferred until a representative non-empty route is verified, so public inputs and copy are narrowed to Naukri.

#### Why are some fields empty?

Some job cards do not expose salary, work mode, education, company URL, or apply URL publicly. The Actor leaves unavailable fields empty instead of guessing.

#### Can I run Naukri Jobs Scraper through an API, schedule, or MCP client?

Yes. You can run the Actor with the Apify API, create an Apify schedule for repeat monitoring, or call it from compatible AI tools through the focused Apify MCP URL in this README.

#### Can I schedule job monitoring?

Yes. Create an Apify schedule for a saved input and compare new dataset rows by `jobUrl` or `jobId`.

#### How much does it cost to use Naukri Jobs Scraper?

The current configuration charges `$0.005` per run plus `$0.001` per saved job listing, before any separate Apify platform usage such as proxies, compute, or storage.

### Related actors

- [LinkedIn Jobs Scraper](https://apify.com/fetch_cat/linkedin-jobs-scraper)
- [Greenhouse Jobs Scraper](https://apify.com/fetch_cat/greenhouse-jobs-scraper)
- [Ashby Jobs Scraper](https://apify.com/fetch_cat/ashby-jobs-scraper)
- [SmartRecruiters Jobs Scraper](https://apify.com/fetch_cat/smartrecruiters-jobs-scraper)
- [Workday Jobs Scraper](https://apify.com/fetch_cat/workday-jobs-scraper)

### Support

If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.

Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.

# Actor input Schema

## `site` (type: `string`):

Scrape verified Naukri India public listings. NaukriGulf coverage is deferred until a representative non-empty route is verified.

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

Job title, skill, or role keywords. You can provide one string or multiple keywords.

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

City, region, or country to include in generated search URLs, for example Bangalore or Dubai.

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

Optional public Naukri search result or job detail URLs. These are processed in addition to generated keyword searches.

## `experienceMin` (type: `integer`):

Optional minimum years of experience where supported by the target site's search URL format.

## `experienceMax` (type: `integer`):

Optional maximum years of experience where supported by the target site's search URL format.

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

Maximum number of job postings to save across all selected sources.

## `maxJobs` (type: `integer`):

Optional alias for Maximum jobs, useful for API clients that use maxJobs.

## `changedSince` (type: `string`):

Optional ISO date/time checkpoint. Jobs without parseable posting dates are preserved so incremental runs do not lose fresh items.

## `includeDescription` (type: `boolean`):

Save public job descriptions when they are available in search/detail page data.

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

Apify proxy configuration. Residential proxy is recommended if the sites block datacenter traffic.

## Actor input object example

```json
{
  "site": "naukri",
  "keywords": [
    "software engineer"
  ],
  "location": "Bangalore",
  "startUrls": [],
  "maxItems": 20,
  "includeDescription": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IN"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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"
    ],
    "location": "Bangalore",
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/naukri-naukrigulf-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["software engineer"],
    "location": "Bangalore",
    "startUrls": [],
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "software engineer"
  ],
  "location": "Bangalore",
  "startUrls": []
}' |
apify call fetch_cat/naukri-naukrigulf-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fetch_cat/naukri-naukrigulf-jobs-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Z6mZ9SksMrlJwFT6n/builds/OAjGQeqDloxqL54mH/openapi.json
