# 💼 Career Site Job Listing API (`api-empire/career-site-job-listing-api`) Actor

💼 Career Site Job Listing API scrapes and aggregates job openings from leading career sites—titles, locations, salaries & descriptions—fast and reliable. 🚀 Perfect for recruiters, aggregators, and job boards. 📈 Boost your listings with clean, structured data.

- **URL**: https://apify.com/api-empire/career-site-job-listing-api.md
- **Developed by:** [API Empire](https://apify.com/api-empire) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 1,000 results

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

## 💼 Career Site Job Listing API

Scrape **real, fresh job postings straight from company career sites** — no paid job board, no stale aggregator data. This Actor reads jobs directly from **ADP WorkforceNow** public career sites, maps them to a clean, standardized job-posting schema, geo-enriches every location, and streams matches into your dataset **live**.

The output schema matches the popular Fantastic.jobs ATS API format, so it's a drop-in for pipelines you already have.

---

### ✨ Why Choose This Actor?

- 🎯 **Source-of-truth data** — pulled from the company's own ADP career site, not a third-party cache.
- ⚡ **Live streaming** — every matching job is saved the moment it's found; a crash never loses progress.
- 🛡️ **Never get blocked** — browser-grade HTTP fingerprinting (`impit`) plus an automatic, sticky proxy ladder (direct → datacenter → residential).
- 🗺️ **Geo-enriched** — city, region, country, latitude, longitude for every location (free OpenStreetMap geocoding).
- 🔎 **Powerful filtering** — title, location, description, organization, salary, remote, and time-window filters with prefix matching.
- 🧭 **Clean output views** — Overview, Locations, Salary, Descriptions, and Raw tabs in the dataset.

---

### 🔑 Key Features

| Feature | Description |
|--------|-------------|
| 🔗 Bulk URLs | Paste many ADP career-site URLs (or bare `cid`s) at once. |
| ⏱️ Time range | `1h`, `24h`, `7d`, or `6m` backfill. |
| 🔎 Search filters | Title / location / description / organization include **and** exclude lists, with `:*` prefix matching. |
| 💰 Salary filter | Return only jobs that publish a salary range. |
| 🏠 Remote filter | Return only remote-detected jobs. |
| 🗺️ Geocoding | Toggle free OpenStreetMap lat/lng enrichment. |
| 🛰️ Discovery mode | Optionally auto-discover live ADP career sites via Common Crawl. |
| 🛡️ Smart proxies | Auto-fallback ladder, sticky once escalated, fully logged. |

---

### 📥 Input

```json
{
  "timeRange": "6m",
  "limit": 100,
  "descriptionType": "text",
  "enableGeocoding": true,
  "titleSearch": ["Engineer", "Nurse:*"],
  "locationSearch": ["Toronto"],
  "aiHasSalary": false,
  "proxyConfiguration": { "useApifyProxy": false }
}
````

| Field | Type | Description |
|-------|------|-------------|
| *(companies)* | — | The set of ADP companies to crawl is built into the Actor. Enable `scrapeAllCompanies` to auto-discover and crawl every ADP site instead. |
| `proxyConfiguration` | object | Proxy settings. Defaults to **no proxy**; auto-escalates on block. |
| `timeRange` | string | `1h` / `24h` / `7d` / `6m`. |
| `limit` | integer | Max jobs to save (1–5000). |
| `descriptionType` | string | `text` or `html`. |
| `enableGeocoding` | boolean | Resolve locations to lat/lng (default `true`). |
| `includeAi` / `includeLinkedIn` | boolean | Keep or drop the `ai_*` / `linkedin_org_*` columns. |
| `titleSearch` / `…ExclusionSearch` | array | Include / exclude by title (`:*` = prefix). |
| `locationSearch`, `descriptionSearch`, `organizationSearch` | array | Same pattern for location / description / company. |
| `aiHasSalary` | boolean | Only jobs with a salary. |
| `remoteOnly` | boolean | Only remote jobs. |
| `datePostedAfter` | string (date) | Overrides `timeRange` when set. |
| `scrapeAllCompanies` | boolean | Discovery mode (auto-find ADP sites). |
| `discoveryIndexes`, `discoveryMaxPages`, `maxCompanies` | integer | Discovery-mode caps. |

***

### 📤 Output

Each row is one job posting. Example (trimmed):

```json
{
  "id": "563134",
  "date_posted": "2026-06-04T03:55:00",
  "title": "AI PRACTITIONER",
  "organization": "ONT.COLLEGE OF TEACHERS",
  "url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=108450a1-fa83-41bf-a7d1-030ba77254bd&jobId=563134",
  "employment_type": ["FULL TIME PERMANENT"],
  "salary_raw": {
    "@type": "MonetaryAmount", "currency": "CAD",
    "value": { "minValue": 88806, "maxValue": 102253, "unitText": "YEAR" }
  },
  "cities_derived": ["Toronto"],
  "regions_derived": ["Ontario"],
  "countries_derived": ["Canada"],
  "locations_derived": ["Toronto, Ontario, Canada"],
  "lats_derived": [43.6534817],
  "lngs_derived": [-79.3839347],
  "remote_derived": false,
  "description_text": "…",
  "source": "adp",
  "source_domain": "workforcenow.adp.com"
}
```

Key fields: `id`, `date_posted`, `title`, `organization`, `url`, `employment_type`, `salary_raw` + `ai_salary_*`, `locations_raw`, the `*_derived` geo fields, `remote_derived`, and `description_text`. The full schema mirrors the Fantastic.jobs format (including `ai_*` and `linkedin_org_*` placeholder columns).

***

### 🚀 How to Use (Apify Console)

1. Log in at [console.apify.com](https://console.apify.com) → **Actors**.
2. Open **Career Site Job Listing API**.
3. Set your filters (time range, title/location search, salary, …). The company set is built in; enable **🛰️ Auto-discover ALL ADP Companies** to crawl every ADP site.
4. Set your filters (time range, title/location search, salary, …).
5. Leave proxy as **no proxy** — it auto-escalates only if needed.
6. Click **Start** and watch jobs stream into the log in real time.
7. Open the **Output** tab and switch between the 🧭 Overview / 📍 Locations / 💰 Salary / 📝 Descriptions views.
8. Export to JSON / CSV / XLSX.

***

### 🤖 Use via API

```bash
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "timeRange": "6m",
    "limit": 50
  }'
