# ADP Workforce Now Jobs Scraper (`axiomworks/adp-workforce-now-jobs-scraper`) Actor

Collect open jobs from public ADP Workforce Now career sites. Results include job and requisition IDs, posting dates, locations, employment types, pay details and description text or HTML. Supply one or more career URLs or tenant cids, and choose whether to fetch descriptions.

- **URL**: https://apify.com/axiomworks/adp-workforce-now-jobs-scraper.md
- **Developed by:** [Axiom Works](https://apify.com/axiomworks) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 results

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Returns:** one row per open job with `title`, `jobId`, `postedAt`, `location`, `employmentType`, `salaryMin`, `salaryMax`, `descriptionText` and `jobUrl`.
**Input:** `{"careerSites": ["https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&lang=en_US"], "maxItems": 50}`
**Best for:** tracking an employer's openings, building job boards and job alerts from ADP career sites, pay range research across employers.

```json
{
    "title": "Donations Processor",
    "jobId": "588896",
    "postedAt": "2026-10-15T17:03:00.000-04:00",
    "location": "San Marcos Store, San Marcos, TX, US",
    "employmentType": "Full Time",
    "salaryMin": 14,
    "salaryMax": 15,
    "salaryPeriod": "Hourly"
}
```

### What does ADP Workforce Now Jobs Scraper do?

ADP Workforce Now Jobs Scraper is an ADP Workforce Now scraper for the public career centers that thousands of employers run on ADP. Give it one or more career-center URLs (the links that contain `cid=`) or bare tenant cids, and it returns every open job as a clean row: job title, the public job ID used in share links, the employer's requisition number, the posting date, the first location with city, state and postal code, all posted locations, the employment type, the job class, the pay range with currency and pay period, the full job description as HTML and plain text, the employer's website and a share link to the job.

It reads the same public JSON that the career center page loads in your browser, so it needs no login, no cookies and no ADP account. It works like an ADP Workforce Now jobs API: the job list is paged 20 at a time, and for each job one extra request fetches the full description (you can switch that off for a faster run).

Typical uses: watching an employer's new openings every day, feeding jobs from ADP-hosted career sites into a job board or an applicant-tracking workflow, and comparing posted pay ranges across employers and locations.

### What data can you get from ADP Workforce Now?

| Field | Description | Example |
|---|---|---|
| `id` | Stable ID of the job (ADP's itemID). Unique within a run. | `9201902889465_1` |
| `title` | Job title as the employer posted it | `Donations Processor` |
| `jobId` | Public job ID the career center uses in share links | `588896` |
| `requisitionId` | Employer's own requisition number | `5364` |
| `itemId` | ADP's internal requisition item ID | `9201902889465_1` |
| `postedAt` | Posting date, ISO 8601 with the employer's UTC offset | `2026-10-15T17:03:00.000-04:00` |
| `location` | First job location as ADP names it | `San Marcos Store, San Marcos, TX, US` |
| `city` | City of the first location | `San Marcos` |
| `state` | State or province code of the first location | `TX` |
| `postalCode` | Postal code of the first location | `78666` |
| `allLocations` | Every location the job is posted for | `["Hamilton, NJ, US", "Falls Church, VA, US"]` |
| `employmentType` | Worker category | `Full Time` |
| `jobClass` | Employer's job class, when set | `Manual Labor` |
| `salaryMin` | Lower end of the posted pay range | `14` |
| `salaryMax` | Upper end of the posted pay range | `15` |
| `salaryCurrency` | Currency code of the pay range | `USD` |
| `salaryPeriod` | Pay period of the range | `Hourly` |
| `salaryText` | Pay range as the career center shows it | `14 To 15 (USD) Hourly` |
| `descriptionHtml` | Full job description as HTML | `<div><p>This position is responsible for...` |
| `descriptionText` | Job description as plain text | `This position is responsible for receiving donated goods...` |
| `companyWebsite` | Employer website linked from the career center logo | `http://goodwillcentraltexas.org` |
| `tenantId` | ADP tenant cid of the career center | `cf5674db-9e68-440d-9919-4e047e6a1415` |
| `jobUrl` | Public share link to the job | `https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=...&jobId=588896&lang=en_US` |
| `scrapedAt` | When the run collected the job (UTC) | `2026-10-16T00:08:39Z` |
| `sourceUrl` | ADP endpoint the record was read from | `https://workforcenow.adp.com/mascsr/default/careercenter/public/events/staffing/v1/job-requisitions/9201902889465_1?cid=...` |

Pay fields, the job class and the company website are set by each employer. Many employers leave them blank, and then those fields are `null`. The description fields are `null` when you set `includeDescription` to `false`.

### How to use ADP Workforce Now Jobs Scraper

1. Find the employer's ADP career center. On the employer's own site, open their careers page. Many employers embed the ADP career center in a frame, so look for a "Careers" or "View all jobs" link, or open the frame in a new tab, and copy the address that contains `cid=` followed by a long ID such as `cf5674db-9e68-440d-9919-4e047e6a1415`.
2. Open the Actor in Apify Console and paste one URL (or just the cid) per line into **Career-center URLs or cids**.
3. Set **Maximum jobs** to how many jobs you want in total. The limit is shared across all career sites: the first site is read in full before the next one starts.
4. Leave **Include job descriptions** on if you need the full text, or turn it off for a faster run that still returns every other field.
5. Click **Start**. When the run finishes, open the **Output** tab and export the jobs as JSON, CSV, Excel, XML or HTML, or read them through the API.

Tips:

1. Keep the `ccId` and `lang` parameters that appear in the employer's URL. The Actor uses them for the share links in `jobUrl`, so links open the same career center the employer published.
2. A bare cid works too. Then the share link has no `ccId`, and `lang` comes from the **Language** field.
3. Schedule the Actor daily and compare `id` values between runs to find new and closed jobs.
4. The API is public and works without a proxy. If a run ever gets HTTP 403 or 429 errors, turn on Apify Proxy in the **Proxy** section; blocked requests are then retried on a new IP.

### Input

Use `titleKeywords` and `locationKeywords` to return a focused set of openings. Each is an optional list of case-insensitive substrings, empty by default. A job matches any term within a list; when both lists are supplied it must match both. Location matching checks every posted location, including its name, city, state or province code, and postal code. Matching uses literal substrings. The company branding request is deferred until the first matching job; a run with no matching jobs skips that request. Requests to each tenant start at least half a second apart, counting response time toward that spacing.

Filters run on the public job list before description requests. Rejected jobs are neither saved nor charged, and `maxItems` counts only matching jobs across all career sites. The Actor continues through list pages until enough matches are saved or the career center is exhausted. A restrictive filter can return fewer results than the limit or zero results successfully. Use `"titleKeywords": ["processor"], "locationKeywords": ["San Marcos"]` to find processor openings in San Marcos. Empty lists return all jobs.

| Field | Type | Required | Description |
|---|---|---|---|
| `careerSites` | array of strings | Yes | ADP Workforce Now career-center URLs containing `cid=<uuid>`, or bare 36-character cids. `ccId` and `lang` are kept from the URL. Entries without a cid are skipped with a warning. If all entries are skipped, the run succeeds with 0 results and guidance to supply a career-center URL or bare tenant UUID. |
| `titleKeywords` | array of strings | No | Title substrings; OR within the list, default `[]`. |
| `locationKeywords` | array of strings | No | Substrings across posted locations; AND with title filter, default `[]`. |
| `maxItems` | integer | No | Maximum number of jobs in total across all career sites, 1-10000, default 50. |
| `includeDescription` | boolean | No | Fetch the full description for each job (one extra request per job), default `true`. |
| `lang` | string | No | Locale used when a URL has no `lang=` (and for bare cids), default `en_US`. Examples: `en_US`, `en_CA`, `fr_CA`, `es_ES`. |
| `proxyConfiguration` | object | No | Proxy settings, default no proxy. |

```json
{
    "careerSites": [
        "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&lang=en_US",
        "c5bf927d-75b0-4e6e-8d59-de5517866227"
    ],
    "maxItems": 50,
    "includeDescription": true,
    "lang": "en_US",
    "proxyConfiguration": { "useApifyProxy": false }
}
```

The language setting changes only ADP's own labels. Job titles and descriptions stay in whatever language the employer wrote them in. ADP lists jobs only in the locales an employer publishes in, so a locale the employer doesn't use (for example `fr_CA` on a US-only career center) returns no jobs. When that happens the Actor retries the career center in `en_US`, and `jobUrl` uses the locale that worked.

### Output

Each job is one item in the run's dataset. Two real items from local test runs (descriptions shortened here):

```json
[
    {
        "id": "9201902889465_1",
        "title": "Donations Processor",
        "jobId": "588896",
        "requisitionId": "5364",
        "itemId": "9201902889465_1",
        "postedAt": "2026-10-15T17:03:00.000-04:00",
        "location": "San Marcos Store, San Marcos, TX, US",
        "city": "San Marcos",
        "state": "TX",
        "postalCode": "78666",
        "allLocations": ["San Marcos Store, San Marcos, TX, US"],
        "employmentType": "Full Time",
        "jobClass": "Manual Labor",
        "salaryMin": 14,
        "salaryMax": 15,
        "salaryCurrency": "USD",
        "salaryPeriod": "Hourly",
        "salaryText": "14 To 15 (USD) Hourly",
        "descriptionHtml": "<div><div><p><br></p><p>&nbsp; &nbsp; ... NEW HIRE BONUS</p>...",
        "descriptionText": "NEW HIRE BONUS\nEarn up to $350 in new hire bonuses! $250 after 60 days of employment + $100 after 90 days\nThis position is responsible for receiving donated goods...",
        "companyWebsite": "http://goodwillcentraltexas.org",
        "tenantId": "cf5674db-9e68-440d-9919-4e047e6a1415",
        "jobUrl": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&jobId=588896&lang=en_US",
        "scrapedAt": "2026-10-16T00:08:39Z",
        "sourceUrl": "https://workforcenow.adp.com/mascsr/default/careercenter/public/events/staffing/v1/job-requisitions/9201902889465_1?cid=cf5674db-9e68-440d-9919-4e047e6a1415&lang=en_US&locale=en_US"
    },
    {
        "id": "9201299865324_1",
        "title": "Management Consultant",
        "jobId": "568803",
        "requisitionId": "1079",
        "itemId": "9201299865324_1",
        "postedAt": "2026-10-13T11:55:00.000-04:00",
        "location": "Hamilton, NJ, US",
        "city": "Hamilton",
        "state": "NJ",
        "postalCode": "08690",
        "allLocations": ["Hamilton, NJ, US", "Falls Church, VA, US"],
        "employmentType": "Full Time Regular",
        "jobClass": null,
        "salaryMin": 70000,
        "salaryMax": 90000,
        "salaryCurrency": "USD",
        "salaryPeriod": "Annually",
        "salaryText": "70000.00 To 90000.00 (USD) Annually",
        "descriptionHtml": null,
        "descriptionText": null,
        "companyWebsite": null,
        "tenantId": "cf1a92f4-16eb-4267-86ca-bc956024f426",
        "jobUrl": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf1a92f4-16eb-4267-86ca-bc956024f426&jobId=568803&lang=en_US",
        "scrapedAt": "2026-10-16T00:09:09Z",
        "sourceUrl": "https://workforcenow.adp.com/mascsr/default/careercenter/public/events/staffing/v1/job-requisitions?cid=cf1a92f4-16eb-4267-86ca-bc956024f426&lang=en_US&locale=en_US&$top=20&$skip=1"
    }
]
```

The second item comes from a run with `includeDescription: false`, so its description fields are `null`, and that employer sets no job class and no logo link. You can download the dataset as JSON, CSV, Excel, XML, RSS or HTML from the Output tab or the API.

### How much does it cost to scrape ADP Workforce Now?

ADP Workforce Now Jobs Scraper is charged per result: you pay for each job returned, and nothing for career sites that have no openings or don't exist. `maxItems` caps how many jobs a run can return, and so caps the charge. See the Pricing tab for the current price. Platform usage for the run itself is included.

If you set a maximum cost per run in the run options, the Actor stops when that budget is used up and says so in the status message, keeping every job saved so far.

### Use with AI agents (MCP)

Connect ADP Workforce Now Jobs Scraper to Claude, Cursor or any MCP client through the Apify MCP server:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com/?tools=axiomworks/adp-workforce-now-jobs-scraper"
        }
    }
}
```

Example prompts:

1. "Get the 20 newest jobs from this ADP career center and list the ones in Austin with their pay range: https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415\&ccId=19000101_000001\&lang=en_US"
2. "Scrape the open jobs for ADP tenant c5bf927d-75b0-4e6e-8d59-de5517866227 without descriptions and group them by state."
3. "Compare the hourly pay ranges posted by these two ADP career sites and summarise the differences."

Agents see the input fields described above. The only field they must fill is `careerSites`; `maxItems` is shared across all career sites.

### Integrations and API

Run ADP Workforce Now Jobs Scraper from your own code with the Apify API. Set `APIFY_TOKEN` to your Apify API token (send it in the `Authorization` header, never in the URL).

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("axiomworks/adp-workforce-now-jobs-scraper").call(run_input={
    "careerSites": ["cf5674db-9e68-440d-9919-4e047e6a1415"],
    "maxItems": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["location"], item["jobUrl"])
```

