# Naukri Fresh Jobs (`schnellscrapers/naukri-fresh-jobs`) Actor

Find fresh Naukri jobs by keyword and location with 1–30 day freshness, newest-first sorting, normalized salary and experience, direct job URLs, and optional known-ID delta filtering for recruiter alerts.

- **URL**: https://apify.com/schnellscrapers/naukri-fresh-jobs.md
- **Developed by:** [Nate Schnell](https://apify.com/schnellscrapers) (community)
- **Categories:** Jobs, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 jobs

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?

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 Fresh Jobs

Find fresh Naukri jobs for a keyword and location in one inexpensive API-backed run. Results are sorted newest-first by default, normalized for recruiting workflows, and can be compared against a list of previously seen job IDs.

### What you get

- Fresh 1-, 3-, 7-, 15-, or 30-day Naukri jobs
- Title, company, location, salary, experience, posting age, skills, description, IDs, and direct job URL
- Date or relevance ordering
- `knownJobIds` plus `newJobsOnly` for alert and delta workflows
- One structured JSON request; no browser startup, detail-page fan-out, or proxy input

### Input

```json
{
  "keyword": "software developer",
  "location": "Bengaluru",
  "freshnessDays": 3,
  "sortBy": "date",
  "maxJobs": 20,
  "knownJobIds": [],
  "newJobsOnly": false
}
```

`keyword` is required. Use `maxJobs` to cap each run at 100 results. For a scheduled alert, pass the IDs from the previous run in `knownJobIds` and set `newJobsOnly` to `true`. On a first run with no known IDs, fetched jobs are marked new.

### Output

```json
{
  "jobId": "070826039643",
  "title": "Software Engineer",
  "companyName": "Example Technologies",
  "location": "Bengaluru",
  "salary": "Not disclosed",
  "experience": "2-5 Yrs",
  "postedLabel": "Just Now",
  "postedAt": "2026-08-07T15:06:15.148Z",
  "jobUrl": "https://www.naukri.com/job-listings-software-engineer-example-070826039643",
  "skills": "Java, Spring Boot, REST API",
  "description": "Source job description HTML, when supplied.",
  "companyId": "123456",
  "companySlug": "example-technologies-jobs-careers-123456",
  "sourceSearchUrl": "https://www.naukri.com/jobapi/v3/search?...",
  "isNew": "true",
  "scrapedAt": "2026-08-07T15:06:20.000Z"
}
```

### Pricing

Pay per emitted job, targeted at **$1.00 per 1,000 jobs**, with no monthly fee. Small tests fit within Apify Free-plan platform credit; keep `maxJobs` low when testing.

### Integration

```bash
apify call schnellscrapers/naukri-fresh-jobs \
  --input '{"keyword":"data scientist","freshnessDays":1,"maxJobs":20}' \
  --output-dataset
```

The output is a standard Apify dataset and can be consumed from the API, Python, JavaScript, Make, n8n, or scheduled Apify tasks.

### FAQ

#### Is it legal to scrape Naukri?

Use this actor only for data and workflows you are authorized to use. You are responsible for complying with applicable law, contracts, and the rules that apply to your account and use case. This actor makes a direct request to the public search data source and does not bypass a login or CAPTCHA.

#### Does it fetch full job-detail pages?

No. It uses the search JSON response, which already contains the core recruiting fields. That keeps runs fast and predictable. The source description is included when the search response supplies it.

#### How do I build a job alert?

Schedule the actor, save each run's `jobId` values, and pass them back as `knownJobIds` with `newJobsOnly: true` on the next run.

#### Why are salary or location values sometimes null?

Naukri does not populate every field for every listing. The actor preserves missing source values as `null` instead of guessing.

# Actor input Schema

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

Naukri search keyword, such as `software developer`, `data scientist`, or `sales manager`.

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

Optional location text, such as `Bengaluru`, `Mumbai`, or `remote`. Leave blank to search all locations.

## `freshnessDays` (type: `integer`):

Only include jobs posted within this many days. Use one of 1, 3, 7, 15, or 30. Fresh 1-day and 3-day runs are useful for recruiting alerts; larger windows improve recall.

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

Order results by date for alert-style feeds or relevance for broader discovery.

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

Hard cap on jobs requested and emitted in this run. Keep it small for a cost-bounded alert run; maximum is 100.

## `knownJobIds` (type: `array`):

Optional Naukri job IDs already seen by your workflow. Used to mark records as new and, with newJobsOnly enabled, exclude known jobs before dataset writes.

## `newJobsOnly` (type: `boolean`):

When enabled, emit only jobs not present in knownJobIds. On a first run with no known IDs, all fetched jobs are treated as new.

## Actor input object example

```json
{
  "keyword": "software developer",
  "freshnessDays": 3,
  "sortBy": "date",
  "maxJobs": 20,
  "knownJobIds": [],
  "newJobsOnly": false
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset of normalized Naukri jobs. Key fields: jobId, title, companyName, location, salary, experience, postedAt, jobUrl, skills, and isNew.

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

// Run the Actor and wait for it to finish
const run = await client.actor("schnellscrapers/naukri-fresh-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 = {
    "keyword": "software developer",
    "location": "",
    "knownJobIds": [],
}

# Run the Actor and wait for it to finish
run = client.actor("schnellscrapers/naukri-fresh-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 '{
  "keyword": "software developer",
  "location": "",
  "knownJobIds": []
}' |
apify call schnellscrapers/naukri-fresh-jobs --silent --output-dataset

```

## MCP server setup

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