```

***

### 🛡️ Proxy & Anti-Blocking

The Actor starts with **no proxy**. If the source returns a block (403/429/5xx) or a connection error, it automatically:

1. Falls back to a **datacenter** proxy.
2. Then to a **residential** proxy (retried up to 3×).
3. **Sticks** with the escalated tier for all remaining requests.

Every escalation is logged so you can see exactly what happened.

***

### 💳 Pricing

This Actor uses the **Pay-Per-Event** model. The primary event is **`job-listing`** — you are charged once per job saved to your dataset. You only pay for results you actually receive; start-up is billed via the standard synthetic start event. Set a per-run charge limit and the Actor stops cleanly when it's reached.

***

### ❓ FAQ

**Where do the jobs come from?**
Directly from public ADP WorkforceNow career sites — the same pages job-seekers see.

**Why is `lats_derived` empty for some jobs?**
Geocoding is best-effort and rate-limited. Disable it for speed, or re-run; offline fallback still fills city/region/country.

**Why are `ai_*` / `linkedin_org_*` mostly null?**
They're present for schema compatibility. Salary-derived `ai_salary_*` fields are filled deterministically from the posting.

**Can I scrape every ADP company?**
Yes — enable **🛰️ Auto-discover ALL ADP Companies**. Use the discovery caps; full crawls are long.

***

### 📨 Support & Feedback

Open an issue on the Actor's **Issues** tab with your input and run URL and we'll help.

> Data is collected only from **publicly available** career sites. You are responsible for compliance with applicable laws and the target site's terms.

# Actor input Schema

## `timeRange` (type: `string`):

Select the time range for job listings. You can choose between hourly (1h), daily (24h), weekly (7d), or backfill of all active jobs (6m, great to get started). We strongly recommend running the Actor at the same time every hour/day/week to ensure you get all jobs without duplicates.

## `limit` (type: `integer`):

Maximum number of jobs to return per run. The minimum is 10 and the maximum is 5,000. Please set the memory to 1GB for runs above 2,000 jobs.

## `includeCompanyDetails` (type: `boolean`):

Include basic company data fields (LinkedIn, Crunchbase, logo). These columns are always present in the output; enable to keep them visible. Note: this Actor sources directly from the career site, so company-enrichment columns may be empty.

## `titleSearch` (type: `array`):

Array of job titles to search for. Use ':*' for prefix matching (e.g. 'Soft:*' will match 'Software', 'Softball', etc.). OR within the list.

## `titleExclusionSearch` (type: `array`):

Array of job titles to exclude. Use ':*' for prefix matching (e.g. 'Soft:*' will match 'Software', 'Softball', etc.).

## `locationSearch` (type: `array`):

Array of locations to search for. Use exact 'City, State/Region, Country' format with full English names (e.g. 'Toronto', 'California', 'United States'). Use ':*' for prefix matching (e.g. 'New:*'). Do not use abbreviations (NY, US, UK).

## `locationExclusionSearch` (type: `array`):

Array of locations to exclude. Use full English names. Use ':\*' for prefix matching.

## `descriptionSearch` (type: `array`):

Array of terms to search in job title & description. Be very specific and combine with titleSearch. Use ':*' for prefix matching (e.g. 'Python:*').

## `descriptionExclusionSearch` (type: `array`):

Array of terms to exclude from job title & description. Use ':\*' for prefix matching.

## `organizationSearch` (type: `array`):

Array of organization names to search for. Use ':*' for prefix matching (e.g. 'Google:*').

## `organizationExclusionSearch` (type: `array`):

Array of organization names to exclude. Use ':\*' for prefix matching.

## `domainFilter` (type: `array`):

Array of company domains to search for. Requires an exact match.

## `domainExclusionFilter` (type: `array`):

Array of company domains to exclude. Requires an exact match.

## `descriptionType` (type: `string`):

Format of the job description.

## `ats` (type: `array`):

Filter jobs by one or more ATS. This Actor sources from 'adp'.

## `atsExclusionFilter` (type: `array`):

Exclude jobs from one or more ATS.

## `aiEmploymentTypeFilter` (type: `array`):

Filter by AI-derived employment type. Requires AI enrichment — ignored (with a warning) by this Actor.

## `aiWorkArrangementFilter` (type: `array`):

Filter by AI-derived work arrangement. Requires AI enrichment — ignored (with a warning) by this Actor. Use 'Remote Only (legacy)' below for source-based remote filtering.

## `hasSalary` (type: `boolean`):

Filter for jobs with salary information only. Set to false to include all jobs.

## `aiExperienceLevelFilter` (type: `array`):

Filter by AI-derived years of experience. Requires AI enrichment — ignored (with a warning) by this Actor.

## `aiVisaSponsorshipFilter` (type: `boolean`):

Filter for jobs offering visa sponsorship only. Requires AI enrichment — ignored (with a warning) by this Actor.

## `aiTaxonomiesFilter` (type: `array`):

Filter by AI-derived job category. Requires AI enrichment — ignored (with a warning) by this Actor.

## `aiTaxonomiesPrimaryFilter` (type: `array`):

Filter by AI-derived primary job category. Requires AI enrichment — ignored (with a warning) by this Actor.

## `aiTaxonomiesExclusionFilter` (type: `array`):

Exclude AI-derived job categories. Requires AI enrichment — ignored (with a warning) by this Actor.

## `populateAiRemoteLocation` (type: `boolean`):

If enabled, populates ai\_remote\_location with locations\_derived when ai\_remote\_location is empty.

## `populateAiRemoteLocationDerived` (type: `boolean`):

If enabled, populates ai\_remote\_location\_derived with locations\_derived when empty.

## `removeAgency` (type: `boolean`):

Filter out recruitment agencies. Requires LinkedIn enrichment — ignored (with a warning) by this Actor.

## `liIndustryFilter` (type: `array`):

Filter by LinkedIn organization industry. Requires LinkedIn enrichment — ignored (with a warning) by this Actor.

## `liOrganizationEmployeesLte` (type: `integer`):

Maximum number of employees in the company. Requires LinkedIn enrichment — ignored by this Actor.

## `liOrganizationEmployeesGte` (type: `integer`):

Minimum number of employees in the company. Requires LinkedIn enrichment — ignored by this Actor.

## `datePostedAfter` (type: `string`):

ISO date — only return jobs posted on/after this date. Overrides Time Range when set. We don't recommend using this if you retrieve jobs on a regular interval with the Time Range parameter.

## `includeLinkedIn` (type: `boolean`):

Deprecated alias of Include Company Data Fields with the same functionality.

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

When set to true, only returns jobs detected as remote (based on title/location).

## `aiHasSalary` (type: `boolean`):

Deprecated alias of Has Salary with the same functionality. Filter for jobs with salary information only.

## `enableGeocoding` (type: `boolean`):

Resolve each job location to city / region / country / lat / lng via free OpenStreetMap geocoding. Turn off for a faster, fully offline run (lat/lng stay empty).

## `scrapeAllCompanies` (type: `boolean`):

Advanced: ignore the URLs above and auto-discover live ADP career sites via Common Crawl, then crawl them. This can be a long run.

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

Defaults to NO proxy (direct). If the source blocks direct requests, the Actor automatically falls back to a datacenter proxy, then to a residential proxy (sticky) — all logged in real time.

## Actor input object example

```json
{
  "timeRange": "7d",
  "limit": 10,
  "includeCompanyDetails": true,
  "descriptionType": "text",
  "populateAiRemoteLocation": true,
  "populateAiRemoteLocationDerived": true,
  "includeLinkedIn": true,
  "enableGeocoding": true,
  "scrapeAllCompanies": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("api-empire/career-site-job-listing-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 = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("api-empire/career-site-job-listing-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 '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call api-empire/career-site-job-listing-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=api-empire/career-site-job-listing-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "💼 Career Site Job Listing API",
        "description": "💼 Career Site Job Listing API scrapes and aggregates job openings from leading career sites—titles, locations, salaries & descriptions—fast and reliable. 🚀 Perfect for recruiters, aggregators, and job boards. 📈 Boost your listings with clean, structured data.",
        "version": "0.1",
        "x-build-id": "N552nFZoDvFXBO8AQ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/api-empire~career-site-job-listing-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-api-empire-career-site-job-listing-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/api-empire~career-site-job-listing-api/runs": {
            "post": {
                "operationId": "runs-sync-api-empire-career-site-job-listing-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/api-empire~career-site-job-listing-api/run-sync": {
            "post": {
                "operationId": "run-sync-api-empire-career-site-job-listing-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": {
                    "timeRange": {
                        "title": "⏱️ Time Range",
                        "enum": [
                            "1h",
                            "24h",
                            "7d",
                            "6m"
                        ],
                        "type": "string",
                        "description": "Select the time range for job listings. You can choose between hourly (1h), daily (24h), weekly (7d), or backfill of all active jobs (6m, great to get started). We strongly recommend running the Actor at the same time every hour/day/week to ensure you get all jobs without duplicates.",
                        "default": "7d"
                    },
                    "limit": {
                        "title": "🔢 Maximum Jobs per Run",
                        "minimum": 10,
                        "maximum": 50000,
                        "type": "integer",
                        "description": "Maximum number of jobs to return per run. The minimum is 10 and the maximum is 5,000. Please set the memory to 1GB for runs above 2,000 jobs.",
                        "default": 10
                    },
                    "includeCompanyDetails": {
                        "title": "🏢 Include Company Data Fields",
                        "type": "boolean",
                        "description": "Include basic company data fields (LinkedIn, Crunchbase, logo). These columns are always present in the output; enable to keep them visible. Note: this Actor sources directly from the career site, so company-enrichment columns may be empty.",
                        "default": true
                    },
                    "titleSearch": {
                        "title": "🔎 Title Search",
                        "type": "array",
                        "description": "Array of job titles to search for. Use ':*' for prefix matching (e.g. 'Soft:*' will match 'Software', 'Softball', etc.). OR within the list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "titleExclusionSearch": {
                        "title": "🚫 Title Exclusion Search",
                        "type": "array",
                        "description": "Array of job titles to exclude. Use ':*' for prefix matching (e.g. 'Soft:*' will match 'Software', 'Softball', etc.).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locationSearch": {
                        "title": "📍 Location Search",
                        "type": "array",
                        "description": "Array of locations to search for. Use exact 'City, State/Region, Country' format with full English names (e.g. 'Toronto', 'California', 'United States'). Use ':*' for prefix matching (e.g. 'New:*'). Do not use abbreviations (NY, US, UK).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locationExclusionSearch": {
                        "title": "🚷 Location Exclusion Search",
                        "type": "array",
                        "description": "Array of locations to exclude. Use full English names. Use ':*' for prefix matching.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "descriptionSearch": {
                        "title": "📃 Description Search (includes title)",
                        "type": "array",
                        "description": "Array of terms to search in job title & description. Be very specific and combine with titleSearch. Use ':*' for prefix matching (e.g. 'Python:*').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "descriptionExclusionSearch": {
                        "title": "❌ Description Exclusion Search (includes title)",
                        "type": "array",
                        "description": "Array of terms to exclude from job title & description. Use ':*' for prefix matching.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "organizationSearch": {
                        "title": "🏢 Organization Search",
                        "type": "array",
                        "description": "Array of organization names to search for. Use ':*' for prefix matching (e.g. 'Google:*').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "organizationExclusionSearch": {
                        "title": "🏚️ Organization Exclusion Search",
                        "type": "array",
                        "description": "Array of organization names to exclude. Use ':*' for prefix matching.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "domainFilter": {
                        "title": "🌍 Domain Filter",
                        "type": "array",
                        "description": "Array of company domains to search for. Requires an exact match.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "domainExclusionFilter": {
                        "title": "🌐 Domain Exclusion Filter",
                        "type": "array",
                        "description": "Array of company domains to exclude. Requires an exact match.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "descriptionType": {
                        "title": "📝 Description Type",
                        "enum": [
                            "text",
                            "html"
                        ],
                        "type": "string",
                        "description": "Format of the job description.",
                        "default": "text"
                    },
                    "ats": {
                        "title": "🗂️ ATS",
                        "type": "array",
                        "description": "Filter jobs by one or more ATS. This Actor sources from 'adp'.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "adp",
                                "applicantpro",
                                "ashby",
                                "bamboohr",
                                "breezy",
                                "careerplug",
                                "comeet",
                                "csod",
                                "dayforce",
                                "dover",
                                "eightfold",
                                "firststage",
                                "freshteam",
                                "gem",
                                "gohire",
                                "greenhouse",
                                "hibob",
                                "hirebridge",
                                "hirehive",
                                "hireology",
                                "hiringthing",
                                "icims",
                                "isolved",
                                "jazzhr",
                                "jobvite",
                                "join.com",
                                "kula",
                                "lever.co",
                                "manatal",
                                "oraclecloud",
                                "pageup",
                                "paradox",
                                "paycom",
                                "paycor",
                                "paylocity",
                                "personio",
                                "phenompeople",
                                "pinpoint",
                                "polymer",
                                "recruitee",
                                "recooty",
                                "rippling",
                                "rival",
                                "smartrecruiters",
                                "successfactors",
                                "taleo",
                                "teamtailor",
                                "trakstar",
                                "trinet",
                                "ultipro",
                                "werecruit",
                                "workable",
                                "workday",
                                "zoho"
                            ]
                        }
                    },
                    "atsExclusionFilter": {
                        "title": "🚫 ATS Exclusion Filter",
                        "type": "array",
                        "description": "Exclude jobs from one or more ATS.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "adp",
                                "applicantpro",
                                "ashby",
                                "bamboohr",
                                "breezy",
                                "careerplug",
                                "comeet",
                                "csod",
                                "dayforce",
                                "dover",
                                "eightfold",
                                "firststage",
                                "freshteam",
                                "gem",
                                "gohire",
                                "greenhouse",
                                "hibob",
                                "hirebridge",
                                "hirehive",
                                "hireology",
                                "hiringthing",
                                "icims",
                                "isolved",
                                "jazzhr",
                                "jobvite",
                                "join.com",
                                "kula",
                                "lever.co",
                                "manatal",
                                "oraclecloud",
                                "pageup",
                                "paradox",
                                "paycom",
                                "paycor",
                                "paylocity",
                                "personio",
                                "phenompeople",
                                "pinpoint",
                                "polymer",
                                "recruitee",
                                "recooty",
                                "rippling",
                                "rival",
                                "smartrecruiters",
                                "successfactors",
                                "taleo",
                                "teamtailor",
                                "trakstar",
                                "trinet",
                                "ultipro",
                                "werecruit",
                                "workable",
                                "workday",
                                "zoho"
                            ]
                        }
                    },
                    "aiEmploymentTypeFilter": {
                        "title": "💼 AI Employment Type",
                        "type": "array",
                        "description": "Filter by AI-derived employment type. Requires AI enrichment — ignored (with a warning) by this Actor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "FULL_TIME",
                                "PART_TIME",
                                "CONTRACTOR",
                                "TEMPORARY",
                                "INTERN",
                                "VOLUNTEER",
                                "PER_DIEM",
                                "OTHER"
                            ]
                        }
                    },
                    "aiWorkArrangementFilter": {
                        "title": "🏠 AI Work Arrangement",
                        "type": "array",
                        "description": "Filter by AI-derived work arrangement. Requires AI enrichment — ignored (with a warning) by this Actor. Use 'Remote Only (legacy)' below for source-based remote filtering.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "On-site",
                                "Hybrid",
                                "Remote OK",
                                "Remote Solely"
                            ]
                        }
                    },
                    "hasSalary": {
                        "title": "💰 Has Salary",
                        "type": "boolean",
                        "description": "Filter for jobs with salary information only. Set to false to include all jobs."
                    },
                    "aiExperienceLevelFilter": {
                        "title": "📊 AI Experience Level",
                        "type": "array",
                        "description": "Filter by AI-derived years of experience. Requires AI enrichment — ignored (with a warning) by this Actor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "0-2",
                                "2-5",
                                "5-10",
                                "10+"
                            ]
                        }
                    },
                    "aiVisaSponsorshipFilter": {
                        "title": "🛂 AI Visa Sponsorship",
                        "type": "boolean",
                        "description": "Filter for jobs offering visa sponsorship only. Requires AI enrichment — ignored (with a warning) by this Actor."
                    },
                    "aiTaxonomiesFilter": {
                        "title": "🏷️ AI Taxonomies Filter",
                        "type": "array",
                        "description": "Filter by AI-derived job category. Requires AI enrichment — ignored (with a warning) by this Actor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Technology",
                                "Healthcare",
                                "Management & Leadership",
                                "Finance & Accounting",
                                "Human Resources",
                                "Sales",
                                "Marketing",
                                "Customer Service & Support",
                                "Education",
                                "Legal",
                                "Engineering",
                                "Science & Research",
                                "Trades",
                                "Construction",
                                "Manufacturing",
                                "Logistics",
                                "Creative & Media",
                                "Hospitality",
                                "Environmental & Sustainability",
                                "Retail",
                                "Data & Analytics",
                                "Software",
                                "Energy",
                                "Agriculture",
                                "Social Services",
                                "Administrative",
                                "Government & Public Sector",
                                "Art & Design",
                                "Food & Beverage",
                                "Transportation",
                                "Consulting",
                                "Sports & Recreation",
                                "Security & Safety"
                            ]
                        }
                    },
                    "aiTaxonomiesPrimaryFilter": {
                        "title": "🏷️ AI Taxonomies Primary Filter",
                        "type": "array",
                        "description": "Filter by AI-derived primary job category. Requires AI enrichment — ignored (with a warning) by this Actor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Technology",
                                "Healthcare",
                                "Management & Leadership",
                                "Finance & Accounting",
                                "Human Resources",
                                "Sales",
                                "Marketing",
                                "Customer Service & Support",
                                "Education",
                                "Legal",
                                "Engineering",
                                "Science & Research",
                                "Trades",
                                "Construction",
                                "Manufacturing",
                                "Logistics",
                                "Creative & Media",
                                "Hospitality",
                                "Environmental & Sustainability",
                                "Retail",
                                "Data & Analytics",
                                "Software",
                                "Energy",
                                "Agriculture",
                                "Social Services",
                                "Administrative",
                                "Government & Public Sector",
                                "Art & Design",
                                "Food & Beverage",
                                "Transportation",
                                "Consulting",
                                "Sports & Recreation",
                                "Security & Safety"
                            ]
                        }
                    },
                    "aiTaxonomiesExclusionFilter": {
                        "title": "🚫🏷️ AI Taxonomies Exclusion Filter (warning: very broad)",
                        "type": "array",
                        "description": "Exclude AI-derived job categories. Requires AI enrichment — ignored (with a warning) by this Actor.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "Technology",
                                "Healthcare",
                                "Management & Leadership",
                                "Finance & Accounting",
                                "Human Resources",
                                "Sales",
                                "Marketing",
                                "Customer Service & Support",
                                "Education",
                                "Legal",
                                "Engineering",
                                "Science & Research",
                                "Trades",
                                "Construction",
                                "Manufacturing",
                                "Logistics",
                                "Creative & Media",
                                "Hospitality",
                                "Environmental & Sustainability",
                                "Retail",
                                "Data & Analytics",
                                "Software",
                                "Energy",
                                "Agriculture",
                                "Social Services",
                                "Administrative",
                                "Government & Public Sector",
                                "Art & Design",
                                "Food & Beverage",
                                "Transportation",
                                "Consulting",
                                "Sports & Recreation",
                                "Security & Safety"
                            ]
                        }
                    },
                    "populateAiRemoteLocation": {
                        "title": "📡 Populate AI Remote Location",
                        "type": "boolean",
                        "description": "If enabled, populates ai_remote_location with locations_derived when ai_remote_location is empty.",
                        "default": true
                    },
                    "populateAiRemoteLocationDerived": {
                        "title": "📡 Populate AI Remote Location Derived",
                        "type": "boolean",
                        "description": "If enabled, populates ai_remote_location_derived with locations_derived when empty.",
                        "default": true
                    },
                    "removeAgency": {
                        "title": "🕵️ Remove Agency Jobs",
                        "type": "boolean",
                        "description": "Filter out recruitment agencies. Requires LinkedIn enrichment — ignored (with a warning) by this Actor."
                    },
                    "liIndustryFilter": {
                        "title": "🏭 LinkedIn Industries",
                        "type": "array",
                        "description": "Filter by LinkedIn organization industry. Requires LinkedIn enrichment — ignored (with a warning) by this Actor.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "liOrganizationEmployeesLte": {
                        "title": "👥 LinkedIn Max Company Size",
                        "type": "integer",
                        "description": "Maximum number of employees in the company. Requires LinkedIn enrichment — ignored by this Actor."
                    },
                    "liOrganizationEmployeesGte": {
                        "title": "👥 LinkedIn Min Company Size",
                        "type": "integer",
                        "description": "Minimum number of employees in the company. Requires LinkedIn enrichment — ignored by this Actor."
                    },
                    "datePostedAfter": {
                        "title": "📆 Date Posted After",
                        "type": "string",
                        "description": "ISO date — only return jobs posted on/after this date. Overrides Time Range when set. We don't recommend using this if you retrieve jobs on a regular interval with the Time Range parameter."
                    },
                    "includeLinkedIn": {
                        "title": "🔗 Include LinkedIn Company Data (deprecated, use Include Company Data)",
                        "type": "boolean",
                        "description": "Deprecated alias of Include Company Data Fields with the same functionality.",
                        "default": true
                    },
                    "remoteOnly": {
                        "title": "🏠 Remote Only (legacy)",
                        "type": "boolean",
                        "description": "When set to true, only returns jobs detected as remote (based on title/location)."
                    },
                    "aiHasSalary": {
                        "title": "💰 AI Has Salary (deprecated, use Has Salary)",
                        "type": "boolean",
                        "description": "Deprecated alias of Has Salary with the same functionality. Filter for jobs with salary information only."
                    },
                    "enableGeocoding": {
                        "title": "🗺️ Geocode Locations",
                        "type": "boolean",
                        "description": "Resolve each job location to city / region / country / lat / lng via free OpenStreetMap geocoding. Turn off for a faster, fully offline run (lat/lng stay empty).",
                        "default": true
                    },
                    "scrapeAllCompanies": {
                        "title": "🛰️ Auto-discover ALL ADP Companies",
                        "type": "boolean",
                        "description": "Advanced: ignore the URLs above and auto-discover live ADP career sites via Common Crawl, then crawl them. This can be a long run.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "🌐 Proxy Configuration",
                        "type": "object",
                        "description": "Defaults to NO proxy (direct). If the source blocks direct requests, the Actor automatically falls back to a datacenter proxy, then to a residential proxy (sticky) — all logged in real time.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
