Indexed Enrich API
The Enrich API from Indexed — 1 operation(s) for enrich.
The Enrich API from Indexed — 1 operation(s) for enrich.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/indexed-vc:indexed-vc-enrich-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Indexed.vc Enrich API
version: 1.0.0
description: 'Company intelligence API providing comprehensive data on private companies,
funding history, and investor relationships.'
contact:
name: Indexed.vc Support
url: https://indexed.vc
license:
name: Proprietary
servers:
- url: https://indexed.vc/api/v1
description: Production
security:
- ApiKeyAuth: []
tags:
- name: Enrich
paths:
/enrich:
post:
operationId: enrichCompanies
summary: Bulk enrich companies by domain or slug
description: 'The GTM/RevOps query: submit a list of domains (or slugs) and get the
matched company records back. Domain matching is EXACT
registrable-domain (mercury.com matches Mercury at mercury.com or any
of its subdomains — never superstrings like bluemercury.com); you are
never billed for a fuzzy match. Billed like /reveal — 3 credits per
newly revealed match; previously-revealed matches are free within the
12-month cache. Unmatched inputs return status "not_found" (no charge).
Multiple inputs resolving to the same company are billed once; only the first
such input carries the charge. Ambiguous domains return 409 AMBIGUOUS_DOMAIN
without billing; retry with verified company slugs.
Host precedence matches /companies/lookup: the exact current website wins
over subsidiaries or former websites; conflicting current owners still fail closed.
A lookup-card match must also be eligible for full public company data.
Delivered domain matches include domain_match explaining the matched host and evidence.
Misses carry coverage_status (not_in_coverage_scope, scope_review,
pending_enrichment, not_found, or invalid_domain for malformed input that was never searched). A miss does not enqueue research.
Batch size and hourly limits follow your tier''s reveal limits.'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
domains:
type: array
items:
type: string
description: Company website domains, e.g. ["stripe.com", "openai.com"]
slugs:
type: array
items:
type: string
description: Indexed company slugs
responses:
'200':
description: Enrich results (normalized unique domains first, then unique slugs, in first-seen order within each group) + summary
headers:
X-Request-Id:
schema:
type: string
format: uuid
content:
application/json:
schema:
type: object
required:
- data
- summary
properties:
data:
type: array
items:
type: object
required:
- query
- matched
- status
- credits_charged
properties:
query:
type: string
matched:
type: boolean
status:
type: string
enum:
- revealed
- cached
- insufficient_credits
- not_found
credits_charged:
type: integer
domain_match:
$ref: '#/components/schemas/DomainMatch'
coverage_status:
type: string
enum:
- not_in_coverage_scope
- scope_review
- pending_enrichment
- not_found
- invalid_domain
description: Explanation for unmatched inputs; does not promise admission or an enrichment timeline.
data:
$ref: '#/components/schemas/CompanyProfile'
summary:
$ref: '#/components/schemas/EnrichSummary'
'400':
$ref: '#/components/responses/ValidationError'
'401':
$ref: '#/components/responses/AuthError'
'402':
$ref: '#/components/responses/PaymentRequired'
'409':
description: Domain matches multiple companies (AMBIGUOUS_DOMAIN); no charge.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
'429':
$ref: '#/components/responses/RateLimited'
tags:
- Enrich
components:
responses:
ServiceUnavailable:
description: Data or credit service unavailable; retry later.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
ValidationError:
description: Invalid request parameters
headers:
X-Request-Id:
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
AuthError:
description: Missing, invalid, or insufficient API key
headers:
X-Request-Id:
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
RateLimited:
description: Rate limit exceeded (code RATE_LIMITED). Back off and retry after Retry-After.
headers:
X-Request-Id:
schema:
type: string
format: uuid
X-RateLimit-Limit:
schema:
type: integer
X-RateLimit-Remaining:
schema:
type: integer
Retry-After:
schema:
type: integer
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
PaymentRequired:
description: 'Credits exhausted, no active credit period, or overage cap reached (code CREDIT_LIMIT_REACHED). This is a billing state, not a rate limit — do not retry. Follow top_up_url to repurchase the returned top_up_pack.
'
headers:
X-Request-Id:
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
schemas:
DomainMatch:
type: object
required:
- queried
- canonical_domain
- matched_via
properties:
queried:
type: string
description: Canonicalized domain supplied by the caller
canonical_domain:
type:
- string
- 'null'
description: Current website host on the matched company
matched_via:
type: string
enum:
- canonical_domain
- alias_domain
- former_website
ApiError:
type: object
required:
- error
- code
properties:
error:
type: string
description: Human-readable error message
code:
type: string
description: Machine-readable error code
reason:
type: string
enum:
- credits_exhausted
- overage_cap_reached
- no_active_period
remaining:
type: integer
minimum: 0
top_up_url:
type: string
format: uri
top_up_pack:
type: object
properties:
id:
type: string
example: pack_5k
credits:
type: integer
example: 5000
price_cents:
type: integer
example: 20000
request_id:
type: string
format: uuid
description: Correlation ID (also in X-Request-Id header)
details:
type: array
description: Present for validation errors
items:
type: object
properties:
field:
type: string
message:
type: string
EnrichSummary:
type: object
required:
- total_requested
- total_matched
- total_revealed
- total_cached
- total_unmatched
- total_credits_charged
properties:
total_requested:
type: integer
minimum: 0
description: Number of unique normalized inputs.
total_matched:
type: integer
minimum: 0
description: Number of distinct matched companies; multiple inputs can match one company.
total_revealed:
type: integer
minimum: 0
total_cached:
type: integer
minimum: 0
total_unmatched:
type: integer
minimum: 0
description: Number of unmatched unique inputs
including malformed domains.: null
total_credits_charged:
type: integer
minimum: 0
CompanyRelationship:
type: object
properties:
relationship_type:
type: string
enum:
- subsidiary
- brand
- division
- joint_venture
ownership_pct:
type:
- number
- 'null'
description: Stated ownership percentage when a source gives it
started_on:
type:
- string
- 'null'
format: date
company:
type: object
properties:
id:
type: string
format: uuid
slug:
type: string
name:
type: string
logo_url:
type:
- string
- 'null'
CompanyProfile:
type: object
required:
- id
- name
- slug
description: Shape varies by depth parameter (slim/standard/full)
properties:
id:
type: string
format: uuid
name:
type: string
slug:
type: string
data_as_of:
type:
- string
- 'null'
format: date-time
description: Last verified enrichment timestamp; null when unknown.
logo_url:
type:
- string
- 'null'
website:
type:
- string
- 'null'
short_description:
type:
- string
- 'null'
long_description:
type:
- string
- 'null'
industries:
type:
- array
- 'null'
items:
type: string
hq_city:
type:
- string
- 'null'
hq_state:
type:
- string
- 'null'
hq_country:
type:
- string
- 'null'
employee_count_range:
type:
- string
- 'null'
total_funding_raised:
type:
- integer
- 'null'
description: 'Whole USD. Sum of disclosed itemized funding rounds at confidence 50+: equity rounds, notes, SAFEs, equity crowdfunding and grants. Grants are included; debt, IPOs, acquisitions and secondaries are not. Null when no counted round has a disclosed amount.'
operating_status:
type:
- string
- 'null'
founded_year:
type:
- integer
- 'null'
last_valuation:
type:
- integer
- 'null'
description: Null at slim/standard depth or when undisclosed.
last_valuation_date:
type:
- string
- 'null'
format: date
description: Null at slim/standard depth or when unknown.
owners:
type: array
description: 'depth=standard and full. Companies that own this one, from reviewed, sourced relationships: its controlling parent (subsidiary, brand or division), or its joint-venture owners. Empty when none is recorded.'
items:
$ref: '#/components/schemas/CompanyRelationship'
subsidiaries:
type: array
description: depth=standard and full. Companies this one owns (subsidiaries, brands, divisions, joint ventures), up to 200, by name.
items:
$ref: '#/components/schemas/CompanyRelationship'
valuation_events:
type: array
description: Only present at depth=full
items:
type: object
properties:
id:
type: string
format: uuid
event_type:
type: string
amount_raised_usd:
type:
- integer
- 'null'
announced_date:
type:
- string
- 'null'
format: date
participants:
type: array
items:
type: object
properties:
is_lead:
type: boolean
investor:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
slug:
type: string
investor_type:
type:
- string
- 'null'
technologies:
type: array
description: Only present at depth=full
items:
type: object
properties:
technology_name:
type: string
category:
type:
- string
- 'null'
stack_type:
type: string
const: tech
app_stack:
type: array
description: Only present at depth=full
items:
type: object
properties:
technology_name:
type: string
category:
type:
- string
- 'null'
stack_type:
type: string
const: app
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key in format `idx_<32chars>`. Available on every plan; entity detail and reveal spend credits on every plan, while bulk enrichment, webhooks, scheduled exports and listing/sorting require a paid plan (Silver+).
x-provenance:
method: harvested
publisher: Indexed
source: https://indexed.vc/openapi.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)