Adderley Data / Jobs / Career Site Jobs Scraper
Career Site Jobs Scraper — Greenhouse, Lever, Workday
Every open role at the companies you name, from fifteen ATSs — Greenhouse, Lever, Ashby, Workday, Workable, BambooHR, Personio, Dayforce, JobAdder, Employment Hero and five more — in one schema. Give board links, domains or names. Incremental mode charges only for what changed. No personal data.
- Price
- US$2.00 per 1,000 postings saved on Apify's Starter plan, plus US$0.005 a run
- Reads
- 15 applicant tracking systems
- Monitor mode
- Returns and charges only postings that are new, changed or gone
- Output
job.v1, 38 fields, the same for every Adderley Data jobs Actor- Personal data
- None: no field can hold a person, and contacts in posting text are redacted by default
Start from a saved input
Each opens on Apify with its input filled in, ready to run or schedule.
Every open role at a list of companies
Company names and board links in one list: each company's board is found on its own ATS and every open role comes back in one schema, with the source named on each row.
New and changed roles at a list of companies, daily
An incremental monitor across ATSs: schedule it daily and each run returns only postings that are new, edited or gone, and charges nothing for the rest.
Engineering roles across Greenhouse, Ashby and Workday boards
One title keyword applied on every board: to the board's own list on Greenhouse and Ashby, and as a search on the board itself on Workday.
Remote roles at a list of companies
Postings whose location says remote, from every company's board, with the country parsed where the posting states it.
Pay ranges from company career sites
Postings from the last 30 days with their full text, and every pay range a posting states parsed to minimum, maximum, currency and period.
What you can set
Every setting is described on the Actor's input page on Apify.
Call it from code
One request runs the Actor and returns its rows as JSON (or CSV with format=csv), with your Apify API token.
curl -X POST "https://api.apify.com/v2/acts/adderleydata~career-site-jobs-scraper/run-sync-get-dataset-items?format=json" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies":["Ashby","Rippling","https://boards.greenhouse.io/greenhouse"],"maxResults":100}'
That call suits runs that finish within the 300 seconds Apify allows it. Longer runs are started and read back through the API page on Apify.
Fields in every row
The same 38 fields from every Adderley Data jobs Actor, so tables from different sources stack.
| Field | What it holds |
|---|---|
id | Stable across runs: source:market:sourceJobId. Use it as your primary key. |
title | Job title as listed. |
company.name | The hiring company, where the listing names one. |
advertiser.name | The business that placed the listing — often a recruitment agency. Never a person. |
location.raw | Location text as listed. Several locations are joined with | . |
location.suburb | Suburb, when the listing states one. |
location.city | City or area, when the listing states one. |
location.region | State or region, e.g. VIC. |
location.postcode | Postcode, when the source provides it. |
location.country | ISO 3166-1 alpha-2 country code. |
workArrangement | on_site, hybrid, remote or unknown. |
employmentTypes | Normalised: full_time, part_time, contract, casual, temporary, internship, volunteer. |
salary.raw | The salary text exactly as shown, or null when the listing shows none. |
salary.min | Lower bound as a number, when the text contains one. |
salary.max | Upper bound as a number. Equal to min for a single figure. |
salary.currency | ISO 4217. Taken from the text, otherwise the market default. |
salary.period | hour, day, week, month or year; null when the text does not say. |
salary.includesSuper | true / false when the text says so ("plus super", "inc. super"); otherwise null. |
classifications | The source's category and subcategory pairs. |
teaser | The short summary shown on the results page. |
bulletPoints | Selling points shown on the results page. |
postedAt | When the listing was posted, ISO 8601 UTC. |
updatedAt | The source's own last-modified time, ISO 8601 UTC. Published by ATS and API sources; null where the site does not show one. |
expiresAt | Expiry, ISO 8601 UTC, where the source states one. |
isPromoted | true for paid placements. A listing shown both promoted and organic is returned once. |
url | Link to the listing. |
description | Null unless requested. text, optional sanitised html, and contactsRedacted. |
changeType | Incremental runs: NEW, UPDATED, REAPPEARED, EXPIRED (or UNCHANGED if you ask for those). Otherwise null. |
firstSeenAt | Incremental runs: when this monitor first saw the listing. |
contentHash | SHA-256 over the fields that define a change. Compare it to detect edits yourself. |
scrapedAt | When this row was produced, ISO 8601 UTC. |
source | Source key, e.g. seek. |
market | Market key, e.g. au, nz. |
sourceJobId | The source's own identifier for the listing. |
company.sourceCompanyId | The source's identifier for the company, when exposed. |
company.url | The company's page on the source site, when exposed. |
advertiser.sourceAdvertiserId | The source's identifier for the advertiser. |
schemaVersion | Always job.v1. Breaking changes ship as job.v2 in a new Actor version, never silently. |
Not affiliated with, endorsed by or sponsored by Greenhouse, Lever, Ashby, Workday, Recruitee, Breezy HR, Rippling, Workable, BambooHR, Personio, JazzHR, Pinpoint, Dayforce, JobAdder, Employment Hero or any company whose job board it reads. Their names are trade marks of their owners and are used here only to describe what this Actor reads.