# Mercor Jobs Search API (`shahidirfan/mercor-jobs-search-api`) Actor

Search and extract job listings, rates, and freelancer profiles from Mercor. Perfect for job market analysis, rate tracking, recruitment automation, and competitive intelligence on the remote work landscape.

- **URL**: https://apify.com/shahidirfan/mercor-jobs-search-api.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Mercor Job Search API

Collect Mercor job listings with flexible search inputs and structured output ready for automation. Use listing URLs, keyword queries, or location filters to pull high-quality job data at scale. This actor is designed for reliable recurring runs and easy integration with your workflows.

### Features

- **URL and keyword support** — Run by listing URL, explore URL, keyword, or combined filters
- **Location-aware filtering** — Match jobs by listing location and eligibility locations
- **Pagination controls** — Limit extraction using `results_wanted` and `max_pages`
- **Clean output records** — Removes null-only fields and returns compact, useful data
- **Automation-ready dataset** — Structured records suitable for exports, pipelines, and monitoring

### Use Cases

#### Talent Market Monitoring
Track newly posted opportunities and compensation ranges to understand hiring demand across domains.

#### Job Intelligence Pipelines
Feed listing data into BI tools, dashboards, and internal job intelligence systems for recurring analysis.

#### Lead and Opportunity Discovery
Collect relevant listings by keyword and location to build targeted candidate or client outreach workflows.

#### Compensation Benchmarking
Analyze pay ranges and commitment types to benchmark market rates for specific role categories.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | String | No | `"https://work.mercor.com/explore"` | Mercor URL context (explore page or listing URL) |
| `keyword` | String | No | `"software engineer"` | Keyword filter for listing title and description |
| `location` | String | No | `"Remote"` | Location filter for listing and eligibility locations |
| `results_wanted` | Integer | No | `20` | Maximum number of listings to return |
| `max_pages` | Integer | No | `1` | Maximum virtual pages to process (50 listings per page) |
| `proxyConfiguration` | Object | No | `{"useApifyProxy": false}` | Optional Apify proxy settings |

---

### Output Data

Each dataset item contains listing data such as:

| Field | Type | Description |
|-------|------|-------------|
| `listingId` | String | Unique listing identifier |
| `title` | String | Listing title |
| `description` | String | Full listing description |
| `location` | String | Listing location |
| `commitment` | String | Commitment type |
| `payRateFrequency` | String | Compensation frequency |
| `rateMin` | Number | Minimum rate |
| `rateMax` | Number | Maximum rate |
| `postedAt` | String | Posted timestamp |
| `listingUrl` | String | Public listing URL |
| `sourceUrl` | String | Source endpoint used in run |
| `page` | Number | Virtual page number used in this run |
| `extractedAt` | String | Extraction timestamp |

Additional non-null listing fields are preserved automatically.

---

### Usage Examples

#### Explore Listings by Keyword

