ADP Jobs Scraper avatar

ADP Jobs Scraper

Pricing

from $0.60 / 1,000 adp job saveds

Go to Apify Store
ADP Jobs Scraper

ADP Jobs Scraper

Extract public job postings from ADP Workforce Now career centers.

Pricing

from $0.60 / 1,000 adp job saveds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Share

Extract public job postings from ADP Workforce Now career centers on workforcenow.adp.com. This jobs and recruiting data scraper turns public ADP career-center URLs into structured job rows for recruiting intelligence, job-board backfills, market research, and hiring monitors.

Quick start

  1. Copy a public ADP Workforce Now career-center URL containing cid.
  2. Paste it into startUrls, set a small maxItems, and run the Actor.
  3. Open the dataset and export job rows as JSON, CSV or Excel. Filter on itemType=job if diagnostic rows are enabled.
{
"startUrls": [
{
"url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?ccId=19000101_000001&cid=070b2b3d-d077-4d73-b340-6055055056a6&lang=en_US"
}
],
"maxItems": 20,
"includeRaw": true,
"emitErrorItems": true
}

The Actor keeps the jobs returned by each source; it does not guarantee all openings in an employer's reported total. Source order is retained, not sorted by date or relevance.

At a glance

  • Primary job: Collect current public ADP Workforce Now job postings without browser automation or credentials.
  • Input: Public ADP recruitment page URLs or public ADP job-requisitions API URLs containing cid.
  • Output: One dataset row per job with title, requisition IDs, location, dates, job URL, tenant identifiers, and optional raw ADP JSON.
  • Best for: Recruiting intelligence, competitor hiring tracking, job-board sourcing, lead generation, and scheduled monitoring.

Common workflows

  • Collect ADP-hosted openings: Export the available returned jobs from an employer's public ADP career center; results may be fewer than the employer's reported total.
  • Compare hiring changes: Run the same ADP tenants again manually and compare dataset exports over time.
  • Feed recruiting systems: Send requisition IDs, job URLs, titles, and locations into spreadsheets, CRMs, data warehouses, or automation tools.
  • Validate source URLs: Keep emitErrorItems enabled to receive stable diagnostic rows for missing cid, unsupported URLs, empty tenants, or unexpected responses.

Ready-to-run examples

For your own employer, replace the URL in the example input below with a full public ADP URL containing cid. Both recruitment-page and public job-requisitions URLs are accepted. Several URLs can be supplied in startUrls; maxItems caps saved job rows across them all.

What data can you extract?

FieldDescription
itemTypejob for job rows or error for diagnostic rows.
jobIdADP job item ID.
clientRequisitionIdEmployer/client requisition identifier.
externalJobIdExternal job ID when ADP exposes it.
titlePublic job title.
companyNameCompany name when included by ADP.
careerCenterUrlCanonical ADP career-center URL for the tenant.
jobUrlCanonical public job URL including the ADP job ID.
sourceUrlOriginal input URL.
cid, ccId, langADP tenant/career-center/language identifiers.
postDate, currentServerDateRaw public ADP date values.
locationText, city, region, postalCode, countryLocation text and normalized location parts.
workLevel, jobClass, departmentCommon ADP classification fields.
isInternalPostingInternal-posting flag when exposed.
expectedTotal, returnedCountCount diagnostics from the ADP response.
rawRequisitionOriginal ADP requisition object when includeRaw is enabled.
errorCode, errorMessageStable diagnostics for invalid or unsupported inputs.

Input configuration

SettingJSON keyUse it forExample
ADP career center URLsstartUrlsRequired public ADP Workforce Now URLs containing cid.Full recruitment URL shown above
Maximum jobsmaxItemsCap saved job rows and control spend.20
Include raw ADP requisitionincludeRawPreserve the original source object for fields not yet normalized.true
Emit error rowsemitErrorItemsSave diagnostic rows for bad inputs, empty tenants, and non-JSON responses.true

Example output

{
"itemType": "job",
"jobId": "9201203789874_1",
"clientRequisitionId": "2833",
"externalJobId": "595246",
"title": "Cybersecurity Compliance Engineer",
"careerCenterUrl": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=070b2b3d-d077-4d73-b340-6055055056a6&ccId=19000101_000001&lang=en_US",
"jobUrl": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=070b2b3d-d077-4d73-b340-6055055056a6&ccId=19000101_000001&lang=en_US&jobId=9201203789874_1",
"sourceUrl": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?ccId=19000101_000001&cid=070b2b3d-d077-4d73-b340-6055055056a6&lang=en_US",
"cid": "070b2b3d-d077-4d73-b340-6055055056a6",
"ccId": "19000101_000001",
"lang": "en_US",
"postDate": "2026-07-13T09:26:00.000-04:00",
"locationText": "Philadelphia, Philadelphia, PA, US",
"city": "Philadelphia",
"region": "PA",
"postalCode": "19114",
"country": "US",
"workLevel": "Regular Full-Time",
"jobClass": "Professional",
"department": "",
"isInternalPosting": false,
"expectedTotal": 23,
"returnedCount": 20,
"scrapedAt": "2026-07-16T10:00:54.791Z"
}

