API Reference · v1

Indexed API

Programmatic access to 41,000+ private companies, 11,000+ investors, and comprehensive funding data. A REST API with predictable resource-oriented URLs, JSON-encoded responses, and standard HTTP codes.

https://indexed.vc/api/v1

Authentication

The Indexed API uses API keys for authentication. Pass your key in the X-API-Key header on every request. All requests must be made over HTTPS. Calls without authentication will fail.

API keys start with idx_. Keep keys secret: do not expose them in browser-side code, public repositories, or client bundles. If a key is compromised, revoke it immediately from your API keys dashboard.

curl https://indexed.vc/api/v1/companies?q=stripe \
  -H "X-API-Key: idx_YOUR_KEY_HERE"
API access is available on Gold plans and above. Free and Silver tiers can browse the product but do not receive API keys.

Quickstart

  1. 1

    Create an API key

    Visit Settings → API Keys and click Create key. Copy the plaintext key immediately — you won't be able to see it again.
  2. 2

    Make your first request

    Search for a company by name, industry, or funding amount.
bash
curl https://indexed.vc/api/v1/companies?q=stripe \
  -H "X-API-Key: idx_YOUR_KEY_HERE"

You'll get back a paginated list. By default, results are masked — unrevealed entities return only an opaque ID. Reveal them with POST /reveal (3 credits/entity).

json
{
  "data": [
    {
      "id": "c5f8-f9a4-…",
      "_masked": true
    },
    {
      "id": "a3b2-18c9-…",
      "name": "Mercury",
      "slug": "mercury",
      "website": "https://mercury.com",
      "short_description": "Banking for startups.",
      "industries": ["fintech", "banking"],
      "hq_country": "United States",
      "total_funding_raised": 152000000,
      "_revealed": true
    }
  ],
  "meta": {
    "total": 247, "page": 1, "limit": 25, "hasMore": true,
    "revealed_count": 1, "masked_count": 1
  }
}

Every response includes headers showing your credit balance:

http
X-Credits-Cost: 1
X-Credits-Remaining: 1499
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1712345678

Credits & pricing

Every API call costs credits from your monthly allocation. All tiers use one unified credit pool — the same credits that power profile views, exports, and tech stack reveals in the dashboard.

ActionEndpointCredits
SearchGET /companies · GET /investors1
Premium search (tech/app stack)GET /companies?techStack=… or appStack=…3 first page · 0 within session
Entity (slim)GET /companies/:slug?depth=slim1
Entity (standard)GET /companies/:slug3
Entity (full)GET /companies/:slug?depth=full3
Reveal (per entity)POST /reveal3
Usage checkGET /usagefree

Entity cache: re-fetching the same entity within 12 months is free. Any paid action on an entity (detail fetch, reveal, UI view) caches it for 12 months — including across endpoints. A company you revealed via POST /reveal will also show as _revealed in subsequent searches.

Out of credits? Enable overage at $0.065/credit in Settings, or buy a credit pack (500 credits for $25, up to 25% off at volume).

Masked results

Search endpoints return a mix of masked and revealed entities. This is how pricing works at scale: you pay to see each company or investor, and we don't charge you again for entities you've already unlocked.

Each result in the data array is one of two shapes:

ShapeReturned whenFields
{ id, _masked: true }Unrevealed — never seen by this keyOpaque ID only
{ …fullCard, _revealed: true }Revealed within 12 monthsAll card fields

The meta block on search responses includes revealed_count and masked_count for the current page, so you know how many new reveals you'd need to unlock everything.

Filter by reveal state with the reveal_status query param:

ValueReturnsCost
all (default)Mix of masked + revealed1 credit
revealedOnly entities you've revealed1 credit
unrevealedOnly masked entities1 credit

All values cost 1 credit because the search still hits the database and returns live data. If reveal_status=unrevealed returns zero results, meta includes all_revealed: true as a hint.

bash
# Only return entities you've already revealed (still 1 credit)
curl "https://indexed.vc/api/v1/companies?q=fintech&reveal_status=revealed" \
  -H "X-API-Key: idx_YOUR_KEY_HERE"

Rate limits

Rate limits are enforced per API key, sliding 60-second window. Limits vary by plan:

PlanRate limitMax keysReveal batchReveal/hour
Gold60 req/min1010100
Platinum180 req/min2525250
EnterpriseCustomCustom50500

Every response includes rate-limit headers. When the limit is exceeded, you'll get a 429 with a Retry-After header.

http
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1712345678

Errors

Errors return a flat JSON shape with a human-readable error message and a machine-readable code. Validation errors include a details array with field-level messages.

json
{
  "error": "Credits exhausted. Enable overage or purchase a credit pack.",
  "code": "CREDIT_LIMIT_REACHED"
}

// Validation errors include per-field details:
{
  "error": "Invalid query parameters",
  "code": "VALIDATION_FAILED",
  "details": [
    { "field": "limit", "message": "Number must be less than or equal to 100" }
  ]
}
StatusCodeMeaning
400VALIDATION_FAILEDInvalid query params or request body
400BAD_REQUESTMalformed JSON or missing required field
400BATCH_SIZE_EXCEEDEDReveal batch exceeds tier limit
401AUTH_REQUIREDMissing X-API-Key header
401AUTH_INVALIDKey is invalid, revoked, or expired
403TIER_UPGRADE_REQUIREDAPI requires Gold plan or higher
403NO_CREDITSTier has no credit allocation
404NOT_FOUNDEntity not found
429RATE_LIMITEDPer-minute rate limit exceeded
429REVEAL_VELOCITY_EXCEEDEDHourly reveal cap reached
429CREDIT_LIMIT_REACHEDMonthly credits exhausted
500INTERNAL_ERRORServer error — please retry
503SYSTEM_ERRORCredit system temporarily unavailable — retry

