API reference
Company profiles
Written and maintained by The ProspectAPIs team
The company profiles API returns one cited record per domain: what the company does, its headquarters, founding year, industry, employee band, social links, a rollup of the funding we hold for it, and a careers link. Every field carries the source it was read from and whether a page states it or we inferred it; a field no source supports is null, never guessed.
$0.02
per company returned
free
while a profile is building (202)
free
when a domain does not resolve (404)
GET /v1/companies/:domain
One company by domain. When the record is ready the API answers 200 with { "data": { ... } } and bills $0.02. A domain we have not built yet answers 202 with { "status": "building", "retry_after": 30 } and is not billed; build it, then retry. A domain that does not resolve to a company answers 404, also free.
curl https://api.prospectapis.com/v1/companies/acme.com \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"{
"data": {
"company_id": "c3f1...",
"domain": "acme.com",
"name": "Acme Robotics",
"description": { "value": "Warehouse picking robots for 3PLs", "source": 1, "basis": "stated" },
"hq": { "value": { "country": "US", "region": "CA", "city": "Oakland" }, "source": 2, "basis": "stated" },
"founded_year": { "value": 2021, "source": 2, "basis": "stated" },
"industry": { "value": { "label": "Hardware & IoT", "sector": "hardware_iot", "naics_sector": "33", "method": "keyword" }, "source": 1, "basis": "inferred" },
"employee_band": { "value": "11-50", "source": 3, "basis": "stated" },
"social": { "value": { "x": "https://x.com/acme", "linkedin": "https://www.linkedin.com/company/acme" }, "source": 1, "basis": "stated" },
"funding": { "raised_in_rounds_we_hold_usd": 12000000, "rounds_count": 2 },
"hiring": null,
"sources": [
{ "id": 1, "url": "https://acme.com/", "kind": "site", "retrieved_at": "2026-10-31T09:12:00Z" },
{ "id": 2, "url": "https://acme.com/about", "kind": "site", "retrieved_at": "2026-10-31T09:12:04Z" },
{ "id": 3, "url": "https://acme.com/careers", "kind": "site", "retrieved_at": "2026-10-31T09:12:07Z" }
],
"retrieved_at": "2026-10-31T09:12:09Z",
"updated_at": "2026-10-31T09:12:09Z"
}
}The example shows a fictional company. A field no source supports is null; `hiring` above is one such field.
GET /v1/companies/:domain/funding
The funding rounds for one domain, newest first: the same records as GET /v1/funding filtered to this company. It takes the same since, until, round, min_amount_usd, max_amount_usd, limit and cursor parameters, costs $0.009 per record returned, and a company with no rounds is free.
curl https://api.prospectapis.com/v1/companies/acme.com/funding \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"Hiring and tech stack
Two reads on the same domain and company_id key: the company's open job postings, and the technologies its website and DNS show it uses. Both are read live when the stored read is older than max_age_hours, and every record says where it came from and when we fetched it. Launching soon: both answer 503 until GET /pricing shows hiring_tech available, and nothing is charged.
GET /v1/companies/:domain/jobs
Open postings read from the company's own public job board (Greenhouse, Lever, Ashby, Workable, SmartRecruiters or Recruitee) found through its careers page, or the job postings marked up on that page. status is ok, no_openings (a board was found and it is empty) or no_board_found (no public board was linked from the site, which does not mean the company is not hiring). A board guessed from the domain name is used only when one of its postings links back to the domain. Parameters: limit (1 to 500, default 100), max_age_hours (1 to 168, default 12), include_description (true adds each description as plain text).
curl "https://api.prospectapis.com/v1/companies/acme.com/jobs?limit=50" \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"{
"data": {
"domain": "acme.com",
"company_id": "c3f1...",
"status": "ok",
"ats": [{ "provider": "greenhouse", "board_slug": "acme", "url": "https://boards-api.greenhouse.io/v1/boards/acme/jobs", "resolution": "site_link" }],
"openings": [{
"id": "greenhouse.acme.4012345",
"title": "Senior Backend Engineer",
"department": "Engineering",
"location": "Remote, US",
"remote": true,
"employment_type": null,
"seniority": "senior",
"salary": null,
"posted_at": "2026-10-28T14:00:00.000Z",
"url": "https://job-boards.greenhouse.io/acme/jobs/4012345",
"source": { "provider": "greenhouse", "url": "https://boards-api.greenhouse.io/v1/boards/acme/jobs" },
"ats": { "provider": "greenhouse", "board_slug": "acme" },
"fetched_at": "2026-11-03T10:00:00.000Z",
"first_seen_at": "2026-11-01T09:00:00.000Z",
"last_seen_at": "2026-11-03T10:00:00.000Z"
}],
"count": 1,
"total": 1,
"complete": true,
"retrieved_at": "2026-11-03T10:00:00.000Z"
},
"charged_usd": 0.006
}A field the board does not state is null. seniority is inferred from the title and remote, when the board has no remote flag, from the location text. first_seen_at and last_seen_at are our own observation times; a posting that leaves the board leaves the answer.
GET /v1/companies/:domain/technologies
The technologies the homepage, the careers page and the domain's DNS records show: analytics, tag managers, marketing automation, CRM, chat and support, payments, commerce, CMS, front-end frameworks, hosting and CDN, email and productivity suites, security, consent, scheduling, monitoring and the applicant tracking system. Each one lists its evidence: the script, link, header, cookie name, meta generator or DNS record (TXT, MX, CNAME) that matched, and the page or record it was seen on. status is ok or none_detected (nothing matched; not proof the company uses nothing). Parameter: max_age_hours (1 to 720, default 72).
curl https://api.prospectapis.com/v1/companies/acme.com/technologies \
-H "Authorization: Bearer $PROSPECTAPIS_KEY"{
"data": {
"domain": "acme.com",
"company_id": "c3f1...",
"status": "ok",
"technologies": [{
"slug": "hubspot",
"name": "HubSpot",
"category": "marketing_automation",
"evidence": [{ "kind": "script_src", "match": "https://js.hs-scripts.com/123.js", "source": "https://acme.com/" }],
"source": { "kind": "page", "url": "https://acme.com/" },
"fetched_at": "2026-11-03T10:00:00.000Z",
"first_seen_at": "2026-10-20T08:00:00.000Z",
"last_seen_at": "2026-11-03T10:00:00.000Z"
}],
"count": 1,
"sources": [{ "kind": "page", "url": "https://acme.com/" }, { "kind": "dns", "url": "dns:acme.com" }],
"partial": false,
"retrieved_at": "2026-11-03T10:00:00.000Z"
},
"charged_usd": 0.006
}When the site and its board cannot be read the API answers 503 with SOURCE_UNAVAILABLE and a reason, and nothing is charged. The examples show a fictional company.
Record fields
| Field | Meaning |
|---|---|
| company_id | A stable id for the company (uuid). |
| domain | The company's domain, lower-case. |
| name | The company name. |
| description | What the company does, from its own pages. |
| hq | Headquarters country, region and city. |
| founded_year | The year it was founded. |
| industry | Industry label and code. Marked inferred when we classified it from the pages, never presented as the company's own statement. |
| employee_band | Headcount band where a source states it. An open-role count from careers is a hiring signal, labelled as such, never headcount. |
| social | Social links (x, linkedin) resolved from the company's own site, never guessed from the name. |
| funding | A rollup of the funding rounds we hold for this domain: the amount raised across those rounds (raised_in_rounds_we_hold_usd, which is what we hold, not lifetime total raised), the rounds count, and the last round. Use GET /v1/companies/:domain/funding for the rows. |
| hiring | A careers URL and any hiring signal. |
| sources | Every source the fields cite: id, url, kind and when it was retrieved. |
Every field has a source
Each profile field is { value, source, basis }. source indexes into the record's sources array, so you can cite exactly where a value came from. basis is stated when a page states the value or inferred when we classified it from the pages, so you can filter to stated values only. We never back-fill a missing field with a guess.
Billing
A 200 holds and bills one company ($0.02). A 202 building response and a 404 unknown domain take no hold and cost nothing. When you cannot pay for a company the API answers 402 with a top_up_url. The X-Credits-Remaining header shows the balance after each call.
Next steps
Create a free account to get a key; every account starts with a free $1 balance. The quickstart covers authentication and errors, funding signals is the rounds feed this record rolls up, and pricing lists what each call costs. Our guides to researching prospects with an AI agent and funding signals for prospecting show where a cited company record fits a sales workflow.
Was this page helpful?