# Talent.com Jobs Search Scraper (`jobsapi/talent-jobs-search-scraper`) Actor

Scrape job listings from Talent.com, a global job search aggregator operating in 50+ countries. Extract job titles, companies, locations, salary ranges, job types, and descriptions for international recruitment and job market analysis.

- **URL**: https://apify.com/jobsapi/talent-jobs-search-scraper.md
- **Developed by:** [Jobs API](https://apify.com/jobsapi) (community)
- **Categories:** Jobs, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 25.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 job details

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

## Talent.com Jobs Search Scraper

This Apify Actor collects publicly visible Talent.com job listings in Chrome, opens each official detail page, and emits one verified record per Talent.com job ID. It uses the public search and detail pages only; it does not log in, submit applications, bypass CAPTCHA, or fabricate an application URL.

### Modes

- `search`: one query and location; `maxItems` is the maximum verified records for that query.
- `searchMultiple`: two or more queries in `queries`; records are deduplicated by official job ID.
- `single`: one official `https://www.talent.com/view?id=...` URL.
- `multiple` or `startUrls`: several official detail URLs.

The default input is a small local-friendly search:

```json
{
  "mode": "search",
  "query": "software engineer",
  "location": "United States",
  "maxItems": 3,
  "headless": true,
  "proxyConfiguration": { "useApifyProxy": false }
}
```

Direct URL example:

```json
{
  "mode": "single",
  "jobUrl": "https://www.talent.com/view?id=626504729407529651"
}
```

### Output

Each dataset record contains a stable `id`, `title`, `company`, canonical `jobUrl`/`canonicalUrl`, public `description`, structured JobPosting fields when published, provenance, and `detailVerified: true`. `applyUrl` is included only when Talent.com explicitly publishes an Apply link; the canonical detail page is never mislabeled as an application URL.

Run summaries and source/validation diagnostics are written to the `RUN_SUMMARY` and `RUN_DIAGNOSTICS` key-value-store records. Diagnostics are never mixed into the dataset.

### Local checks

```text
npm install
npm run check
npm test
apify validate-schema
apify run --purge --input-file INPUT.json
npm run validate
```

The Actor uses installed Google Chrome when available and otherwise the browser bundled in its container. Direct access is the default. When Talent.com blocks an execution network, `proxyConfiguration` can enable Apify Proxy or custom proxy URLs; keep runs bounded because proxy traffic can incur additional cost.

Search pagination is bounded by `maxPages`, complete records per query by `maxItems`, total browser work by `maxRequests`, and transient retries by `maxRequestRetries`. Search candidates are deduplicated by canonical job ID before detail extraction. A blocked, expired, identity-mismatched, or incomplete detail page produces diagnostics and no partial dataset output.

### Responsible use

Collect only publicly available job information. Respect Talent.com terms, robots directives, applicable data-protection requirements, and any proxy provider's usage policy.

# Actor input Schema

## `mode` (type: `string`):

Use search for one query, searchMultiple for several queries, or single/multiple/startUrls for official detail URLs.

## `query` (type: `string`):

Job title, keyword, or search phrase.

## `queries` (type: `array`):

At least two queries for searchMultiple mode. Results are deduplicated by official Talent.com job ID.

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

City, state, country, or other Talent.com location filter.

## `jobUrl` (type: `string`):

Official Talent.com detail URL such as https://www.talent.com/view?id=... .

## `jobUrls` (type: `array`):

Official Talent.com detail URLs for multiple or direct-detail runs.

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

Official Talent.com /view?id=... detail URLs. Use startUrls mode for explicit direct inputs.

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

Maximum verified job records to collect for each search query.

## `maxPages` (type: `integer`):

Maximum pagination pages to inspect for each query.

## `maxRequests` (type: `integer`):

Safety cap covering search and detail page requests.

## `requestTimeoutSecs` (type: `integer`):

Maximum seconds to wait for one Talent.com page.

## `requestDelayMs` (type: `integer`):

Optional pacing delay before each page request.

## `maxRequestRetries` (type: `integer`):

Bounded retries for transient navigation and source-access failures.

## `headless` (type: `boolean`):

Run Google Chrome without opening a visible window.

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

Optional Apify Proxy or custom proxy configuration. Direct access is used when disabled.

## Actor input object example

```json
{
  "mode": "search",
  "query": "software engineer",
  "location": "United States",
  "maxItems": 3,
  "maxPages": 1,
  "requestTimeoutSecs": 45,
  "requestDelayMs": 0,
  "maxRequestRetries": 1,
  "headless": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

## `diagnostics` (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 = {
    "query": "software engineer",
    "location": "United States"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jobsapi/talent-jobs-search-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 = {
    "query": "software engineer",
    "location": "United States",
}

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

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

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

```

## CLI example

```bash
echo '{
  "query": "software engineer",
  "location": "United States"
}' |
apify call jobsapi/talent-jobs-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

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

## OpenAPI specification

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