API reference / Companies
Get a company's open job postings
Written and maintained by The ProspectAPIs team
GET/v1/companies/:domain/jobs
GET /v1/companies/:domain/jobs is the ProspectAPIs operation getCompanyJobs, in the Companies group of the REST API. Costs $0.006 per lookup whose status is ok, never per posting; no_openings, no_board_found and a 503 are free. A company's open job postings, read from its own public job board (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee) found through its careers page, or the schema.org job postings on that page. A board guessed from the domain name is used only when a posting links back to the domain. Every opening carries source, ats {provider, board_slug}, fetched_at, first_seen_at and last_seen_at. Answers 503 temporarily_unavailable while GET /pricing shows hiring_tech not available. Cost: Launching soon. Send your API key as a Bearer token in the Authorization header.
How this fits with the rest of the companies API, with worked examples, is in the company profiles guide.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| domain required | path | string | The company's website domain, for example acme.com. |
| limit | query | integer | Openings to return. The price does not change with it. |
| max_age_hours | query | integer | Serve a stored read younger than this many hours; otherwise read live. |
| include_description | query | boolean | Add each posting's description as plain text (read live). |
An unknown query parameter is refused with a 400 rather than ignored, so a typo never widens a search you pay for.
Responses
| Status | Meaning |
|---|---|
| 200 | The lookup's answer, with its status. |
| 400 | The request was invalid (e.g. a bad filter or input); nothing was charged. |
| 401 | The API key is missing or invalid. |
| 402 | Out of credits. The body carries top_up_url; nothing was charged. |
| 429 | Too many requests; retry after the window. |
| 503 | The company's site, board or DNS could not be read right now. Nothing is returned and nothing is charged. Retry after Retry-After seconds. |
Every error answers with the same JSON body, an error string and sometimes a code; the errors page lists each status and when it happens. A per-key 429 carries Retry-After; see rate limits.
200 response fields
The lookup's answer, with its status. The body is a CompanyJobs.
| Field | Type | Description |
|---|---|---|
| data required | object | |
| data.domain | string | |
| data.company_id | string or null | |
| data.status | string: ok, no_openings, no_board_found | |
| data.ats | array of object | |
| data.openings | array of JobOpening | One open posting. A field the board does not state is null. |
| data.count | integer | |
| data.total | integer | |
| data.complete | boolean | |
| data.retrieved_at | string (date-time) | |
| charged_usd | number |
| Header | Meaning |
|---|---|
| X-Credits-Remaining | USD credits left after this call settles. |
| X-Free-Records-Remaining | Kept for older clients. Always 0 since 2026-10-25, when a one-time signup balance replaced the monthly free records. |
| RateLimit-Limit | Requests this API key may make per minute. |
| RateLimit-Remaining | Requests left in the current one-minute window. |
| RateLimit-Reset | Seconds until the current window resets. |
Code samples
Each sample sends the same request. Set PROSPECTAPIS_KEY in your environment first. Values come from the spec's examples; replace them with your own.
curl https://api.prospectapis.com/v1/companies/acme.com/jobs \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"const res = await fetch("https://api.prospectapis.com/v1/companies/acme.com/jobs", {
headers: { Authorization: `Bearer ${process.env.PROSPECTAPIS_KEY}` },
});
if (!res.ok) throw new Error(`${res.status}: ${(await res.json().catch(() => ({}))).error ?? res.statusText}`);
const data = await res.json();
console.log(data);import os, requests
res = requests.get(
"https://api.prospectapis.com/v1/companies/acme.com/jobs",
headers={"Authorization": f"Bearer {os.environ['PROSPECTAPIS_KEY']}"},
timeout=30,
)
res.raise_for_status()
data = res.json()
print(data)Billing
Billing reserves before it serves: the call holds what it may cost, serves at most what that hold covers, and refunds the rest when the response closes. Any non-2xx answer refunds the whole hold, so a failed call costs nothing. The response reports your balance in X-Credits-Remaining.
Related
The company profiles guide covers this area end to end. Previous operation: Get a company's funding rounds. Next operation: Get a company's technologies. Every operation, grouped by area, is on the API reference index.
Create a free account to get a key, then run the samples above with your own values.
Was this page helpful?