Search companies

Search and filter companies. Every result is the full public card; _revealed marks entities whose depth (funding history, valuations, stacks) you have unlocked. Standard search is free within the daily quota; paid plans spend 1 credit per nonempty page afterward, while Free stops with SEARCH_QUOTA_EXCEEDED. Premium search (techStack/appStack filters) costs 3 credits on the first nonempty page; subsequent pages with a valid X-Search-Session token are free for 15 minutes. Empty data pages consume no delivered-search quota or credits even when meta.total is positive; an unpaid empty premium page does not issue a session token. Request-rate limits still apply.

get/companies

Request

Query parameters

qstring

Free text search query

industriesstring

Comma-separated industry filters. Accepts display labels (Fintech), case variants (fintech), or slugs (ai-ml). Use GET /industries for valid values.

countriesstring

Comma-separated country names (e.g., United States,United Kingdom)

citiesstring

Comma-separated headquarters city names, matched exactly as stored (e.g., San Francisco,South San Francisco). Combine with countries or states to rule out namesakes elsewhere.

statesstring

Comma-separated headquarters regions: the full first-level administrative division name for any country, as stored (e.g., Massachusetts,California, not MA,CA). Companies with no recorded region do not match.

employeesstring

Comma-separated employee ranges: 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+. Unsupported ranges return 400 VALIDATION_FAILED. URL-encode + as %2B.

operatingStatusstring

Comma-separated: active, acquired, ipo, closed, merged

minFundinginteger

Minimum total funding (total_funding_raised, grants included) in whole USD

maxFundinginteger

Maximum total funding (total_funding_raised, grants included) in whole USD

fundedAfterstring date

YYYY-MM-DD. Only companies whose latest funding round (last_funding_date) is on or after this date, inclusive. Companies with no recorded round do not match. Other date forms return 400 VALIDATION_FAILED.

fundedBeforestring date

YYYY-MM-DD. Only companies whose latest funding round (last_funding_date) is on or before this date, inclusive. Combine with fundedAfter for a window. Other date forms return 400 VALIDATION_FAILED.

domainstring

Match a company by its website domain (enrichment lookup, e.g. stripe.com). EXACT registrable-domain matching: matches mercury.com and any subdomain (www./app.mercury.com) but never superstrings like bluemercury.com. Accepts bare domains or full URLs.

minCompletenessinteger

Minimum data_completeness_score — skip thin records

updated_sincestring date-time

Incremental sync: only records modified at/after this ISO date or timestamp (updated_at watermark). Combine with cursor pagination for drift-free delta pulls.

techStackstring

Comma-separated technology names (triggers premium search: 3 credits)

appStackstring

Comma-separated app/tool names (triggers premium search: 3 credits)

stackMatch'any' | 'all'

Match mode for tech/app stack filters

sort'total_funding_raised' | 'name' | 'last_funding_date' | 'last_funding_amount' | 'founded_year' | 'data_completeness_score'
order'asc' | 'desc'
pageinteger
limitinteger

Results per page. Paid search supports up to 100; Free is capped at 10. meta.limit reports the effective page size after plan caps.

cursorstring

Paid plans only. Keyset cursor for sequential bulk pulls. Free keys use page=1 through page=3. Pass meta.next_cursor from the prior page; ignores page/sort.

reveal_status'all' | 'revealed' | 'unrevealed'

Filter results by reveal state

Headers

X-Search-Sessionstring

Session token for free premium search pagination (15-min TTL)

Response

Search results (full public cards with reveal flags)

coverage_requestedboolean

Present on a zero-result exact-domain lookup: true when durably queued for coverage, false when persistence failed and the client should retry later, or when the domain belongs to a company outside coverage scope. The lookup remains free.

coverage_status'queued' | 'not_queued' | 'pending_enrichment' | 'scope_review' | 'not_in_coverage_scope' | 'not_found'

Present on a zero-result exact-domain lookup, and on a zero-result name search (q without filters). For a name search it is pending_enrichment, scope_review or not_in_coverage_scope when we hold a company with exactly that name, otherwise not_found (name misses are reviewed as search demand; nothing is promised). For a domain lookup: queued: recorded for coverage review. not_queued: recording failed; retry later. pending_enrichment: we hold this company but its profile is not yet complete enough to serve. scope_review: we hold it and its fit with coverage scope is under review. not_in_coverage_scope: we hold it but it is outside coverage scope (for example a consultancy), so it will not be served and coverage_requested is false.

Example response

{
  "meta": {
    "investor_lookup": "/api/v1/investors?domain=joinef.com"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.