**JavaScript**

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('axiomworks/adp-workforce-now-jobs-scraper').call({
    careerSites: ['cf5674db-9e68-440d-9919-4e047e6a1415'],
    maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**cURL**

```bash
curl -X POST "https://api.apify.com/v2/acts/axiomworks~adp-workforce-now-jobs-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"careerSites": ["cf5674db-9e68-440d-9919-4e047e6a1415"], "maxItems": 50}'
```

You can also connect the Actor to Make, Zapier, n8n, Google Sheets, Slack or your own webhooks from the Integrations tab, for example to post new jobs to a channel after each scheduled run.

### FAQ

**Where do I find an employer's cid?**
Open the employer's careers page and find the ADP career center. Its address looks like `https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=<id>&ccId=<id>&lang=en_US`. If the jobs show inside a frame on the employer's site, right-click the frame and open it in a new tab to see that address. There is no public directory of ADP tenants, so the Actor cannot search for employers by name.

**What about old links like `workforcenow.adp.com/jobs/apply/posting.html?client=...`?**
Those use a client code, not a cid, so the Actor cannot read them. It skips them with a warning. Open the link in a browser, follow it to the current career center and copy the address with `cid=`.

**Why did my run return 0 results?**
Either the cid does not exist (the log and status message say "career site not found"), or the employer has no open jobs right now. Both end the run successfully with 0 results and no charge. Check that you copied the whole cid from a working career page.

**Why are the pay fields empty for some jobs?**
Each employer decides whether to publish pay. When the career center shows no pay range, `salaryMin`, `salaryMax`, `salaryCurrency`, `salaryPeriod` and `salaryText` are `null`. The same goes for `jobClass` and `companyWebsite`.

**How fresh is the data?**
Every run reads the career center live, so you get the jobs that are open at that moment. `postedAt` is the date the employer posted the job, and `scrapedAt` is when your run collected it.

**How fast is it?**
The job list loads 20 jobs per request, and each description is one more request, spaced out politely. A run of 50 jobs with descriptions usually takes about a minute. With `includeDescription: false` it is several times faster.

**Can I scrape several employers in one run?**
Yes. Put one URL or cid per line. `maxItems` is the total for the whole run, so raise it if you want every job from every employer.

### Is it legal to scrape ADP Workforce Now?

This Actor collects only job postings that employers publish on public ADP career centers, which anyone can view without logging in. It does not access ADP accounts, applicant data or anything behind a login. Job postings can name contact people, so if you store or reuse that data, follow the laws that apply to you, such as the GDPR or CCPA. This is not legal advice; ask a lawyer if you are unsure about your use case.

ADP Workforce Now Jobs Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by ADP or ADP Workforce Now.

### Related Actors

| Actor | What it does |
|---|---|
| [LinkedIn Jobs Scraper](https://apify.com/axiomworks/linkedin-jobs-scraper) | Collects job postings from LinkedIn job search |
| [Google Jobs Scraper](https://apify.com/axiomworks/google-jobs-scraper) | Collects job listings from Google's jobs search |
| [Reed.co.uk Jobs Scraper](https://apify.com/axiomworks/reed-jobs-scraper) | Collects job listings from Reed.co.uk |
| [Remote Job Listings Scraper](https://apify.com/axiomworks/remote-jobs-scraper) | Collects remote job listings |

### Feedback

Found a bug, or need a field that isn't here? Open an issue on the Issues tab and we'll look at it.

# Actor input Schema

## `careerSites` (type: `array`):

ADP Workforce Now career centers to scrape, one per line: a career-center URL containing cid=<uuid> (e.g. https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=...\&ccId=...\&lang=en_US) or a bare 36-character cid. ccId and lang are kept from the URL. Entries without a cid are skipped with a warning; an unknown cid returns 0 jobs and a 'career site not found' message.

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

Maximum number of jobs to return in total across all career sites (shared budget, filled site by site in input order), 1-10000, default 50. The run stops as soon as this many jobs are saved; you are charged only for jobs returned.

## `includeDescription` (type: `boolean`):

If true (default), makes one extra request per job to get the full description as descriptionHtml and descriptionText. Set false for a faster run with every other field; both description fields are then null.

## `lang` (type: `string`):

Locale for ADP's labels when a URL has no lang= parameter (bare cids too), default en_US. Examples: en_US, en_CA, fr_CA, es_ES. Job text stays in the employer's language. If a career center lists no jobs in the chosen locale, the Actor retries it in en_US.

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

Proxy for requests, default none (direct). Turn on Apify Proxy only if runs get HTTP 403 or 429 errors.

## `titleKeywords` (type: `array`):

Job title substrings to include, e.g. \["manager", "processor"]. Case-insensitive OR matching; empty (default) includes all titles. Combined with locationKeywords using AND. Filtering happens before description requests; maxItems counts matching jobs only.

## `locationKeywords` (type: `array`):

Location substrings to include, e.g. \["Austin", "TX"]. Case-insensitive OR matching across every posted location name, city, state and postal code; empty (default) includes all locations. Combined with titleKeywords using AND. No matches returns 0 jobs successfully.

## Actor input object example

```json
{
  "careerSites": [
    "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&lang=en_US"
  ],
  "maxItems": 5,
  "includeDescription": true,
  "lang": "en_US",
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "titleKeywords": [],
  "locationKeywords": []
}
```

# Actor output Schema

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

Dataset with one item per job, in the order the career centers list them.

# 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 = {
    "careerSites": [
        "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&lang=en_US"
    ],
    "maxItems": 5,
    "includeDescription": true,
    "lang": "en_US",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axiomworks/adp-workforce-now-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 = {
    "careerSites": ["https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&lang=en_US"],
    "maxItems": 5,
    "includeDescription": True,
    "lang": "en_US",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("axiomworks/adp-workforce-now-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 '{
  "careerSites": [
    "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=cf5674db-9e68-440d-9919-4e047e6a1415&ccId=19000101_000001&lang=en_US"
  ],
  "maxItems": 5,
  "includeDescription": true,
  "lang": "en_US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call axiomworks/adp-workforce-now-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axiomworks/adp-workforce-now-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/vgyGAmNAPOapuhOAn/builds/8VcMa0vdAgpXKTICI/openapi.json
