# Naukri Jobs Scraper — Batch Search & Dedup (`muhammadafzal/naukri-jobs-scraper`) Actor

Scrape public Naukri jobs across role and location searches. Use for recruiting, salary research, and alerts. Not for candidate profiles, private data, login, or applications. Returns unique jobs with company, location, salary, experience, skills, description, rating, date, and URL. $0.01/job.

- **URL**: https://apify.com/muhammadafzal/naukri-jobs-scraper.md
- **Developed by:** [Muhammad Afzal](https://apify.com/muhammadafzal) (community)
- **Categories:** Jobs, Automation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 naukri job founds

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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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 — Batch Search & Dedup

**Naukri Jobs Scraper** collects public job listings from Naukri.com for multiple roles and locations in one Apify run. It is designed for recruiters, staffing agencies, hiring-intelligence teams, salary researchers, job-alert products, and AI agents that need predictable structured JSON instead of browser pages. The Actor deduplicates results globally by Naukri job ID, normalizes salary and experience ranges, preserves stable output keys, and supports concise or detailed records. No Naukri login, candidate profile, résumé, or application access is used.

### What data can I extract with Naukri Jobs Scraper?

Each paid event produces one unique, schema-valid job record.

| Field group | Included data |
|---|---|
| Job | ID, title, direct job URL, job type, vacancy count |
| Company | Name, Naukri company URL, logo, rating, review count, AmbitionBox URL |
| Location | One or more locations and normalized remote, hybrid, or office mode |
| Requirements | Experience text plus normalized minimum and maximum years |
| Compensation | Display salary plus normalized minimum and maximum annual INR values |
| Content | Skills, cleaned description, posted timestamp, relative posting age |
| Provenance | Input keyword, input location, source page, scrape timestamp |

Use `responseFormat: "concise"` when an AI agent needs compact records. The same fields are returned, but `description` is explicitly `null`. Use `responseFormat: "detailed"` to include up to 1,500 cleaned description characters while staying within a practical agent token budget.

### Use cases for Naukri job data

- Monitor which Indian companies are hiring for a technology or function.
- Build daily job alerts across several roles and cities.
- Compare disclosed salary ranges by skill, experience, and location.
- Measure hiring velocity for competitors or target accounts.
- Feed structured listings into an ATS, warehouse, dashboard, or RAG workflow.
- Identify companies with active vacancies for recruitment-business development.
- Analyze skills demand across Bengaluru, Hyderabad, Pune, Mumbai, Delhi NCR, and other markets.

Do not use this Actor for candidate profiles, personal contact data, private listings, résumé search, login automation, or automatic job applications. It only collects public job-listing information.

### How much will scraping Naukri cost you?

Naukri Jobs Scraper uses transparent pay-per-event pricing:

| Event | Price |
|---|---:|
| Actor start | $0.00005 per run, scaled by memory |
| Unique job stored | $0.01 per job |

The `maxResults` input is a global result and billing cap across every search in the run. Duplicate jobs, filtered listings, blocked requests, and records that cannot be stored are not charged as job events.

- 10 jobs cost approximately **$0.10**.
- 50 jobs cost approximately **$0.50**.
- 100 jobs cost approximately **$1.00**.

The Actor prints the maximum possible result cost before scraping and the actual charged-event total at completion. Apify platform usage and residential proxy traffic are handled through the Actor's Apify billing configuration.

### How to use Naukri Jobs Scraper

Enter one or more `searches`. Each search needs a keyword and can optionally include a location. The global filters apply to all searches. Results are deduplicated across the full run, so a listing matching both “Python developer” and “backend engineer” appears once.

#### Input example

```json
{
  "searches": [
    { "keyword": "python developer", "location": "bangalore" },
    { "keyword": "backend engineer", "location": "hyderabad" },
    { "keyword": "data engineer", "location": "pune" }
  ],
  "maxResults": 100,
  "freshnessDays": 7,
  "experienceMin": 2,
  "experienceMax": 8,
  "salaryMinLakhs": 10,
  "workMode": "any",
  "sortBy": "date",
  "responseFormat": "concise"
}
````

Jobs with undisclosed salary or experience remain eligible because absence of a field should not silently remove potentially useful listings. Set a specific work mode only when you want listings whose mode can be confidently classified.

#### Output example

```json
{
  "jobId": "130726001234",
  "title": "Senior Python Developer",
  "companyName": "Example Technologies",
  "companyUrl": "https://www.naukri.com/example-technologies-jobs-careers-1234",
  "companyLogoUrl": null,
  "locations": ["Bengaluru", "Hyderabad"],
  "workMode": "hybrid",
  "jobType": "Full Time",
  "experienceText": "3-7 Yrs",
  "experienceMin": 3,
  "experienceMax": 7,
  "salaryText": "12-18 Lacs P.A.",
  "salaryMinInr": 1200000,
  "salaryMaxInr": 1800000,
  "salaryCurrency": "INR",
  "skills": ["Python", "Django", "AWS"],
  "description": null,
  "postedAt": "2026-07-11T12:00:00.000Z",
  "postedDateRelative": "2 Days Ago",
  "vacancyCount": 4,
  "companyRating": 4.1,
  "companyReviewsCount": 123,
  "ambitionBoxUrl": "https://www.ambitionbox.com/reviews/example-reviews",
  "jobUrl": "https://www.naukri.com/job-listings-senior-python-developer-example-bengaluru-130726001234",
  "searchQuery": "python developer",
  "searchLocation": "bangalore",
  "sourcePage": 1,
  "scrapedAt": "2026-07-13T12:00:00.000Z"
}
```

The default dataset supports JSON, CSV, Excel, XML, and other Apify export formats. The default key-value store also contains an `OUTPUT` summary with counts, charges, warnings, and the dataset ID.

### Reliability and anti-blocking

Naukri applies bot protection and can reject ordinary datacenter traffic. The Actor uses an India-targeted Apify residential proxy, a real Chromium session, consistent cookies and fingerprints, conservative concurrency, retry-specific session rotation, and natural browser interception of Naukri's search response. A DOM-card extractor provides a secondary path if the response format changes.

Run state, seen job IDs, and charge counters are persisted for Apify migrations. Results are written immediately instead of being held until the end, so a late upstream failure does not discard already collected jobs. If all requests are blocked after every retry, the run fails honestly with an actionable terminal message rather than pretending that an empty dataset is valid.

### API and MCP usage

Run with JavaScript:

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/naukri-jobs-scraper').call({
  searches: [{ keyword: 'machine learning engineer', location: 'bangalore' }],
  maxResults: 25,
  freshnessDays: 3,
  responseFormat: 'concise'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Run with Python:

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('muhammadafzal/naukri-jobs-scraper').call(run_input={
    'searches': [{'keyword': 'data analyst', 'location': 'mumbai'}],
    'maxResults': 25,
    'responseFormat': 'concise',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

For AI agents, add the Actor through Apify's hosted MCP server at `https://mcp.apify.com?tools=muhammadafzal/naukri-jobs-scraper`. Agents can call the Actor, inspect the typed dataset schema, retrieve a preview, and paginate with the returned dataset ID.

### Other dedicated scrapers

- [StepStone Jobs Scraper](https://apify.com/muhammadafzal/stepstone-jobs-scraper)
- [AI Lead Enrichment](https://apify.com/muhammadafzal/ai-lead-enrichment)
- [B2B Lead Finder](https://apify.com/muhammadafzal/leads-finder-pro)
- [Google Maps Scraper](https://apify.com/muhammadafzal/google-maps-scraper)
- [LinkedIn-ready AI Web Scraper](https://apify.com/muhammadafzal/ai-web-extractor)
- [Google News Scraper](https://apify.com/muhammadafzal/google-news-scraper)
- [GitHub Repository Search](https://apify.com/muhammadafzal/github-repo-search-stars-language-topics)
- [Email Validator](https://apify.com/muhammadafzal/email-address-validator)
- [Contractor Leads Scraper](https://apify.com/muhammadafzal/contractor-lead-scraper)
- [Worldwide Dentist Scraper](https://apify.com/muhammadafzal/worldwide-dentist-scraper)

### FAQ

#### How many results can I scrape with Naukri Jobs Scraper?

Set `maxResults` from 1 to 1,000. It is a global cap across all searches and prevents duplicate billing when the same job matches more than one query.

#### Can I integrate Naukri Jobs Scraper with other apps?

Yes. Use Apify schedules, webhooks, Google Sheets, Make, Zapier, Slack, or your database integration to consume the dataset.

#### Can I use Naukri Jobs Scraper with the Apify API?

Yes. Call `muhammadafzal/naukri-jobs-scraper` through the Apify REST API or an official Apify client and read the run's default dataset.

#### Can I use Naukri Jobs Scraper through an MCP Server?

Yes. Use Apify's hosted MCP server and select this Actor as the tool. The declared input and dataset schemas help an AI agent construct valid calls and understand every returned field.

#### Do I need proxies to scrape Naukri?

Naukri commonly blocks datacenter traffic. The Actor configures an India residential proxy automatically on Apify; users do not need to provide proxy credentials.

#### Is it legal to scrape Naukri data?

This Actor is limited to publicly visible job-listing information and does not bypass login access. Laws and website terms vary by jurisdiction and use case. Review Naukri's current terms and applicable privacy, database, and employment-data rules before collecting, storing, or redistributing results.

#### Your feedback

If a field changes or a search behaves unexpectedly, open an Actor issue with the run ID, input, and affected job URL. Do not include tokens, cookies, or private personal data.

# Actor input Schema

## `searches` (type: `array`):

Use this when you need one or more Naukri keyword and location searches in a single run. Enter objects such as {"keyword":"python developer","location":"bangalore"}. Defaults to one software-engineer search and accepts 1–20 searches. This is not a list of candidate profiles or job-detail URLs.

## `maxResults` (type: `integer`):

Use this to cap the total unique jobs returned across all searches. Enter an integer such as 100. Defaults to 50 and accepts 1–1,000; at $0.01 per job, this is also the main cost cap. This is not a per-search limit.

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

Use this to include only recently posted Naukri jobs. Enter whole days from 0–30; for example, 1 means the last 24 hours. Defaults to 7 days, while 0 disables the age filter. This is not the Actor schedule interval.

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

Use this to keep jobs whose required experience overlaps a minimum number of years. Enter an integer such as 2. Defaults to 0 and accepts 0–50; jobs without disclosed experience remain eligible. This is not the applicant's exact years of experience.

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

Use this to keep jobs whose required experience overlaps a maximum number of years. Enter an integer such as 8. Defaults to 50 and accepts 0–50; it must be at least experienceMin. This is not a seniority label such as "manager".

## `salaryMinLakhs` (type: `integer`):

Use this to filter jobs with a disclosed maximum salary below an INR threshold. Enter lakhs per annum, such as 10 for ₹10 LPA. Defaults to 0 and accepts 0–200; jobs with undisclosed salary remain eligible. This is not a monthly salary or raw rupee amount.

## `workMode` (type: `string`):

Use this to restrict results by working arrangement. Choose "any", "remote", "hybrid", or "office"; for example, "remote" keeps work-from-home jobs. Defaults to "any" and includes listings whose mode is not disclosed. This is not a job-type filter such as contract or full-time.

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

Use this to choose the order requested from Naukri. Choose "relevance" or "date"; for example, "date" prioritizes newer listings. Defaults to "relevance" and does not change the global deduplication rule. This is not a dataset export sort applied after scraping.

## `responseFormat` (type: `string`):

Use this to control description size for humans and AI agents. Choose "concise" to return description as null or "detailed" to include up to 1,500 cleaned characters. Defaults to "detailed" while preserving identical field keys in both modes. This is not the JSON, CSV, or Excel export format.

## Actor input object example

```json
{
  "searches": [
    {
      "keyword": "software engineer",
      "location": "bangalore"
    }
  ],
  "maxResults": 100,
  "freshnessDays": 7,
  "experienceMin": 2,
  "experienceMax": 8,
  "salaryMinLakhs": 10,
  "workMode": "hybrid",
  "sortBy": "date",
  "responseFormat": "concise"
}
```

# Actor output Schema

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

Schema-valid job records with company, location, salary, experience, skills, description, rating, post date, and job URL.

## `summary` (type: `string`):

Final progress, deduplication, filter, billing, and warning information for the run.

# 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 = {
    "searches": [
        {
            "keyword": "software engineer",
            "location": "bangalore"
        }
    ]
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Naukri Jobs Scraper — Batch Search & Dedup",
        "description": "Scrape public Naukri jobs across role and location searches. Use for recruiting, salary research, and alerts. Not for candidate profiles, private data, login, or applications. Returns unique jobs with company, location, salary, experience, skills, description, rating, date, and URL. $0.01/job.",
        "version": "1.0",
        "x-build-id": "jyey8gjMWL8S4dlwK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/muhammadafzal~naukri-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-muhammadafzal-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/muhammadafzal~naukri-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-muhammadafzal-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/muhammadafzal~naukri-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-muhammadafzal-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",
                "required": [
                    "searches"
                ],
                "properties": {
                    "searches": {
                        "title": "Job searches",
                        "minItems": 1,
                        "maxItems": 20,
                        "type": "array",
                        "description": "Use this when you need one or more Naukri keyword and location searches in a single run. Enter objects such as {\"keyword\":\"python developer\",\"location\":\"bangalore\"}. Defaults to one software-engineer search and accepts 1–20 searches. This is not a list of candidate profiles or job-detail URLs.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "keyword": {
                                    "title": "Role or skill keyword",
                                    "type": "string",
                                    "description": "Use this to define the role, technology, or company term searched on Naukri. Enter plain text such as \"data engineer\" or \"React\". Values must contain 1–120 characters. This is not a Boolean query for candidate résumés.",
                                    "editor": "textfield",
                                    "minLength": 1,
                                    "maxLength": 120,
                                    "example": "data engineer"
                                },
                                "location": {
                                    "title": "Location",
                                    "type": "string",
                                    "description": "Use this to narrow a search to an Indian city or region. Enter text such as \"bangalore\", \"mumbai\", or leave it empty for all India. Defaults to an empty string and accepts up to 80 characters. This is not a proxy country or candidate address.",
                                    "editor": "textfield",
                                    "default": "",
                                    "maxLength": 80,
                                    "example": "bangalore"
                                }
                            },
                            "required": [
                                "keyword"
                            ]
                        },
                        "default": [
                            {
                                "keyword": "software engineer",
                                "location": "bangalore"
                            }
                        ]
                    },
                    "maxResults": {
                        "title": "Maximum jobs",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Use this to cap the total unique jobs returned across all searches. Enter an integer such as 100. Defaults to 50 and accepts 1–1,000; at $0.01 per job, this is also the main cost cap. This is not a per-search limit.",
                        "default": 50
                    },
                    "freshnessDays": {
                        "title": "Maximum job age",
                        "minimum": 0,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Use this to include only recently posted Naukri jobs. Enter whole days from 0–30; for example, 1 means the last 24 hours. Defaults to 7 days, while 0 disables the age filter. This is not the Actor schedule interval.",
                        "default": 7
                    },
                    "experienceMin": {
                        "title": "Minimum experience",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Use this to keep jobs whose required experience overlaps a minimum number of years. Enter an integer such as 2. Defaults to 0 and accepts 0–50; jobs without disclosed experience remain eligible. This is not the applicant's exact years of experience.",
                        "default": 0
                    },
                    "experienceMax": {
                        "title": "Maximum experience",
                        "minimum": 0,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Use this to keep jobs whose required experience overlaps a maximum number of years. Enter an integer such as 8. Defaults to 50 and accepts 0–50; it must be at least experienceMin. This is not a seniority label such as \"manager\".",
                        "default": 50
                    },
                    "salaryMinLakhs": {
                        "title": "Minimum annual salary",
                        "minimum": 0,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Use this to filter jobs with a disclosed maximum salary below an INR threshold. Enter lakhs per annum, such as 10 for ₹10 LPA. Defaults to 0 and accepts 0–200; jobs with undisclosed salary remain eligible. This is not a monthly salary or raw rupee amount.",
                        "default": 0
                    },
                    "workMode": {
                        "title": "Work mode",
                        "enum": [
                            "any",
                            "remote",
                            "hybrid",
                            "office"
                        ],
                        "type": "string",
                        "description": "Use this to restrict results by working arrangement. Choose \"any\", \"remote\", \"hybrid\", or \"office\"; for example, \"remote\" keeps work-from-home jobs. Defaults to \"any\" and includes listings whose mode is not disclosed. This is not a job-type filter such as contract or full-time.",
                        "default": "any"
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevance",
                            "date"
                        ],
                        "type": "string",
                        "description": "Use this to choose the order requested from Naukri. Choose \"relevance\" or \"date\"; for example, \"date\" prioritizes newer listings. Defaults to \"relevance\" and does not change the global deduplication rule. This is not a dataset export sort applied after scraping.",
                        "default": "relevance"
                    },
                    "responseFormat": {
                        "title": "Response detail",
                        "enum": [
                            "concise",
                            "detailed"
                        ],
                        "type": "string",
                        "description": "Use this to control description size for humans and AI agents. Choose \"concise\" to return description as null or \"detailed\" to include up to 1,500 cleaned characters. Defaults to \"detailed\" while preserving identical field keys in both modes. This is not the JSON, CSV, or Excel export format.",
                        "default": "detailed"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
