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/v1Authentication
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"Quickstart
- 1
Create an API key
Visit Settings → API Keys and clickCreate key. Copy the plaintext key immediately — you won't be able to see it again. - 2
Make your first request
Search for a company by name, industry, or funding amount.
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).
{
"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:
X-Credits-Cost: 1
X-Credits-Remaining: 1499
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1712345678Credits & 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.
| Action | Endpoint | Credits |
|---|---|---|
| Search | GET /companies · GET /investors | 1 |
| Premium search (tech/app stack) | GET /companies?techStack=… or appStack=… | 3 first page · 0 within session |
| Entity (slim) | GET /companies/:slug?depth=slim | 1 |
| Entity (standard) | GET /companies/:slug | 3 |
| Entity (full) | GET /companies/:slug?depth=full | 3 |
| Reveal (per entity) | POST /reveal | 3 |
| Usage check | GET /usage | free |
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:
| Shape | Returned when | Fields |
|---|---|---|
| { id, _masked: true } | Unrevealed — never seen by this key | Opaque ID only |
| { …fullCard, _revealed: true } | Revealed within 12 months | All 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:
| Value | Returns | Cost |
|---|---|---|
| all (default) | Mix of masked + revealed | 1 credit |
| revealed | Only entities you've revealed | 1 credit |
| unrevealed | Only masked entities | 1 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.
# 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:
| Plan | Rate limit | Max keys | Reveal batch | Reveal/hour |
|---|---|---|---|---|
| Gold | 60 req/min | 10 | 10 | 100 |
| Platinum | 180 req/min | 25 | 25 | 250 |
| Enterprise | Custom | Custom | 50 | 500 |
Every response includes rate-limit headers. When the limit is exceeded, you'll get a 429 with a Retry-After header.
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1712345678Errors
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.
{
"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" }
]
}| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_FAILED | Invalid query params or request body |
| 400 | BAD_REQUEST | Malformed JSON or missing required field |
| 400 | BATCH_SIZE_EXCEEDED | Reveal batch exceeds tier limit |
| 401 | AUTH_REQUIRED | Missing X-API-Key header |
| 401 | AUTH_INVALID | Key is invalid, revoked, or expired |
| 403 | TIER_UPGRADE_REQUIRED | API requires Gold plan or higher |
| 403 | NO_CREDITS | Tier has no credit allocation |
| 404 | NOT_FOUND | Entity not found |
| 429 | RATE_LIMITED | Per-minute rate limit exceeded |
| 429 | REVEAL_VELOCITY_EXCEEDED | Hourly reveal cap reached |
| 429 | CREDIT_LIMIT_REACHED | Monthly credits exhausted |
| 500 | INTERNAL_ERROR | Server error — please retry |
| 503 | SYSTEM_ERROR | Credit 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.
/companies1 creditList companies
Search and filter private companies by name, industry, geography, funding amount, and more.
Query parameters
qstring
Text search across name and description
industriesstring
Comma-separated industry slugs
countriesstring
Comma-separated HQ countries (e.g., "United States")
minFundinginteger
Minimum total funding raised (USD)
maxFundinginteger
Maximum total funding raised (USD)
operatingStatusstring
active, acquired, ipo, closed
techStackstring
Premium: comma-separated tech names (React, PostgreSQL, etc.). 3cr + 15min session.
appStackstring
Premium: comma-separated SaaS tools (Salesforce, Slack, etc.). 3cr + 15min session.
stackMatchstring
any (default, OR) or all (AND) — for tech/app stack
sortstring
total_funding (default), name, last_funding_date
reveal_statusstring
all (default), revealed, unrevealed
pageinteger
Page number, default 1
limitinteger
Results per page, max 100, default 25
curl "https://indexed.vc/api/v1/companies?q=fintech&minFunding=10000000&limit=10" \
-H "X-API-Key: idx_YOUR_KEY_HERE"/companies/:slug1 or 3 creditsGet a company
Retrieve a single company by slug. Use the depth param to control response size and cost.
Query parameters
depthstring
slim (1cr: identity only), standard (3cr, default: all profile fields + tech), full (3cr + funding + investors + app stack)
curl "https://indexed.vc/api/v1/companies/stripe?depth=full" \
-H "X-API-Key: idx_YOUR_KEY_HERE"/investors1 creditList investors
Search and filter investors — VCs, angels, PE firms, and more.
Query parameters
qstring
Text search across name
typesstring
vc, pe, angel, cvc, accelerator, family_office, etc.
stagesstring
Comma-separated stage preferences (seed, series_a, etc.)
countriesstring
Comma-separated HQ countries
minAuminteger
Minimum assets under management (USD)
sortstring
total_investments (default), name
reveal_statusstring
all (default), revealed, unrevealed
pageinteger
Page number, default 1
limitinteger
Results per page, max 100, default 25
curl "https://indexed.vc/api/v1/investors?types=vc&countries=United+States" \
-H "X-API-Key: idx_YOUR_KEY_HERE"/investors/:slug1 or 3 creditsGet an investor
Retrieve a single investor by slug. Depth controls whether portfolio companies are included.
Query parameters
depthstring
slim (1cr: identity only), standard (3cr, default: all profile fields), full (3cr + portfolio + investment history)
curl "https://indexed.vc/api/v1/investors/sequoia-capital?depth=full" \
-H "X-API-Key: idx_YOUR_KEY_HERE"/reveal3 per entityReveal 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_typestring · required
Either company or investor
idstring · optional
Single entity slug (shortcut for ids: ["…"])
idsstring[] · optional
Array of entity slugs. Batch limit: 10 (Gold), 25 (Platinum), 50 (Enterprise).
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:
{
"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.
/usagefreeCheck usage
Check your current credit balance, rate limit, reveal caps, and renewal date. This endpoint does not consume credits.
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.
{
"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