# Naukri.com Scraper — India Jobs & Salaries, No Phones (`highbrow_fame/naukri-jobs`) Actor

India job ads from naukri.com: title, company or consultant, experience, salary with min/max in rupees and lakhs, locations, work mode, skills, posted date, and the full ad if you want. No phones.

- **URL**: https://apify.com/highbrow\_fame/naukri-jobs.md
- **Developed by:** [yestrue](https://apify.com/highbrow_fame) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.80 / 1,000 job delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Naukri.com Scraper — India Jobs & Salaries, No Phones

Get job ads from naukri.com, India's largest job board: title, company, whether a company or a placement consultant posted it, the experience range, the salary as naukri shows it plus its minimum and maximum in rupees and in lakhs, locations, office / hybrid / remote, key skills, when it was posted, walk-in dates and the company's rating — and, if you want, the full ad, role, department, industry, education, localities and how many people applied. Paste your naukri search links — or just type a job title and a city.

**Why this one**

- 🔗 **Your search, as you set it up.** Set every filter you like on naukri.com — experience, salary, freshness, work mode, location, industry, company or consultant — and paste the link. Or type keywords and places here ("data analyst" in "Hyderabad", "accountant" in "Mumbai") and choose experience, salary bands, freshness, work mode and "posted by" below.
- ⚡ **Fast, and to the end of a search.** A live test run read four searches — data analysts in Hyderabad with 3 years' experience posted in the last 15 days, hybrid or remote jobs in Pune paying 10-25 lakhs, sales jobs paying 50 lakhs and more, accountant jobs in Mumbai from consultants, newest first — 5,219 jobs in about 2 minutes. naukri lets a search be read to its last page: another run read 11,480 python developer jobs in Bangalore in one go.
- 💰 **Salaries you can sort by.** Next to naukri's own salary line ("2.25-3 Lacs PA") every job has `salaryMin` and `salaryMax` in rupees a year and `salaryMinLakhs` / `salaryMaxLakhs`. When the employer hides the pay ("Not disclosed" — 3,141 of 5,219 jobs in that run) they stay empty.
- 🏢 **Company or consultant.** Every job says `postedBy`: `company` or `consultant` (a placement agency), and for consultants `hiringFor` — the client label they give ("Client of …", "Confidential").
- 🔒 **No phone numbers, no recruiter names.** Companies and agencies are named by their company name only. Walk-in contact persons and their phones, which naukri keeps with the job, are never read. Phone numbers (Indian mobiles in any spacing, even cut in half) and e-mail addresses in the ads become `[phone removed]` / `[e-mail removed]`, and the sentences and sign-off lines that name a recruiter ("please call Devika …", "HR Contact Person: …", "Regards, / <name>") are taken out.
- 💸 **You pay only for jobs delivered.** A link that is not a naukri search, or a place naukri does not know, comes back as a free record with the reason.

### What you get

For every job:

| Field | What it is |
|---|---|
| `title`, `jobId`, `url` | the job ad |
| `company`, `companyId`, `companyJobsUrl`, `logo` | who posted it, and their page of jobs on naukri |
| `postedBy`, `hiringFor` | `company` or `consultant`; a consultant's client label |
| `experience`, `experienceMin`, `experienceMax` | naukri's experience line ("0-4 Yrs") and its years |
| `salary`, `salaryMin`, `salaryMax`, `salaryMinLakhs`, `salaryMaxLakhs`, `salaryCurrency`, `salaryPeriod` | naukri's salary line, and its numbers (INR a year) |
| `locationText`, `locations`, `workplace` | where, as naukri shows it, as a list of cities, and `office` / `hybrid` / `remote` |
| `skills` | the skills and tags on the job |
| `postedAt`, `postedAgo` | when it was posted, and naukri's "10 Days Ago" |
| `vacancies`, `isWalkIn`, `walkInDates`, `appliesOnCompanySite` | openings, walk-in interviews, and jobs that are applied for on the company's own site |
| `companyRating`, `companyReviews` | the company's AmbitionBox rating as naukri shows it |
| `snippet` | the short text naukri shows in the results |
| `input`, `position`, `scrapedAt`, `status`, `error` | which search it came from, and why a search gave nothing |

With **Open every job for the full ad** also: `description`, `role`, `roleCategory`, `department`, `industry`, `employmentType`, `educationUG`, `educationPG`, `educationDoctorate`, `keySkills` (the ones naukri highlights), `otherSkills`, `localities`, `hybridDetail`, `applicants`, `views`, `walkIn` (dates and hours), `companyWebsite` — and `detailsError` if a job went offline between the search and its page.

#### Example

A real record from a live run with the full ad — "telecaller" in Hyderabad, 25 September 2026:

```json
{
  "input": "telecaller in Hyderabad",
  "position": 62,
  "jobId": "070326020593",
  "url": "https://www.naukri.com/job-listings-phone-banking-officer-customer-care-executive-hdfc-bank-hyderabad-0-to-4-years-070326020593",
  "title": "Walk-in || Phone Banking Officer (Customer Care Executive )",
  "company": "Hdfc Bank",
  "companyId": 40927,
  "companyJobsUrl": "https://www.naukri.com/hdfc-bank-jobs-careers-213",
  "postedBy": "company",
  "hiringFor": null,
  "experience": "0-4 Yrs",
  "experienceMin": 0,
  "experienceMax": 4,
  "salary": "2.25-3 Lacs PA",
  "salaryMin": 225000,
  "salaryMax": 300000,
  "salaryMinLakhs": 2.25,
  "salaryMaxLakhs": 3,
  "salaryCurrency": "INR",
  "salaryPeriod": "year",
  "locationText": "Hyderabad(HITEC City)",
  "locations": ["Hyderabad"],
  "workplace": "office",
  "skills": ["Inbound", "Outbound", "Voice", "BPO", "Customer Service", "Solving Queries", "Calling", "Phone Banking"],
  "postedAt": "2026-09-15T09:41:36.537Z",
  "postedAgo": "10 Days Ago",
  "vacancies": 38,
  "isWalkIn": true,
  "walkInDates": "16 Sep - 30 Sep",
  "appliesOnCompanySite": false,
  "companyRating": 3.8,
  "companyReviews": 57441,
  "logo": "https://img.naukimg.com/logo_images/groups/v1/67548.gif",
  "snippet": "Male / Female.\nExperience : 0 to 4. Any Graduation Completed. Age 35 Below.\nPreferred candidate profile .",
  "description": "Designation : Phone Banker\nJD :\nDomestic Inbound and Outbound\nCustomer care\nProblem solving\nPreferred candidate profile\nMale / Female\nExperience : 0 to 4\nAny Graduation Completed\nAge 35 Below\nLanguage…",
  "role": "Voice / Blended - Other",
  "roleCategory": "Voice / Blended",
  "department": "Customer Success, Service & Operations",
  "industry": "Banking",
  "employmentType": "Full Time, Permanent",
  "educationUG": ["Any Graduate"],
  "educationPG": [],
  "educationDoctorate": [],
  "keySkills": ["Inbound", "Outbound", "Voice"],
  "otherSkills": ["BPO", "Customer Service", "Solving Queries", "Calling", "Phone Banking", "Inbound Calls", "Voice Process", "…"],
  "localities": ["HITEC City"],
  "hybridDetail": null,
  "applicants": 1317,
  "views": 43578,
  "walkIn": { "from": "2026-09-16 00:00:00", "to": "2026-09-30 00:00:00", "hours": "11.00 AM - 3.00 PM" },
  "companyWebsite": null,
  "status": "OK",
  "scrapedAt": "2026-09-25T15:23:03.867Z"
}
```

### How to use it

1. Paste **Search links** from naukri.com, one per line — or type **Keywords** and **Places** (every keyword is searched in every place) and choose the filters.
2. Set **Max jobs per search**, and tick **Open every job for the full ad** if you need the description, role, industry, education and applicants.
3. Press **Start**, and download the results from the **Output** tab as JSON, CSV or Excel.

To follow new jobs, save your input as a task with **Freshness** set to "Last 1 day" and schedule it daily.

You can also call it from the Apify API, from Make, Zapier or n8n, or from an AI agent through the Apify MCP server.

### Pricing

You are charged **per job delivered** — see the price on this page. Opening jobs for the full ad costs nothing extra, only time (about 3.8 jobs a second: 900 jobs with their full ads in 236 seconds in a live run). Links that are not naukri searches and places naukri does not know are free.

### FAQ

**How many jobs per search?** As many as the search has: naukri lets a search be read to its last page, 100 jobs a page. A live run read "python developer" in Bangalore to the end — 11,480 jobs in 7.5 minutes, of the 11,709 naukri counted: now and then a page holds a few jobs less than 100, so a big search comes back about 2% short of naukri's count. Another run stopped at 2,000 of 3,626 hybrid and remote jobs in Pune because **Max jobs per search** was 2,000.

**Are the filters obeyed?** Yes: naukri applies them, and the run checks the salary bands itself. In one live run, 405 of 405 data analyst jobs in Hyderabad from a "last 15 days" link were posted within 15 days and every one with an experience range included 3 years (2 had no range); 2,000 of 2,000 jobs from a "hybrid or remote" link were hybrid (1,968) or remote (32); 486 of 486 shown salaries in a "10-15 and 15-25 lakhs" link were in those bands; 2,000 of 2,000 "consultant jobs" came from consultants; and a date-sorted search was newest first in 1,994 of 1,999 steps. naukri counts a job in a salary band when its pay range overlaps it (an 8-18 lakh job is in 10-15). It let a few jobs through whose shown pay is nowhere near ("55,000-70,000 PA" in a "50 lakhs and more" search): the run leaves those out — 6 of 820 in that search.

**What if naukri does not know my place?** naukri quietly ignores a place it does not know and shows jobs from all of India. The run checks every place first: one that naukri has no jobs in comes back as a free `NOT_FOUND` record instead of thousands of wrong jobs.

**Why no phone numbers or recruiter names?** They are personal data. Every job has its `url`; applicants apply on naukri. The contact person and phone that naukri keeps with walk-in jobs are never read. In the ads, phone numbers and e-mail addresses are removed, and so are the sentences and lines that name a recruiter, by rules that know how Indian job ads write them ("Pls call Devika …", "HR Contact Person: …", "Reference HR name : …", "Mention HR … on top of your resume", "Thanks & Regards, / <name>", "<name> – … HR Services Limited"). Rules can miss an unusual wording: in the last two live runs with 1,920 full ads, a recruiter's first name got through in 3 jobs ("HR Recruiter <name>", and "HR <name>" glued to the next sentence in naukri's snippet — both wordings are caught now). That is why the full ad is off by default; the short `snippet` and a consultant's `hiringFor` go through the same rules.

