Companies

Search for a company by ID, name, or website, and store its id against your own records. Use that id in the Jobs API's employer_id filter to fetch all of that company's jobs.

No deduplication across boards
If the same real-world company is scraped from more than one job board, this API returns both rows separately rather than merging them — we intentionally don't guess which records represent the same company. If a search surfaces what looks like a duplicate, treat each id as its own independent record.
GET
https://api.cleanjobdata.com/companies?q=stripe
Search by name
GET
https://api.cleanjobdata.com/companies?website_url=stripe.com
Search by website domain
GET
https://api.cleanjobdata.com/companies/a1B2c3
Fetch a single company by ID

Query Parameters

employer_id, website_url, and q are mutually exclusive search modes, checked in this priority order. Omit all three to get a plain paginated listing of active companies instead.

employer_idstring
Look up one or more companies directly by ID. Comma-separated, up to 100. Ignores website_url and q if also present.
Example: a1B2c3, x9Y8z7
website_urlstring
Search by the company's website domain. Matches by registrable domain, so a bare domain or full URL both work.
Example: stripe.com
qstring
Search by company name (fuzzy match, ranked by relevance).
Example: stripe
activeboolean
Always true for authed API users: only companies with at least one active job are returned. (Internal-only: can be set to false to include inactive/dormant companies.)
Example: true
limitnumber
Results per request. Max 100 when searching (employer_id/website_url/q), max 2000 for the plain listing. Default 20 when searching, 500 for the plain listing.
Example: 20
offsetnumber
Skip N rows. Default 0.
Example: 0

Response Schema

Search and listing requests return data (an array of companies) and pagination.

Search Response Example
{
"data": [
{6 keys}
],
"pagination": {
"limit": 20,
"offset": 0,
"total": 1,
"has_more": false
}
}
idstring
Obfuscated company ID. Pass this to employer_id on this endpoint or the Jobs API.
display_namestring
The company's name.
website_urlstringNullable
The company's own website, when known.
logo_urlstringNullable
URL to the company's logo, when one could be resolved from its website.
last_job_countnumber
Number of active jobs currently indexed for this company.
last_scraped_atstringNullable
ISO 8601 timestamp of the last successful scrape of this company's job board.
Fields not included for authed API users
board_type and board_identifier (which ATS platform and board slug a company uses) are internal fields used for scraping — they are never returned to authed (non-internal) API callers.

Get a Single Company

GET /companies/:id returns one company by ID, including website_enrichment (description, industry, logo, employee count, and other profile data gathered from the company's own site).

Detail Response Example
{
"id": "a1B2c3",
"display_name": "Stripe",
"website_url": "https://stripe.com",
"logo_url": "https://stripe.com/favicon.ico",
"last_job_count": 42,
"last_scraped_at": "2026-07-19T12:00:00.000Z",
"website_enrichment": {
"description": "Stripe is a financial infrastructure platform for businesses.",
"industry": "Fintech",
"employee_count": "5001-10000",
"logoUrl": "https://logo.clearbit.com/stripe.com"
}
}

A malformed :id returns a 400: { "error": "Invalid company ID" }

An :id that doesn't exist (or isn't visible to your key) returns a 404: { "error": "Company not found" }

See the Errors reference for the shared error envelope shape, rate limits, and 500s.

Interactive Testing
To see live data without writing code, use our Live API Playground.