Direct-Source Jobs Scraper — Greenhouse · Lever · Ashby avatar

Direct-Source Jobs Scraper — Greenhouse · Lever · Ashby

Pricing

from $1.00 / 1,000 job returneds

Go to Apify Store
Direct-Source Jobs Scraper — Greenhouse · Lever · Ashby

Direct-Source Jobs Scraper — Greenhouse · Lever · Ashby

Job postings straight from employer career boards (ATS). Zero job-board noise: no recruiter spam, no reposts, deduplicated, one clean schema.

Pricing

from $1.00 / 1,000 job returneds

Rating

0.0

(0)

Developer

Gunmo Goo

Gunmo Goo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Get job postings straight from employer career boards — not from job boards.

Why direct-source?

Job boards are noisy: recruiter spam, third-party reposts, expired listings, duplicates. This Actor pulls from the source of truth — the company's own ATS board — and returns one clean, normalized schema across Greenhouse, Lever, and Ashby:

  • Zero recruiter spam — employer boards only
  • API-based, not HTML scraping — reads the official public JSON endpoints each ATS exposes for careers pages. Career-site redesigns don't break it, and there are no proxies or browsers involved.
  • No reposts, no duplicates — content-based dedup IDs (same role reposted = same ID), duplicates removed within each run. Postings with identical company + title + location collapse into one item; the original ATS requisition ID is always preserved in source.source_id.
  • One schema for 3 ATS platforms — stop writing per-ATS parsers
  • ATS auto-detection — just give it a token like stripe; it figures out the rest
  • Remote detection — explicit ATS flags + location heuristics
  • New-jobs-only mode (onlyNewSinceLastRun) — schedule it and get only never-seen-before postings; you're only charged for new jobs
  • Filters — title keywords, departments, posted-after date, remote-only; filtered-out jobs are never charged
  • Honest billing, engineered in — you pay only for jobs that land in your dataset. Interrupted or migrated runs resume from a checkpoint and never push or charge the same job twice, and your Maximum cost per run is respected instead of overshot. (details)
  • Built-in registry of 200+ verified companies — set useRegistry: true and scrape a maintained list without building your own

Input

{
"companies": ["stripe", "openai", "gitlab"],
"remoteOnly": true,
"titleKeywords": ["engineer", "developer"],
"departments": ["engineering"],
"postedAfter": "2026-06-01",
"maxJobsPerCompany": 100
}

Or set "useRegistry": true to scrape a built-in, verified registry of 200+ tech companies (each one probed and confirmed against its live ATS board).

titleKeywords and departments match case-insensitively (any keyword matches). postedAfter keeps only jobs published on or after that date — jobs whose ATS doesn't report a publish date are excluded when this filter is set.

Output (Dataset)

{
"id": "e7d7dcd2c73dc668",
"company": "GitLab",
"title": "AI Engineer",
"location": { "raw": "Remote, US", "city": null, "country": null },
"remote": true,
"department": "Enterprise Applications",
"employment_type": "Full-time",
"salary": null,
"posted_at": "2026-04-17T12:07:26.000Z",
"description_html": "<p>...</p>",
"apply_url": "https://job-boards.greenhouse.io/gitlab/jobs/8565469002",
"source": { "ats": "greenhouse", "source_id": "8565469002", "fetched_at": "2026-07-02T15:01:00.000Z" }
}

Use cases

  • Recruiting tools & job boards — clean inventory without scraping 3 ATS APIs yourself
  • Sales intelligence / lead-gen — hiring signals as buying intent (who's hiring for what)
  • Market research — track hiring trends across companies and departments
  • Job alert products — set onlyNewSinceLastRun: true on a schedule and receive only new postings

Reliability

  • JSON endpoints only — no HTML parsing, so career-page redesigns don't affect results (as long as the ATS keeps its public API, which powers the vendor's own embed widgets).
  • Per-company failure isolation — one broken board never fails the whole run; failures are listed in the run's SUMMARY key-value record.
  • Honest failure signal — if every target fails, the run exits as failed instead of "succeeded with 0 items", so your schedules and monitoring actually notice.
  • Malformed postings are skipped, not fatal — a single bad record can't crash a board's collection; skip counts are reported in SUMMARY.

Pricing & honest billing

Pay-per-event: you're charged per job returned. No subscription, no minimum.

  • You only pay for what lands in your dataset. Jobs removed by dedup, filters, or new-jobs-only mode are never charged.
  • No double billing on interruptions. If a run is migrated or restarted, it resumes from a checkpoint: companies already scraped are skipped and already-delivered jobs are never pushed or charged twice.
  • Cost cap respected. If you set Maximum cost per run, collection stops at the limit instead of overshooting it.

Fair use & compliance

This Actor only accesses public, unauthenticated job board endpoints that ATS vendors expose for embedding careers pages. It respects rate limits (sequential, delayed requests), identifies itself with a contact User-Agent, and collects no personal or applicant data — only public job postings.