Job Board Scraper — Greenhouse, Lever & Ashby avatar

Job Board Scraper — Greenhouse, Lever & Ashby

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Job Board Scraper — Greenhouse, Lever & Ashby

Job Board Scraper — Greenhouse, Lever & Ashby

Collect and normalize public jobs from Greenhouse, Lever, and Ashby. Filter by keyword, location, remote status, or date and track changes across runs. No browser, login, API key, or residential proxy. Just $0.001 per job ($1 per 1,000).

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Coor Yu

Coor Yu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Monitor public company job boards without building and maintaining three separate integrations. Add Greenhouse, Lever, or Ashby board URLs and receive one normalized dataset ready for alerts, analytics, search, or a careers product.

Why users choose this Actor

  • Supports Greenhouse, Lever, and Ashby in the same run.
  • Filters by keyword, location, remote status, and publication date.
  • Detects new, updated, unchanged, and removed jobs between runs.
  • Uses public JSON endpoints—no browser, login, API key, CAPTCHA solver, or residential proxy.

Budget-friendly pay-per-result pricing

  • Result fee: $0.001 per job — $1 per 1,000 output jobs.
  • A small Actor start event and normal Apify platform usage may also apply; see the Pricing tab.
  • Rows filtered out before they reach the dataset do not incur the per-result fee.

Add one or more supported job boards in Input, choose your filters, and click Start.

Why this Actor

  • No accounts, cookies, CAPTCHA solvers, API keys, browsers, or residential proxies.
  • Uses documented public JSON endpoints instead of fragile page selectors.
  • Fetches boards concurrently and normally needs only one or two compressed HTTP requests per board.
  • Normalizes different sources into a stable job schema.
  • Supports keyword, location, remote, and publication-date filters.
  • Detects new, updated, unchanged, and removed jobs between runs.
  • Keeps healthy source results when another board temporarily fails.

Supported sources

ProviderAccepted URL examplesData source
Greenhousehttps://boards.greenhouse.io/stripe
https://job-boards.greenhouse.io/stripe
Public Greenhouse Job Board API
Leverhttps://jobs.lever.co/company
https://jobs.eu.lever.co/company
Public Lever Postings API
Ashbyhttps://jobs.ashbyhq.com/companyPublic Ashby Job Postings API

Only the listed provider domains are accepted. This prevents accidental requests to private networks or arbitrary URLs.

Input

Minimal example:

{
"jobBoards": [
{ "url": "https://boards.greenhouse.io/stripe", "company": "Stripe" },
{ "url": "https://jobs.eu.lever.co/lever", "company": "Lever" },
{ "url": "https://jobs.ashbyhq.com/ashby", "company": "Ashby" }
]
}

Filtered monitoring example:

{
"jobBoards": [
{ "url": "https://boards.greenhouse.io/stripe" }
],
"includeKeywords": ["software", "machine learning", "data"],
"excludeKeywords": ["manager", "director"],
"locations": ["Singapore", "Remote"],
"changeMode": "new-and-updated",
"stateKey": "apac-engineering"
}

Main options

FieldDefaultDescription
jobBoardsrequiredUp to 100 public Greenhouse, Lever, or Ashby board URLs.
includeDescriptionstrueInclude clean text and source HTML descriptions.
includeCompensationtrueInclude source compensation or infer an explicit salary range.
maxJobsPerBoard0Maximum matching jobs per board; 0 is unlimited.
includeKeywords[]Keep a job if any keyword matches.
excludeKeywords[]Remove a job if any keyword matches.
locations[]Case-insensitive partial location matching.
remoteOnlyfalseKeep only explicitly remote jobs.
publishedAfterunsetISO date in YYYY-MM-DD form. Undated jobs are retained.
changeModeallall, new-and-updated, or all-changes.
maxConcurrency15Concurrent boards, from 1 to 50.
requestTimeoutSecs30Per-request timeout.
maxRetries3Retries for timeouts, 429s, and 5xx responses.

Output

Every dataset item follows one normalized schema, including:

  • stable id and provider externalId
  • company, title, location, department, team, and employment type
  • remote and workplace type indicators
  • published and updated timestamps when exposed by the source
  • clean description text and original description HTML
  • job and application URLs
  • structured salary when published or safely recognized
  • source provider and board URL
  • changeStatus: new, updated, unchanged, or removed
  • content fingerprint and scrape timestamp

The OUTPUT key-value store record contains counts, source timings, failures, and explicit proxyUsed: false and residentialProxyUsed: false fields.

Incremental monitoring

The Actor stores a source-and-filter-scoped snapshot in a named key-value store. Use the same board list, filters, and stateKey for comparable runs:

  • all: output the complete current snapshot.
  • new-and-updated: suppress unchanged jobs.
  • all-changes: output new, updated, and removed jobs.

A failed board is never treated as if all of its jobs were removed. Its previous snapshot is preserved until the source succeeds again.

Performance and proxy policy

This Actor deliberately does not create or accept an Apify proxy configuration. It uses direct HTTPS requests to public, documented endpoints. Performance comes from:

  • concurrent board fetching;
  • JSON APIs rather than browser rendering;
  • HTTP compression and connection reuse provided by Node.js fetch;
  • bounded request timeouts;
  • exponential retry with jitter for temporary failures;
  • one batched dataset write per 500 output records.

If a provider later stops making its public endpoint available without a residential proxy, support for that provider should be paused or explicitly redesigned. A residential proxy must never be silently enabled.

Local development

npm install
npm test
npm run build

Create storage/key_value_stores/default/INPUT.json, then run:

$npm start

Responsible use

The Actor only reads published job listings and does not submit applications or access candidate data. Users remain responsible for complying with applicable website terms, privacy rules, and laws.