# Talent.com Jobs Scraper - Listings, Salaries & Employer Leads (`scrapesage/talent-com-jobs-scraper`) Actor

Scrape Talent.com job listings worldwide: titles, companies, salaries, full descriptions, employment type, geo + lat/lng, the original posting link & source ATS. Search by keyword, location & country, or paste URLs. Get deduplicated employer leads and only-new monitoring. Export JSON, CSV, Excel.

- **URL**: https://apify.com/scrapesage/talent-com-jobs-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.21 / 1,000 job scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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 Scraper — Listings, Salaries, Source Links & Employer Leads

Extract **complete Talent.com job listings** from any country — including the fields other scrapers leave empty: **real salaries, full job descriptions, employment type, exact geo (lat/lng), the original posting link, and the source ATS**. Turn every hiring company into a **ready-to-contact employer lead**, and run it on a schedule to capture **only new postings**.

No login, no API key, no browser — fast JSON extraction straight from Talent.com's own data, datacenter-proxy friendly.

### Why this Talent.com scraper?

Talent.com aggregates millions of jobs from thousands of company career sites and job boards across 75+ countries. Most scrapers only read the visible cards and return `null` for salary, description and source. This actor pulls Talent.com's full structured job payload and ships the **richest dataset in the category**:

| Data | Typical scrapers | This actor |
|---|---|---|
| Job title, company & location | ✅ | ✅ |
| Salary (min/max, currency, period) | ❌ often null | ✅ when published |
| Full job description (not just a teaser) | ❌ | ✅ when available |
| Employment type (full-time / part-time / contract…) | ❌ | ✅ |
| Exact geo — city, region, country, **latitude & longitude** | ❌ | ✅ |
| **Original posting URL** + **source ATS / board** | ❌ | ✅ |
| O\*NET‑SOC occupation code & category | ❌ | ✅ |
| Posted / re‑indexed / expiry dates | partial | ✅ |
| Remote flag | ❌ | ✅ |
| Deduplicated **employer leads** with a 0–100 lead score | ❌ | ✅ opt-in |
| **Monitor mode** — only new postings since last run | ❌ | ✅ |
| Works in 75+ countries with the right currency | partial | ✅ |
| No start fee | — | ✅ |

### Use cases