```json
{
    "url": "https://work.mercor.com/explore",
    "keyword": "machine learning",
    "location": "Remote",
    "results_wanted": 20,
    "max_pages": 1
}
````

#### Fetch by Specific Listing URL Context

```json
{
    "url": "https://work.mercor.com/jobs/list_AAABnhmh9Uy1iThTmQhBnbMS",
    "results_wanted": 5,
    "max_pages": 1
}
```

#### Larger Monitoring Pull

```json
{
    "keyword": "software engineer",
    "location": "United States",
    "results_wanted": 100,
    "max_pages": 3,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
}
```

***

### Sample Output

```json
{
    "listingId": "list_AAABnhmh9Uy1iThTmQhBnbMS",
    "title": "AI Power User",
    "description": "Role overview and responsibilities...",
    "commitment": "hourly",
    "referralAmount": 340,
    "rateMin": 85,
    "rateMax": 85,
    "location": "Remote",
    "payRateFrequency": "hourly",
    "postedAt": "2026-05-12T00:41:45",
    "listingDomain": "Miscellaneous",
    "listingUrl": "https://work.mercor.com/jobs/list_AAABnhmh9Uy1iThTmQhBnbMS",
    "sourceUrl": "https://aws.api.mercor.com/work/listings-explore-page",
    "page": 1,
    "extractedAt": "2026-05-12T15:00:00.000Z"
}
```

***

### Tips for Best Results

#### Start with Small Runs

Use `results_wanted: 20` and `max_pages: 1` to validate filters quickly, then scale up.

#### Prefer Specific Keywords

Focused keywords reduce noise and improve relevance of returned listings.

#### Use Location Filters Carefully

Try broader location terms first (for example `Remote`, `United States`) before narrowing.

#### Schedule for Monitoring

Use recurring schedules to capture fresh listings and track posting trends over time.

***

### Integrations

Connect your dataset with:

- **Google Sheets** — Build shareable hiring trackers
- **Airtable** — Create searchable listing databases
- **Make** — Automate downstream processing
- **Zapier** — Trigger workflows from new runs
- **Webhooks** — Push records to custom systems

#### Export Formats

- **JSON** — Programmatic integrations
- **CSV** — Spreadsheet workflows
- **Excel** — Business reporting
- **XML** — Legacy system exchange

***

### Frequently Asked Questions

#### Can I run with only a keyword?

Yes. The actor runs with keyword-only input and returns matching listings.

#### Can I run with only a URL?

Yes. The actor accepts explore URLs and listing URLs as run context.

#### What if no data is returned?

Try a broader keyword or remove strict location filtering, then run again.

#### Does this support large result sets?

Yes. Increase `results_wanted` and `max_pages` gradually based on your needs.

#### Are null-only fields included in output?

No. Null-only fields are removed so the dataset stays cleaner and more useful.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/platform/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with website terms of service and applicable laws. Use collected data responsibly.

# Actor input Schema

## `url` (type: `string`):

Mercor URL to use as context (for example, https://work.mercor.com/explore or a specific listing URL).

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

Keyword filter for title, description, domain, and company fields.

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

Location filter matched against listing location and eligible location fields.

## `results_wanted` (type: `integer`):

Maximum number of listings to return.

## `max_pages` (type: `integer`):

Maximum virtual pages to process (50 listings per page).

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

Optional Apify proxy settings.

## Actor input object example

```json
{
  "url": "https://work.mercor.com/explore",
  "keyword": "software engineer",
  "location": "Remote",
  "results_wanted": 20,
  "max_pages": 1,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "url": "https://work.mercor.com/explore",
    "keyword": "software engineer",
    "location": "Remote",
    "results_wanted": 20,
    "max_pages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/mercor-jobs-search-api").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 = {
    "url": "https://work.mercor.com/explore",
    "keyword": "software engineer",
    "location": "Remote",
    "results_wanted": 20,
    "max_pages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/mercor-jobs-search-api").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 '{
  "url": "https://work.mercor.com/explore",
  "keyword": "software engineer",
  "location": "Remote",
  "results_wanted": 20,
  "max_pages": 1
}' |
apify call shahidirfan/mercor-jobs-search-api --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Mercor Jobs Search API",
        "description": "Search and extract job listings, rates, and freelancer profiles from Mercor. Perfect for job market analysis, rate tracking, recruitment automation, and competitive intelligence on the remote work landscape.",
        "version": "0.0",
        "x-build-id": "87enoD7tYr7GqRn6P"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~mercor-jobs-search-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-mercor-jobs-search-api",
                "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/shahidirfan~mercor-jobs-search-api/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-mercor-jobs-search-api",
                "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/shahidirfan~mercor-jobs-search-api/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-mercor-jobs-search-api",
                "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": {
                    "url": {
                        "title": "URL",
                        "type": "string",
                        "description": "Mercor URL to use as context (for example, https://work.mercor.com/explore or a specific listing URL)."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Keyword filter for title, description, domain, and company fields."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Location filter matched against listing location and eligible location fields."
                    },
                    "results_wanted": {
                        "title": "Results wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to return.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum virtual pages to process (50 listings per page).",
                        "default": 1
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional Apify proxy settings.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
