TidyTools

Company career-site jobs

POST https://tools.yukai.uk/api/v1/jobs

Get a company's open jobs. Finds the company's job board (links and embeds on its site, its careers page, then verified name guesses) and returns its jobs, filtered and normalized. Per-job descriptions are fetched only for the jobs returned. hasMore tells you when more jobs match than limit; notes explain partial scans of very large boards.

Cost

Credits: 18 + 9 per job ($0.0018 + $0.0009 per job). 198 credits are reserved before the call; the call is then settled on the real number of items returned. Failed calls are free. Source price: ats-career-site-jobs/company-detected + ats-career-site-jobs/job.

Input

Send a JSON body (POST) or the same fields as a query string (GET).

Required: company.

FieldTypeDefaultDescription
company requiredstringThe company: its website or careers page (stripe.com, https://careers.airbnb.com), an ATS job board URL (https://jobs.lever.co/leverdemo, https://job-boards.greenhouse.io/airbnb, a Workday site) or ats:slug (greenhouse:airbnb, lever:leverdemo, ashby:notion). Aliases: url, domain, board.
keywordstringTitle keywords, comma-separated (any of). Short words (US, QA) match whole words.
excludeKeywordstringDrop jobs whose title contains any of these comma-separated words.
locationstringLocation words, comma-separated (any of), matched against city, region, country and workplace type.
departmentstringDepartment or team words, comma-separated (any of).
remotebooleanfalseOnly remote jobs.
postedWithinDaysinteger0Only jobs posted in the last N days (0 = any).
descriptionstring"none"Include the job description as plain text, HTML or both.
limitinteger50Maximum jobs returned (at most 50 with descriptions).
guessBoardbooleantrueWhen the website links no job board, try boards named after the domain (used only when the company name or website matches).

Examples

Replace tt_live_XXXX with your key from the pricing page.

curl

curl -i -X POST "https://tools.yukai.uk/api/v1/jobs" \
  -H "Authorization: Bearer tt_live_XXXX" \
  -H "Content-Type: application/json" \
  -d '{"company":"greenhouse:airbnb"}'

JavaScript (fetch)

const res = await fetch("https://tools.yukai.uk/api/v1/jobs", {
  method: "POST",
  headers: { "Authorization": "Bearer tt_live_XXXX", "Content-Type": "application/json" },
  body: JSON.stringify({"company":"greenhouse:airbnb"}),
});
console.log(res.status, res.headers.get("x-credits-charged"), res.headers.get("x-credits-balance"));
console.log(await res.json());

Python (requests)

import requests

r = requests.post(
    "https://tools.yukai.uk/api/v1/jobs",
    headers={"Authorization": "Bearer tt_live_XXXX"},
    json={"company": "greenhouse:airbnb"},
    timeout=120,
)
print(r.status_code, r.headers.get("x-credits-charged"), r.headers.get("x-credits-balance"))
print(r.json())

Response

JSON with "success": true and the result fields; on failure {"success": false, "error": {"code", "message", "retryable"}} and no credits are used. Every answer carries x-credits-charged (credits used) and x-credits-balance (balance after the call); check the balance any time with GET https://tools.yukai.uk/v1/billing/balance.

Full field list and response schema: OpenAPI spec company-jobs (its servers entry is the marketplace gateway; call https://tools.yukai.uk with your key).

← All routes · Pricing