Endpoints

Six endpoints cover the core use cases: searching and fetching companies + investors, revealing masked entities, and a free usage check.

GET/companies1 credit

List companies

Search and filter private companies by name, industry, geography, funding amount, and more.

Query parameters

q

string

Text search across name and description

industries

string

Comma-separated industry slugs

countries

string

Comma-separated HQ countries (e.g., "United States")

minFunding

integer

Minimum total funding raised (USD)

maxFunding

integer

Maximum total funding raised (USD)

operatingStatus

string

active, acquired, ipo, closed

techStack

string

Premium: comma-separated tech names (React, PostgreSQL, etc.). 3cr + 15min session.

appStack

string

Premium: comma-separated SaaS tools (Salesforce, Slack, etc.). 3cr + 15min session.

stackMatch

string

any (default, OR) or all (AND) — for tech/app stack

sort

string

total_funding (default), name, last_funding_date

reveal_status

string

all (default), revealed, unrevealed

page

integer

Page number, default 1

limit

integer

Results per page, max 100, default 25

bash
curl "https://indexed.vc/api/v1/companies?q=fintech&minFunding=10000000&limit=10" \
  -H "X-API-Key: idx_YOUR_KEY_HERE"
GET/companies/:slug1 or 3 credits

Get a company

Retrieve a single company by slug. Use the depth param to control response size and cost.

Query parameters

depth

string

slim (1cr: identity only), standard (3cr, default: all profile fields + tech), full (3cr + funding + investors + app stack)

bash
curl "https://indexed.vc/api/v1/companies/stripe?depth=full" \
  -H "X-API-Key: idx_YOUR_KEY_HERE"
GET/investors1 credit

List investors

Search and filter investors — VCs, angels, PE firms, and more.

Query parameters

q

string

Text search across name

types

string

vc, pe, angel, cvc, accelerator, family_office, etc.

stages

string

Comma-separated stage preferences (seed, series_a, etc.)

countries

string

Comma-separated HQ countries

minAum

integer

Minimum assets under management (USD)

sort

string

total_investments (default), name

reveal_status

string

all (default), revealed, unrevealed

page

integer

Page number, default 1

limit

integer

Results per page, max 100, default 25

bash
curl "https://indexed.vc/api/v1/investors?types=vc&countries=United+States" \
  -H "X-API-Key: idx_YOUR_KEY_HERE"
GET/investors/:slug1 or 3 credits

Get an investor

Retrieve a single investor by slug. Depth controls whether portfolio companies are included.

Query parameters

depth

string

slim (1cr: identity only), standard (3cr, default: all profile fields), full (3cr + portfolio + investment history)

bash
curl "https://indexed.vc/api/v1/investors/sequoia-capital?depth=full" \
  -H "X-API-Key: idx_YOUR_KEY_HERE"
POST/reveal3 per entity

Reveal entities

Unmask one or more entities from search results. Previously-revealed entities are returned for free (cached for 12 months). Each successful reveal costs 3 credits.

Request body

entity_type

string · required

Either company or investor

id

string · optional

Single entity slug (shortcut for ids: ["…"])

ids

string[] · optional

Array of entity slugs. Batch limit: 10 (Gold), 25 (Platinum), 50 (Enterprise).

bash
curl -X POST "https://indexed.vc/api/v1/reveal" \
  -H "X-API-Key: idx_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{"entity_type":"company","ids":["stripe","mercury","openai"]}'

Response:

json
{
  "data": [
    { "id": "a1…", "entity_type": "company", "status": "revealed",
      "credits_charged": 3, "data": { "name": "Stripe", "slug": "stripe", … } },
    { "id": "b2…", "entity_type": "company", "status": "cached",
      "credits_charged": 0, "data": { "name": "Mercury", … } },
    { "id": "openai", "entity_type": "company", "status": "not_found",
      "credits_charged": 0 }
  ],
  "summary": {
    "total_requested": 3, "total_revealed": 1, "total_cached": 1,
    "total_failed": 1, "total_credits_charged": 3
  }
}

Per-entity status values: revealed (just paid, 3 credits), cached (free, within 12mo),insufficient_credits (credits ran out mid-batch), not_found (unknown slug, 0 credits).

Partial batches are supported: if you request 10 reveals but only have 6 credits, 2 entities will be revealed and 8 will return insufficient_credits.

GET/usagefree

Check usage

Check your current credit balance, rate limit, reveal caps, and renewal date. This endpoint does not consume credits.

bash
curl "https://indexed.vc/api/v1/usage" \
  -H "X-API-Key: idx_YOUR_KEY_HERE"

Pagination

List endpoints return paginated results. Use page and limit to navigate. Every list response includes a meta object with total, page, limit, and hasMore.

json
{
  "data": [ … ],
  "meta": {
    "total": 3124,
    "page": 1,
    "limit": 25,
    "hasMore": true
  }
}

Maximum page size is 100. To iterate through all results, increment page until hasMore is false.

Versioning

The API is currently at version v1. We commit to backwards compatibility within a major version: new optional parameters and response fields may be added, but existing fields and behaviors will not break.

Breaking changes ship under a new version path (e.g., /api/v2). We'll announce deprecation at least 6 months before removing a version.

Ready to build?

API access is included with Gold plans and above. Create a key and make your first request in under a minute.

Questions? hello@indexed.vc