Ashby Jobs API — Job Board Postings as Clean Rows avatar

Ashby Jobs API — Job Board Postings as Clean Rows

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Ashby Jobs API — Job Board Postings as Clean Rows

Ashby Jobs API — Job Board Postings as Clean Rows

Read any company's Ashby job board — title, location, department, employment type, remote flag and URL. No key required.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

alaudin burki

alaudin burki

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Security

Limited permissions

Share

Ashby hosts public job boards for the companies that recruit through it, and serves each board from a public JSON endpoint. This Actor reads one board by its organisation token and writes one row per posting — title, location, department, team, employment type, a remote flag, the advertised compensation summary and the application URL. No key, login or HTML parsing is involved.

The token is the last part of the board address: jobs.ashbyhq.com/openai belongs to the token openai. The Actor requests compensation with the board, so the pay summary is included whenever the employer publishes one.

How to use

  1. Open the company's Ashby board and copy the organisation name from its address.
  2. Paste it into Board token and set Max rows if 500 is more than you need.
  3. Run the Actor and export the dataset as JSON, CSV or Excel.

Inputs

FieldPurposeDefault
boardThe organisation token from the Ashby board address, e.g. jobs.ashbyhq.com/openai → openai. It is used in the request path.openai (prefilled)
maxItemsHard cap on rows written to the dataset. The run stops as soon as the cap is reached.500
maxPagesRequest cap. An Ashby board arrives in a single response, so the run makes one request and this setting has no practical effect here.5

maxItems is clamped to 20,000 per run. If board is left blank the default token openai is used, so the Actor runs with no configuration at all.

Output dataset

FieldMeaning
titleThe job title as the employer posted it.
locationThe posting's location as Ashby writes it, often a city and country, or Remote.
departmentThe department the employer filed the role under, in the employer's own words. Free text, and not normalised across companies.
teamThe team the role sits in, as the employer names it. Optional at the source and often absent, in which case the field is left out of the row.
employmentTypeThe employment type as posted, e.g. full-time or contract.
isRemotetrue when the posting is flagged as remote, false otherwise. A boolean, not a string.
compensationThe pay range as the employer states it, taken from the board's compensation tier summary. A free-text string carrying its own currency and period, not a pair of normalised numbers, and frequently absent.
urlThe public application URL for the posting (jobUrl).
publishedAtWhen the posting was published, as an ISO 8601 timestamp.

Every row also carries id (the Ashby posting id prefixed with the source, e.g. ashby:0f2c...), source (ashby-jobs), firstSeenAt and scrapedAt. Rows are de-duplicated on the posting id and sorted newest-published first, then by title, with the id as the final tie-break. A SUMMARY record in the run's key-value store reports rows, requests, duplicates, page problems and whether the dataset was truncated.

Example input

{
"board": "openai",
"maxItems": 500,
"maxPages": 5
}

Why this is different

  • Ashby Jobs API reads the board's public JSON endpoint and never scrapes the rendered career page.
  • Ashby Jobs API needs no key, account, cookie or login before its first run.
  • Ashby Jobs API requests compensation with the board, so the advertised pay summary appears in the row instead of being lost in a second call.
  • Ashby Jobs API returns isRemote as a real boolean, so it can be filtered without string matching.
  • Ashby Jobs API de-duplicates on the posting id and orders rows deterministically, so repeat runs over an unchanged board agree.
  • Ashby Jobs API stamps every row with firstSeenAt and scrapedAt, so a stale row is visible rather than assumed fresh.

Limitations

  • Only companies whose board is hosted by Ashby are covered, and the token must match the board exactly. A wrong or private token fails the run on the first request rather than returning an empty dataset.
  • department and team are free text written by each employer. The same function is called Engineering, Eng or R&D at different companies, and nothing here normalises that.
  • compensation is the board's tier summary string, not structured minimum, maximum and currency. It is left out of the row when the employer hides pay, which many do.
  • No job description, office list or posting expiry date is returned by this endpoint.
  • The board returns the postings the company currently lists. Withdrawn postings are not in the response, so the Actor cannot report them.
  • isRemote reflects the employer's own flag. A posting that says "remote" only in its description is not marked remote here.

FAQ

Do I need an Ashby API key?

No. The public posting endpoint is readable without authentication, and the Actor sends no key.

Where do I find the board token?

It is the organisation segment of the board address: jobs.ashbyhq.com/<token>. Companies that embed the board on their own site still use an Ashby token behind it.

Why is compensation sometimes missing?

Ashby only publishes a compensation summary when the employer fills one in. The Actor requests it and returns whatever comes back; it does not estimate a range from other fields.

Why does Max requests do nothing?

An Ashby board is returned in one response, so there is only one page to request. maxItems is the setting that limits the dataset.

Can I compare departments across companies?

Only loosely. Departments are the employers' own labels, so filter on the values you actually see rather than assuming a fixed vocabulary.

Pricing and limits

The price is shown on this Actor's Apify pricing panel, and charges follow the pricing model displayed there. The input caps describe how much data the Actor requests; they are not a price. One run reads one board in one request and writes at most maxItems rows. If the board holds more postings than you collected, raise maxItems and run again.