Pricing and limits

This Actor uses pay-per-event pricing: start is a one-time charge per run, and item is charged for each saved job row. Diagnostic rows with itemType=error are not charged as job items. See the live Pricing tab for current rates and plan discounts.

Use maxItems to bound saved jobs across all input URLs. Diagnostic rows do not count toward this cap. A single response may contain fewer jobs than ADP's reported total; increasing the cap does not guarantee a complete employer inventory.

Tips for best results

  • Use public ADP URLs: Open the URL in a private browser window first. If the job list is public, the Actor can usually process it.
  • Keep examples small: Start with maxItems: 20 until you confirm the output shape for a tenant.
  • Keep raw data when exploring: Leave includeRaw: true for first runs so you can inspect source fields beyond the normalized columns.
  • Check diagnostics: If a row has itemType=error, inspect errorCode and errorMessage before retrying.

Limits and practical notes

This Actor collects public postings on workforcenow.adp.com only; other ADP products or domains are not supported. It does not log in, submit applications, access applicant profiles, retrieve candidate data, or use employer/admin sessions. Public visibility can change, and an inaccessible response does not establish whether a posting is private or deleted.

Fields missing from the source may be null or omitted. includeRaw preserves the original object, not a guarantee of full job descriptions. With emitErrorItems enabled, the Actor can save diagnostic rows for empty sources and certain input or response problems; disabling it omits those rows, not fatal execution errors. An EMPTY_TENANT row means zero requisitions were returned, not proof that an employer has no openings.

API usage

Node.js:

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/adp-jobs-scraper").call({
startUrls: [{ url: "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?ccId=19000101_000001&cid=070b2b3d-d077-4d73-b340-6055055056a6&lang=en_US" }],
maxItems: 20,
includeRaw: true,
emitErrorItems: true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/adp-jobs-scraper").call(run_input={
"startUrls": [{"url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?ccId=19000101_000001&cid=070b2b3d-d077-4d73-b340-6055055056a6&lang=en_US"}],
"maxItems": 20,
"includeRaw": True,
"emitErrorItems": True,
})
print(client.dataset(run["defaultDatasetId"]).list_items().items)

cURL:

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~adp-jobs-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?ccId=19000101_000001&cid=070b2b3d-d077-4d73-b340-6055055056a6&lang=en_US"}],"maxItems":20,"includeRaw":true,"emitErrorItems":true}'

MCP and AI agents

Use this Actor from MCP-compatible tools through the official Apify MCP Server. The general server can search and run Actors; the focused URL below exposes this Actor. Supply your Apify token through your client's supported authentication settings. After a run, retrieve its dataset to inspect the job rows rather than assuming the run response contains every result.

$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/adp-jobs-scraper"

MCP JSON configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/adp-jobs-scraper"
}
}
}

Tool input:

{
"startUrls": [
{ "url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?ccId=19000101_000001&cid=070b2b3d-d077-4d73-b340-6055055056a6&lang=en_US" }
],
"maxItems": 20,
"includeRaw": true,
"emitErrorItems": true
}

Example prompts:

  • "Run ADP Jobs Scraper for this public ADP career-center URL and summarize the job titles by location."
  • "Extract up to 50 public ADP jobs and return a table with title, requisition ID, post date, and job URL."

FAQ

Can I export ADP jobs to CSV or use them through an API? Yes. Export the dataset as CSV, Excel or JSON, or use the API examples above to run the Actor and retrieve dataset items. The same job fields and source limitations apply.

Is this an official ADP API or the ADP employment report? No. This is an independent scraper for public employer career-center postings, not ADP's economic jobs report or an employer/admin API.

Does this Actor need ADP credentials? No. It is designed for public ADP Workforce Now career-center postings only.

Can it submit applications or collect applicant profiles? No. Application flows, candidate profiles, documents, and employer/admin pages are outside this Actor's scope.

Why did I get an MISSING_CID error? The input URL does not include ADP's public cid tenant parameter. Copy the full ADP career-center URL from the browser address bar.

Why are there fewer rows than expectedTotal? ADP may report the tenant total separately from the returned page. The Actor keeps the available public rows and records expectedTotal and returnedCount for diagnostics.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run ID, a non-sensitive input example and what you expected. Include any diagnostic errorCode or errorMessage, but never credentials or private data.

Made with care for curious people, AI agents and the possibilities in data. ♥