ADP Jobs Scraper avatar

ADP Jobs Scraper

Pricing

from $0.35 / 1,000 results

Go to Apify Store
ADP Jobs Scraper

ADP Jobs Scraper

Scrapes job listings from jobs.adp.com, the careers site of ADP, one of the largest payroll/HR platforms in the US. Optionally filter by team; returns job title, url, posted date, location and the full description, address list and employment type.

Pricing

from $0.35 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrapes job listings from jobs.adp.com — the careers site of ADP, one of the largest payroll/HR/HCM platforms in the US. A different source than the job boards this portfolio already covers (Indeed, Glassdoor, JobStreet, Bayt, HeadHunter, Reed): these are ADP's own open roles, not third-party-aggregated listings.

Public data only. No login, no cookies, no browser.

What you get

Two record types share one dataset, told apart by recordType.

JOB — one row per listing

Search rows (listing) carry job id, title, url, a posted-date preview and a location summary. With Fetch full job details on (the default), each row also gets a jobDetails object — the complete Schema.org JobPosting: full HTML description, employment type, and a structured list of every office/remote location the role is open to (each with a full postal address).

SEARCH_SUMMARY — one row per query

How many pages were fetched and how many jobs were returned.

Input

FieldWhat it does
Team / department filteroptional list of ADP's own category names (e.g. Sales); verified to actually filter
Max jobs / max pages per querypagination caps
Fetch full job detailsoff = fast listing-only crawl

Example

{
"teams": ["Sales", "Finance/Accounting"],
"maxItems": 200,
"includeJobDetails": true
}

Notes on reliability

  • No WAF challenge. Serves data cold on every TLS profile tested.
  • Runs unattended. No human-captured session, no expiring token.
  • teams filter is real, not a silent-widen trap. A bogus team value returns zero jobs (verified live), not the unfiltered baseline — unusual among filter parameters found across this portfolio, most of which DO silently widen.
  • Pagination verified genuine, not a repeat/clamp: page 1 and page 2 return zero overlapping job ids.
  • Residential proxy by default on cloud runs.
  • Failures never vanish. A job withdrawn mid-crawl degrades that one row (_detailError); every input maps to at least one output row.

A markup gotcha worth knowing

The detail page's JSON-LD script tag HTML-entity-encodes its own type attribute — application/ld+json, not a literal application/ld+json — which silently breaks a naive regex/selector looking for the standard string. This actor anchors on the script's stable id="js-job-posting" instead. See CRAWLING_METHOD.md for the full trail.

Output envelope

Every record carries _input, _source and _scrapedAt. Upstream field names pass through verbatim under listing (search) and jobDetails (detail) — no renaming. _source is S1-html-search for listing-only rows and S1-html-search+S2-jsonld-detail once details are attached.