**Why is the company sometimes a person's name?** A few small employers and consultancies register on naukri under a person's name. The run shows the company name exactly as naukri publishes it.

**Is this affiliated with Naukri.com or Info Edge?** No. This is an independent tool that reads public job ads on naukri.com.

**Like it?** A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.

# Actor input Schema

## `searchUrls` (type: `array`):

Search on naukri.com, set the filters you want (experience, salary, freshness, work mode, location, industry …) and paste the address of the results page. One per line. Links like naukri.com/python-developer-jobs-in-bangalore, naukri.com/sales-jobs or naukri.com/jobs-in-pune.

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

Or search here without a link: job titles, skills or companies (data analyst, java, nurse, Infosys). Each keyword is searched in each place below, or in all of India when there is no place. The filters below apply.

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

Cities or states as naukri.com knows them (Bangalore, Delhi / NCR, Mumbai (All Areas), Hyderabad, Kerala). A place without keywords gives all its jobs.

## `experienceYears` (type: `integer`):

Optional: only jobs whose experience range includes this many years, as naukri's own Experience filter (0 = freshers).

## `salaryRanges` (type: `array`):

Optional: naukri's salary filter. A job counts when its pay range overlaps a chosen band (an 8-18 lakh job is in 10-15). Jobs that hide their salary are placed by naukri.

