💼 Career Site Job Listing API avatar

💼 Career Site Job Listing API

Pricing

from $4.99 / 1,000 results

Go to Apify Store
💼 Career Site Job Listing API

💼 Career Site Job Listing API

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

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

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

FeatureDescription
🔗 Bulk URLsPaste many ADP career-site URLs (or bare cids) at once.
⏱️ Time range1h, 24h, 7d, or 6m backfill.
🔎 Search filtersTitle / location / description / organization include and exclude lists, with :* prefix matching.
💰 Salary filterReturn only jobs that publish a salary range.
🏠 Remote filterReturn only remote-detected jobs.
🗺️ GeocodingToggle free OpenStreetMap lat/lng enrichment.
🛰️ Discovery modeOptionally auto-discover live ADP career sites via Common Crawl.
🛡️ Smart proxiesAuto-fallback ladder, sticky once escalated, fully logged.

📥 Input

{
"timeRange": "6m",
"limit": 100,
"descriptionType": "text",
"enableGeocoding": true,
"titleSearch": ["Engineer", "Nurse:*"],
"locationSearch": ["Toronto"],
"aiHasSalary": false,
"proxyConfiguration": { "useApifyProxy": false }
}
FieldTypeDescription
(companies)The set of ADP companies to crawl is built into the Actor. Enable scrapeAllCompanies to auto-discover and crawl every ADP site instead.
proxyConfigurationobjectProxy settings. Defaults to no proxy; auto-escalates on block.
timeRangestring1h / 24h / 7d / 6m.
limitintegerMax jobs to save (1–5000).
descriptionTypestringtext or html.
enableGeocodingbooleanResolve locations to lat/lng (default true).
includeAi / includeLinkedInbooleanKeep or drop the ai_* / linkedin_org_* columns.
titleSearch / …ExclusionSearcharrayInclude / exclude by title (:* = prefix).
locationSearch, descriptionSearch, organizationSearcharraySame pattern for location / description / company.
aiHasSalarybooleanOnly jobs with a salary.
remoteOnlybooleanOnly remote jobs.
datePostedAfterstring (date)Overrides timeRange when set.
scrapeAllCompaniesbooleanDiscovery mode (auto-find ADP sites).
discoveryIndexes, discoveryMaxPages, maxCompaniesintegerDiscovery-mode caps.

📤 Output

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

{
"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.comActors.
  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

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.