- **Job-board & aggregator feeds** — power your own job site, newsletter or app with structured listings (salary, description, geo, apply link) for any role and city.
- **Recruitment & sourcing leads** — turn hiring activity into B2B leads: which **companies** are hiring, how many openings, in which locations, at what pay — scored 0–100 for prospecting (`type: "employer"`).
- **Salary & labor-market intelligence** — benchmark pay by title, location and country using `salaryMin`/`salaryMax`/`salaryPeriod` and the O\*NET occupation code.
- **New-job alerts** — run on a schedule with **monitor mode** to emit only postings you haven't seen, straight into Slack, a CRM or an ATS.
- **Apply-traffic & competitor tracking** — follow a company's openings over time, see which ATS/source each job comes from, and link straight to the original posting.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Talent.com Jobs Scraper**, enter search queries, a location and a country (or paste Talent.com URLs), and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchQueries": ["registered nurse"],
    "location": "California",
    "country": "us",
    "datePosted": "7",
    "maxItems": 200,
    "outputEmployerLeads": true,
    "monitorMode": false
}
```

- **searchQueries** — keywords or job titles; each is combined with every location.
- **location** / **locations** — a city, state/region or postal area (e.g. `New York`, `California`, `London`). Leave blank to search the whole country.
- **country** — Talent.com national edition (sets the site and currency): `us`, `gb`, `ca`, `au`, `de`, `fr`, `in`, `nl`, `br`, `ph`, and many more.
- **startUrls** — paste Talent.com search pages (`/jobs?k=…&l=…`) or single job pages (`/view?id=…`); the country is read from the subdomain.
- **jobUrls** — specific `/view?id=…` URLs or bare job IDs to fetch in full.
- **datePosted** — `any`, `1`, `3`, `7`, `14`, `30` days — ideal for fresh-posting alerts.
- **radius** — distance around the location (don't set `0`).
- **remoteOnly** — keep only remote postings.
- **outputEmployerLeads** *(default false)* — also emit one deduplicated employer lead per hiring company.
- **includeDescriptionHtml** *(default false)* — also include the raw HTML description.
- **monitorMode** *(default false)* + **monitorKey** — remember seen job IDs and emit only new postings on each run.
- **maxItems / maxPagesPerSearch / deduplicateJobs / maxConcurrency / proxyConfiguration** — volume, dedup and proxy controls.

### Output

One record per job (`type: "job"`), plus optional employer lead records (`type: "employer"`):

```json
{
    "type": "job",
    "jobId": "585904154434079392",
    "title": "Registered Nurse — ICU",
    "company": "Sweetwater Care",
    "companyLogo": "https://cdn-logos.talent.com/v1/logo/image?feedcode=apploi-ats-org&company_name=Sweetwater%20Care",
    "url": "https://www.talent.com/view?id=585904154434079392",
    "applyUrl": "https://www.talent.com/redirect?id=585904154434079392",
    "sourceUrl": "https://jobs.apploi.com/view/1613827",
    "sourceBoard": "Apploi",
    "employmentType": "FULL_TIME",
    "category": "Healthcare Practitioners",
    "onetSocCode": "29-1141.00",
    "isRemote": false,
    "location": "Los Angeles, CA",
    "city": "Los Angeles",
    "region": "California",
    "country": "US",
    "latitude": 34.0522,
    "longitude": -118.2437,
    "hasSalary": true,
    "salaryText": "USD 39 – 52 / hour",
    "salaryMin": 39,
    "salaryMax": 52,
    "salaryCurrency": "USD",
    "salaryPeriod": "HOUR",
    "datePosted": "2026-06-10T09:00:14Z",
    "dateExpires": "2026-07-27T21:47:36Z",
    "descriptionSnippet": "We are searching for an ICU Registered Nurse to join our team…",
    "description": "We are searching for an ICU Registered Nurse… (full posting)",
    "searchQuery": "registered nurse",
    "searchLocation": "California",
    "searchCountry": "US",
    "scrapedAt": "2026-06-18T05:39:33.297Z"
}
```

Employer lead record (`type: "employer"`): `company`, `companyLogo`, `openings`, `sampleJobTitles`, `locations`, `countries`, `salaryRange`, `sourceBoards`, `remoteOpenings`, `sampleJobUrl`, and a 0–100 `leadScore`.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily to monitor new jobs for a search, city or country; pair with **monitor mode** so each run returns only fresh postings.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, ATS push) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/talent-com-jobs-scraper').call({
    searchQueries: ['software engineer'],
    location: 'Austin',
    country: 'us',
    datePosted: '7',
    maxItems: 200,
    outputEmployerLeads: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} jobs & employer leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new jobs or employer leads straight into your CRM/ATS.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new postings.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find remote data-engineer jobs posted this week in Germany and list the hiring companies" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **global hiring-intelligence & recruitment lead stack**:

- **[Seek Job Scraper](https://apify.com/scrapesage/seek-job-scraper)** — Australia & New Zealand jobs, salaries, companies & leads.
- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** — job postings as hiring-intent signals.
- **[Multi-ATS Job Scraper](https://apify.com/scrapesage/multi-ats-job-scraper)** — Greenhouse, Lever, Ashby, SmartRecruiters & Workday in one run.
- **[Remote Jobs Scraper](https://apify.com/scrapesage/remote-jobs-scraper)** — remote roles aggregated across the top remote boards.
- **[BuiltIn Jobs Scraper](https://apify.com/scrapesage/builtin-jobs-scraper)** — tech & startup jobs with company data.
- **[Levels.fyi Scraper](https://apify.com/scrapesage/levels-fyi-scraper)** — tech salaries & compensation benchmarks.
- **[JobStreet Singapore Scraper](https://apify.com/scrapesage/jobstreet-singapore-scraper)** — SEA jobs and employer data.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — enrich employer leads with emails, phones & socials from their website.

### Tips

- **Exhaust a big search**: Talent.com paginates ~18 jobs per page. Raise `maxPagesPerSearch`, or split by `location`/`datePosted` to go deeper.
- **Fresh jobs only**: set `datePosted` to `1`/`3`/`7` and turn on **monitor mode** with a Schedule for a clean new-job alert feed.
- **Salaries are honest**: `salaryMin`/`salaryMax` are filled only when the source publishes pay — `hasSalary` tells you at a glance.
- **Cost control**: employer leads are deduplicated per company; `deduplicateJobs` removes the same posting surfacing under several searches.

### FAQ

**How do I scrape Talent.com jobs for a specific country?** Set `country` (e.g. `gb`, `ca`, `de`, `in`) — the actor uses that national edition and its currency. You can also paste a country-subdomain URL into `startUrls`.

**Does it need the Talent.com API or a login?** No. It reads the same public job data the website renders — no key, no login, no browser.

**Where does the salary come from?** Talent.com's own salary fields, which are present when the original posting publishes pay. When they aren't, the salary fields are `null` (not guessed).

**Can I get the full job description?** Yes — `description` holds the complete posting when Talent.com exposes it, and a clean ~300-character teaser otherwise; `descriptionSnippet` is always the teaser.

**How do I monitor new jobs automatically?** Turn on `monitorMode`, give it a `monitorKey`, and create a [Schedule](https://docs.apify.com/platform/schedules). Each run emits only postings not seen before.

**Is scraping Talent.com legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for personal data) and Talent.com's terms.

**A field is null — why?** Some postings genuinely don't publish a salary, a precise city, or a full description. Fields are `null` only when the data doesn't exist, never because the scraper skipped them.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords or job titles to search on Talent.com, e.g. <code>software engineer</code>, <code>registered nurse</code>, <code>truck driver</code>. Each query is combined with every location below.

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

A single location to search in — a city, state/region, or postal area as it appears on Talent.com, e.g. <code>New York</code>, <code>California</code>, <code>London</code>. Leave blank to search the whole country. For multiple locations use the field below.

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

Several locations to search — each is combined with every search query. Overrides nothing; it is added to the single Location above.

## `country` (type: `string`):

Talent.com country edition to search. This selects the correct national site (and currency): <code>us</code>, <code>gb</code> (UK), <code>ca</code>, <code>au</code>, <code>de</code>, <code>fr</code>, <code>es</code>, <code>it</code>, <code>nl</code>, <code>in</code>, <code>ie</code>, <code>nz</code>, <code>sg</code>, <code>br</code>, <code>mx</code>, <code>za</code>, <code>ae</code>, <code>ph</code> and more.

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

Paste Talent.com URLs directly: search pages (<code>https://www.talent.com/jobs?k=...\&l=...</code>) or single job pages (<code>https://www.talent.com/view?id=...</code>). The country is read from the URL's subdomain. Used in addition to the search queries above.

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

Specific job postings to fetch — full <code>/view?id=...</code> URLs or bare job IDs. Each is scraped as a full job record.

## `datePosted` (type: `string`):

Only include jobs first listed within this window. Great for monitoring/alerting on fresh postings.

## `radius` (type: `integer`):

Distance around the location to include, in the country's default unit (miles in the US/UK, km elsewhere). Leave empty for Talent.com's default. Do not set to 0 — that returns no results.

## `remoteOnly` (type: `boolean`):

Keep only postings flagged remote (or whose title/location says remote).

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

Maximum number of job records to scrape across all queries, locations and URLs. Employer-lead records do not count toward this cap.

## `maxPagesPerSearch` (type: `integer`):

How many result pages to page through per query×location (about 18 jobs per page). Talent.com paginates deeply; this bounds cost on broad searches.

## `outputEmployerLeads` (type: `boolean`):

In addition to job records, push one deduplicated employer record (type = "employer") per hiring company: openings count, sample titles, locations, salary range seen, source boards and a 0–100 lead score. Ideal for recruitment-agency and sales prospecting.

## `includeDescriptionHtml` (type: `boolean`):

Also include the raw HTML job description (field descriptionHtml) alongside the clean text. Off by default to keep records lean.

## `deduplicateJobs` (type: `boolean`):

Skip a job whose ID was already emitted in this run (the same posting can surface under several queries/locations).

## `monitorMode` (type: `boolean`):

Remember job IDs seen in previous runs (in a named key-value store) and emit only postings not seen before — a ready-made new-job alert feed. Combine with an Apify Schedule to run it hourly/daily.

## `monitorKey` (type: `string`):

Names the monitor's memory so separate searches keep separate histories (store: <code>talent-monitor-\<key></code>). Use one key per saved search.

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

How many requests to run in parallel. Lower it if you hit blocks; raise it for speed.

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

Proxies to use. Talent.com is reachable on Apify datacenter proxies; the default Apify Proxy works well. Switch to Residential only if you encounter blocks.

## Actor input object example

```json
{
  "searchQueries": [
    "software engineer"
  ],
  "location": "New York",
  "country": "us",
  "datePosted": "any",
  "remoteOnly": false,
  "maxItems": 200,
  "maxPagesPerSearch": 15,
  "outputEmployerLeads": false,
  "includeDescriptionHtml": false,
  "deduplicateJobs": true,
  "monitorMode": false,
  "monitorKey": "default",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped job records and optional employer lead records as JSON items in the default dataset.

# 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 = {
    "searchQueries": [
        "software engineer"
    ],
    "location": "New York",
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/talent-com-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 = {
    "searchQueries": ["software engineer"],
    "location": "New York",
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/talent-com-jobs-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 '{
  "searchQueries": [
    "software engineer"
  ],
  "location": "New York",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapesage/talent-com-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapesage/talent-com-jobs-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/j9mlkmm4CiKB5BJJ4/builds/8eXeOq0OJXwZNx43E/openapi.json
