ADP Workforce Now Jobs Scraper
Pricing
from $0.69 / 1,000 results
ADP Workforce Now Jobs Scraper
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.
Pricing
from $0.69 / 1,000 results
Rating
0.0
(0)
Developer
Axiom Works
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
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.
{"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
- 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 ascf5674db-9e68-440d-9919-4e047e6a1415. - Open the Actor in Apify Console and paste one URL (or just the cid) per line into Career-center URLs or cids.
- 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.
- 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.
- 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:
- Keep the
ccIdandlangparameters that appear in the employer's URL. The Actor uses them for the share links injobUrl, so links open the same career center the employer published. - A bare cid works too. Then the share link has no
ccId, andlangcomes from the Language field. - Schedule the Actor daily and compare
idvalues between runs to find new and closed jobs. - 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. |
{"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):
[{"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> ... 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:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=axiomworks/adp-workforce-now-jobs-scraper"}}}
Example prompts:
- "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"
- "Scrape the open jobs for ADP tenant c5bf927d-75b0-4e6e-8d59-de5517866227 without descriptions and group them by state."
- "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
from apify_client import ApifyClientclient = 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
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
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 | Collects job postings from LinkedIn job search |
| Google Jobs Scraper | Collects job listings from Google's jobs search |
| Reed.co.uk Jobs Scraper | Collects job listings from Reed.co.uk |
| Remote Job Listings 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.