ATS job board research
Pull a company's live openings directly from its ATS-hosted career page —
Greenhouse, Lever, Workday, Ashby, and 12 more platforms — as normalized JSON
from the Crawlora API, no scraping career pages by hand. This is for
companies that host their own ATS-backed careers site, not aggregator search
(see the job-market-research skill for Indeed/Google Jobs) and not the
handful of big-tech-specific skills (Google/Amazon/Apple/Meta/Tesla Jobs).
When to use this skill
- "Pull every open role from
<company>'s Greenhouse/Lever/Workday board."
- "What is
<startup> currently hiring for on Ashby / SmartRecruiters / Workable?"
- "Get the full description for this one job posting I found on
<company>'s careers page."
- "Is
<company> scaling headcount?" — hiring-velocity snapshot from their ATS board.
- "Which ATS does
<company> use, and what's their board slug?"
- "Diff new postings on
<company>'s board week over week."
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEY in the environment before running the helper.
- The helper reads
CRAWLORA_API_KEY from the environment and sends requests to https://api.crawlora.net/api/v1. Missing/invalid key → 401.
How it works
Every platform follows the same two-call shape: a board/list endpoint
(all open postings, often with detail inline) and a job-detail endpoint
(one posting's full HTML/text description), both keyed by the company's own
slug from its careers URL — not its public brand name. jobs/company-search
probes the slug-only platforms for you when you don't already know which ATS
a company uses.
| Platform |
Slug param(s) |
List |
Detail |
| Greenhouse |
token |
/jobs/greenhouse/board |
/jobs/greenhouse/job |
| Lever |
company |
/jobs/lever/postings |
/jobs/lever/posting |
| Ashby |
org |
/jobs/ashby/board |
(inline) |
| Workday |
tenant + datacenter + site |
/jobs/workday/board |
/jobs/workday/job |
| SmartRecruiters |
company |
/jobs/smartrecruiters/postings |
/jobs/smartrecruiters/posting |
| Workable |
company |
/jobs/workable/postings |
/jobs/workable/posting |
| Personio |
company |
/jobs/personio/feed |
(inline) |
| Recruitee |
company |
/jobs/recruitee/offers |
/jobs/recruitee/offer |
| iCIMS |
domain |
/jobs/icims/board |
/jobs/icims/job |
| Oracle Recruiting |
host + site |
/jobs/oracle/board |
/jobs/oracle/job |
| Rippling |
company |
/jobs/rippling/board |
/jobs/rippling/job |
| Pinpoint |
company |
/jobs/pinpoint/board |
(inline) |
| Eightfold |
tenant + domain |
/jobs/eightfold/board |
/jobs/eightfold/job |
| Gem |
company |
/jobs/gem/board |
(inline) |
| UKG (Pro Recruiting) |
tenant + board |
/jobs/ukg/board |
(inline, brief) |
| Teamtailor |
company |
/jobs/teamtailor/jobs |
(inline) |
Cross-cutting endpoints:
/jobs/company-search — probe a slug across Greenhouse, Lever, Ashby,
SmartRecruiters, Workable, Recruitee, Rippling, Teamtailor, and Pinpoint at
once and report where it resolves (Workday excluded — needs
tenant+datacenter+site, not a plain slug).
/jobs/hiring-signals — aggregate any one platform's board into a
headcount-growth snapshot (open-role total, department/location/title
breakdowns, remote share, roles new in the last 7/30 days) in one call.
Pass provider (the ATS name) plus that provider's own slug params.
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Greenhouse — list a board, then pull one job's full description:
scripts/crawlora.sh /jobs/greenhouse/board token=stripe | jq '.data'
scripts/crawlora.sh /jobs/greenhouse/job token=stripe id=1234567 | jq '.'
# Lever — list postings filtered by department:
scripts/crawlora.sh /jobs/lever/postings company=netflix department=Engineering | jq '.'
# Workday — needs tenant + datacenter + site from the careers URL:
scripts/crawlora.sh /jobs/workday/board tenant=nike datacenter=wd5 site=nikeinc | jq '.'
# Hiring-velocity snapshot for an Ashby-hosted board:
scripts/crawlora.sh /jobs/hiring-signals provider=ashby org=ramp | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for all endpoints, their HTTP methods, and full param lists.
Examples
- "What is
<company> hiring for right now?" — if the platform is
known, call its board endpoint directly (e.g.
/jobs/greenhouse/board token=<slug>); otherwise resolve it first with
/jobs/company-search slug=<slug>.
- "Is
<company> scaling?" — /jobs/hiring-signals with the right
provider + slug params for a velocity summary (new roles in last
7/30 days, department mix), then the raw board endpoint for the
role-by-role detail behind it.
- Competitor hiring watch across ATS platforms: pull the ATS boards of
3-4 competitors (mixing Greenhouse, Lever, Workday, whichever each uses)
on a schedule and diff new postings between runs.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo.
Key at https://crawlora.net.
- Public data only — public postings/boards; respect each source's terms.
- Security: key lives in
CRAWLORA_API_KEY only — never hardcode, query-param, or commit it.
- You need to already know which ATS a company uses and its board slug
(not its public brand name) before calling a platform-specific endpoint —
use
/jobs/company-search to resolve it when you don't. This skill does
not do fuzzy company-name lookup or cross-platform discovery beyond that
one probe endpoint.
- Results are paginated on most board/list endpoints (
limit/offset or
page) — walk the full list for a complete pull.
1---2name: ats-job-boards-research3description: Fetches any company's job openings straight from its Applicant Tracking System (ATS) via the Crawlora API — Greenhouse, Lever, Workday, Ashby, SmartRecruiters, Workable, Personio, Recruitee, iCIMS, Oracle Recruiting, Rippling, Pinpoint, Eightfold, Gem, UKG, and Teamtailor — returning clean JSON. Use when the user wants every open role from a specific company's ATS-hosted career page, a single job posting's full detail, or a hiring-velocity snapshot for a company, given its ATS platform and company/board slug.4---56# ATS job board research78Pull a company's live openings directly from its ATS-hosted career page —9Greenhouse, Lever, Workday, Ashby, and 12 more platforms — as normalized JSON10from the Crawlora API, no scraping career pages by hand. This is for11companies that host their own ATS-backed careers site, not aggregator search12(see the `job-market-research` skill for Indeed/Google Jobs) and not the13handful of big-tech-specific skills (Google/Amazon/Apple/Meta/Tesla Jobs).1415## When to use this skill1617- "Pull every open role from `<company>`'s Greenhouse/Lever/Workday board."18- "What is `<startup>` currently hiring for on Ashby / SmartRecruiters / Workable?"19- "Get the full description for this one job posting I found on `<company>`'s careers page."20- "Is `<company>` scaling headcount?" — hiring-velocity snapshot from their ATS board.21- "Which ATS does `<company>` use, and what's their board slug?"22- "Diff new postings on `<company>`'s board week over week."2324## Setup (one-time)2526- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).27- Set `CRAWLORA_API_KEY` in the environment before running the helper.28- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.2930## How it works3132Every platform follows the same two-call shape: a **board/list** endpoint33(all open postings, often with detail inline) and a **job-detail** endpoint34(one posting's full HTML/text description), both keyed by the company's own35slug from its careers URL — not its public brand name. `jobs/company-search`36probes the slug-only platforms for you when you don't already know which ATS37a company uses.3839| Platform | Slug param(s) | List | Detail |40|---|---|---|---|41| Greenhouse | `token` | `/jobs/greenhouse/board` | `/jobs/greenhouse/job` |42| Lever | `company` | `/jobs/lever/postings` | `/jobs/lever/posting` |43| Ashby | `org` | `/jobs/ashby/board` | *(inline)* |44| Workday | `tenant` + `datacenter` + `site` | `/jobs/workday/board` | `/jobs/workday/job` |45| SmartRecruiters | `company` | `/jobs/smartrecruiters/postings` | `/jobs/smartrecruiters/posting` |46| Workable | `company` | `/jobs/workable/postings` | `/jobs/workable/posting` |47| Personio | `company` | `/jobs/personio/feed` | *(inline)* |48| Recruitee | `company` | `/jobs/recruitee/offers` | `/jobs/recruitee/offer` |49| iCIMS | `domain` | `/jobs/icims/board` | `/jobs/icims/job` |50| Oracle Recruiting | `host` + `site` | `/jobs/oracle/board` | `/jobs/oracle/job` |51| Rippling | `company` | `/jobs/rippling/board` | `/jobs/rippling/job` |52| Pinpoint | `company` | `/jobs/pinpoint/board` | *(inline)* |53| Eightfold | `tenant` + `domain` | `/jobs/eightfold/board` | `/jobs/eightfold/job` |54| Gem | `company` | `/jobs/gem/board` | *(inline)* |55| UKG (Pro Recruiting) | `tenant` + `board` | `/jobs/ukg/board` | *(inline, brief)* |56| Teamtailor | `company` | `/jobs/teamtailor/jobs` | *(inline)* |5758Cross-cutting endpoints:5960- `/jobs/company-search` — probe a `slug` across Greenhouse, Lever, Ashby,61 SmartRecruiters, Workable, Recruitee, Rippling, Teamtailor, and Pinpoint at62 once and report where it resolves (Workday excluded — needs63 tenant+datacenter+site, not a plain slug).64- `/jobs/hiring-signals` — aggregate any one platform's board into a65 headcount-growth snapshot (open-role total, department/location/title66 breakdowns, remote share, roles new in the last 7/30 days) in one call.67 Pass `provider` (the ATS name) plus that provider's own slug params.6869Full endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).7071## Calling the API7273```sh74# Greenhouse — list a board, then pull one job's full description:75scripts/crawlora.sh /jobs/greenhouse/board token=stripe | jq '.data'76scripts/crawlora.sh /jobs/greenhouse/job token=stripe id=1234567 | jq '.'7778# Lever — list postings filtered by department:79scripts/crawlora.sh /jobs/lever/postings company=netflix department=Engineering | jq '.'8081# Workday — needs tenant + datacenter + site from the careers URL:82scripts/crawlora.sh /jobs/workday/board tenant=nike datacenter=wd5 site=nikeinc | jq '.'8384# Hiring-velocity snapshot for an Ashby-hosted board:85scripts/crawlora.sh /jobs/hiring-signals provider=ashby org=ramp | jq '.'86```8788Use `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.899091## Endpoint reference9293See [`reference/endpoints.md`](reference/endpoints.md) for all endpoints, their HTTP methods, and full param lists.9495## Examples9697- **"What is `<company>` hiring for right now?"** — if the platform is98 known, call its board endpoint directly (e.g.99 `/jobs/greenhouse/board token=<slug>`); otherwise resolve it first with100 `/jobs/company-search slug=<slug>`.101- **"Is `<company>` scaling?"** — `/jobs/hiring-signals` with the right102 `provider` + slug params for a velocity summary (new roles in last103 7/30 days, department mix), then the raw board endpoint for the104 role-by-role detail behind it.105- **Competitor hiring watch across ATS platforms:** pull the ATS boards of106 3-4 competitors (mixing Greenhouse, Lever, Workday, whichever each uses)107 on a schedule and diff new postings between runs.108109## Notes & limits110111- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.112 Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).113- **Public data only** — public postings/boards; respect each source's terms.114- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.115- **You need to already know which ATS a company uses and its board slug**116 (not its public brand name) before calling a platform-specific endpoint —117 use `/jobs/company-search` to resolve it when you don't. This skill does118 not do fuzzy company-name lookup or cross-platform discovery beyond that119 one probe endpoint.120- Results are paginated on most board/list endpoints (`limit`/`offset` or121 `page`) — walk the full list for a complete pull.