## `postedWithinDays` (type: `string`):

Optional: only jobs posted within this many days.

## `workplaces` (type: `array`):

Optional: work from office, hybrid or remote (any of the chosen).

## `postedBy` (type: `string`):

Optional: jobs posted by the company itself, or by placement consultants.

## `sortBy` (type: `string`):

Relevance (naukri's default) or newest first.

## `maxListingsPerSearch` (type: `integer`):

Stops each search after this many jobs. naukri.com lets a search be read to its end.

## `includeDetails` (type: `boolean`):

Off by default. Adds the full job description, role, department, industry, employment type, education, key skills, localities, applicants and views, walk-in dates and the company website. One more request per job, so slower. Sentences that name a recruiter are taken out of the ad by rules, which can miss an unusual wording — see the README.

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

How many searches to work on at the same time.

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

Used only when naukri.com turns a request down: the first try goes out directly.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.naukri.com/python-developer-jobs-in-bangalore"
  ],
  "postedWithinDays": "any",
  "postedBy": "any",
  "sortBy": "relevance",
  "maxListingsPerSearch": 30,
  "includeDetails": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Every result as a JSON record, with a status for each input.

## `resultsCsv` (type: `string`):

The same records as CSV, for a spreadsheet.

# 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 = {
    "searchUrls": [
        "https://www.naukri.com/python-developer-jobs-in-bangalore"
    ],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("highbrow_fame/naukri-jobs").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 = {
    "searchUrls": ["https://www.naukri.com/python-developer-jobs-in-bangalore"],
    "maxListingsPerSearch": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("highbrow_fame/naukri-jobs").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 '{
  "searchUrls": [
    "https://www.naukri.com/python-developer-jobs-in-bangalore"
  ],
  "maxListingsPerSearch": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call highbrow_fame/naukri-jobs --silent --output-dataset

```

## MCP server setup

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

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/tceQl8UkTfKqfDdJu/builds/aaMVQJr2cOeQ2HCSY/openapi.json
