openapi: 3.0.3
info:
title: Crunchbase Data API v4
description: >-
The Crunchbase Data API (REST v4) provides programmatic access to
Crunchbase's graph of company, funding, investor, and people data -
organizations, people, funding rounds, acquisitions, investments, events,
and more. It is a read-only RESTful service with four logical surfaces:
Entity Lookup (retrieve a single entity and its related "cards"), Search
(query a collection with field filters and keyset pagination), Autocomplete
(resolve a query string to entity identifiers), and Deleted Entities /
Deltas (detect entities removed from the Crunchbase Graph so downstream
databases can be reconciled). Access is subscription-gated: the full API
requires a Crunchbase Enterprise or Applications license, while a reduced
Basic API is available to Crunchbase Basic plan holders. All requests must
be made over HTTPS (non-HTTPS calls return 426) and are authenticated with
an API key passed either as the `user_key` query parameter or the
`X-cb-user-key` header.
Endpoint paths, HTTP methods, authentication, and rate limits below are
grounded in the public Crunchbase developer documentation
(data.crunchbase.com/docs). Because live responses are license-gated,
request and response object schemas are honestly modeled from the
documentation rather than captured from live calls; see x-endpoints-modeled.
version: '4.0'
contact:
name: Crunchbase
url: https://about.crunchbase.com/products/crunchbase-api/
x-endpoints-modeled: >-
Endpoint paths, methods, auth, and rate limits are confirmed from public
docs. Detailed field-level request/response schemas are modeled from the
documentation because live API responses require a paid Enterprise or
Applications license.
servers:
- url: https://api.crunchbase.com/v4/data
description: Crunchbase Data API v4 (production)
security:
- userKeyQuery: []
- userKeyHeader: []
tags:
- name: Entity Lookup
description: Retrieve a single entity (and its related cards) by UUID or permalink.
- name: Search
description: Query a collection with field filters and keyset pagination.
- name: Autocomplete
description: Resolve a query string to matching entity identifiers.
- name: Deleted Entities
description: Detect entities removed from the Crunchbase Graph (deltas).
paths:
/entities/{collection}/{entity_id}:
parameters:
- $ref: '#/components/parameters/Collection'
- $ref: '#/components/parameters/EntityId'
get:
operationId: getEntity
tags:
- Entity Lookup
summary: Look up an entity
description: >-
Retrieves a single entity from a core collection (organizations,
people, funding_rounds, acquisitions, and others) by its UUID or
permalink. Use field_ids to select fields and card_ids to include
related cards (each card returns at most 100 items).
parameters:
- name: field_ids
in: query
required: false
description: Comma-separated list of field ids to return for the entity.
schema:
type: string
- name: card_ids
in: query
required: false
description: >-
Comma-separated list of related card ids to include. Each card
returns a maximum of 100 items; use the card endpoint for more.
schema:
type: string
responses:
'200':
description: The requested entity with the selected fields and cards.
content:
application/json:
schema:
$ref: '#/components/schemas/EntityResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'426':
$ref: '#/components/responses/UpgradeRequired'
'429':
$ref: '#/components/responses/TooManyRequests'
/entities/{collection}/{entity_id}/cards/{card_id}:
parameters:
- $ref: '#/components/parameters/Collection'
- $ref: '#/components/parameters/EntityId'
- name: card_id
in: path
required: true
description: The id of the related card to page through (e.g. raised_funding_rounds, investors).
schema:
type: string
get:
operationId: getEntityCard
tags:
- Entity Lookup
summary: Page an entity card
description: >-
Retrieves a single related card for an entity with full pagination,
used when a card holds more than the 100 items returned inline by the
entity lookup endpoint.
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/AfterId'
- $ref: '#/components/parameters/BeforeId'
responses:
'200':
description: A page of card items for the entity.
content:
application/json:
schema:
$ref: '#/components/schemas/CardResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
/searches/{collection}:
parameters:
- $ref: '#/components/parameters/Collection'
post:
operationId: searchCollection
tags:
- Search
summary: Search a collection
description: >-
Searches a collection (organizations, people, funding_rounds,
acquisitions, and others) using a JSON body of field_ids to return and
an array of query filters combined with AND logic. Returns 50 items by
default and up to 1000 per request, with keyset pagination via after_id
or before_id.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchRequest'
responses:
'200':
description: The matching entities for the search query.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'426':
$ref: '#/components/responses/UpgradeRequired'
'429':
$ref: '#/components/responses/TooManyRequests'
/autocompletes:
get:
operationId: autocomplete
tags:
- Autocomplete
summary: Autocomplete entities
description: >-
Suggests matching entities for a query string, optionally scoped to one
or more collections (e.g. organization.companies, principal.investors,
categories). Commonly used to resolve UUIDs or permalinks for downstream
Search or Entity Lookup calls.
parameters:
- name: query
in: query
required: true
description: The search string to autocomplete.
schema:
type: string
- name: collection_ids
in: query
required: false
description: >-
Comma-separated list of collection ids to scope suggestions to
(e.g. organization.companies, principal.investors, categories).
schema:
type: string
- name: limit
in: query
required: false
description: Number of results to return (maximum 25).
schema:
type: integer
default: 10
maximum: 25
responses:
'200':
description: A list of suggested entity identifiers.
content:
application/json:
schema:
$ref: '#/components/schemas/AutocompleteResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/deleted_entities:
get:
operationId: listDeletedEntities
tags:
- Deleted Entities
summary: List deleted entities
description: >-
Returns entities removed from the Crunchbase Graph (for example due to
compliance, data-quality cleanup, or inappropriate content) so that
consumers can detect deletions and reconcile their own databases. Scope
to specific collections with collection_ids, sort with
deleted_at_order, and page with after_id or before_id.
parameters:
- name: collection_ids
in: query
required: false
description: Comma-separated list of collection ids to filter by (e.g. organizations, people, funding_rounds, events).
schema:
type: string
- name: deleted_at_order
in: query
required: false
description: Sort order for the deleted_at timestamp.
schema:
type: string
enum:
- asc
- desc
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/AfterId'
- $ref: '#/components/parameters/BeforeId'
responses:
'200':
description: A page of deleted entity records.
content:
application/json:
schema:
$ref: '#/components/schemas/DeletedEntitiesResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
/deleted_entities/{collection_id}:
parameters:
- name: collection_id
in: path
required: true
description: The collection id to scope deleted entities to (e.g. organizations, people, funding_rounds, events).
schema:
type: string
get:
operationId: listDeletedEntitiesForCollection
tags:
- Deleted Entities
summary: List deleted entities for a collection
description: >-
Returns entities removed from a single collection in the Crunchbase
Graph, with the same ordering and keyset pagination as the general
deleted-entities endpoint.
parameters:
- name: deleted_at_order
in: query
required: false
schema:
type: string
enum:
- asc
- desc
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/AfterId'
- $ref: '#/components/parameters/BeforeId'
responses:
'200':
description: A page of deleted entity records for the collection.
content:
application/json:
schema:
$ref: '#/components/schemas/DeletedEntitiesResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
securitySchemes:
userKeyQuery:
type: apiKey
in: query
name: user_key
description: API key passed as the user_key query parameter.
userKeyHeader:
type: apiKey
in: header
name: X-cb-user-key
description: API key passed as the X-cb-user-key request header.
parameters:
Collection:
name: collection
in: path
required: true
description: The core entity collection (e.g. organizations, people, funding_rounds, acquisitions).
schema:
type: string
example: organizations
EntityId:
name: entity_id
in: path
required: true
description: The entity UUID or permalink (e.g. tesla-motors).
schema:
type: string
Limit:
name: limit
in: query
required: false
description: Number of items to return per page.
schema:
type: integer
AfterId:
name: after_id
in: query
required: false
description: Keyset cursor - return items after this entity id.
schema:
type: string
BeforeId:
name: before_id
in: query
required: false
description: Keyset cursor - return items before this entity id.
schema:
type: string
responses:
BadRequest:
description: The request body or query was invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Missing, invalid, or unlicensed API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested entity was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
UpgradeRequired:
description: HTTPS is required, or the endpoint requires a higher license tier.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
TooManyRequests:
description: Rate limit exceeded (200 calls per minute).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
error:
type: string
code:
type: integer
message:
type: string
Identifier:
type: object
description: A lightweight reference to a Crunchbase entity.
properties:
uuid:
type: string
format: uuid
value:
type: string
description: Human-readable name of the entity.
permalink:
type: string
entity_def_id:
type: string
description: The collection/entity type (e.g. organization, person, funding_round).
image_id:
type: string
EntityResponse:
type: object
properties:
properties:
type: object
description: The selected field_ids and their values for the entity.
additionalProperties: true
cards:
type: object
description: Related card collections requested via card_ids.
additionalProperties: true
CardResponse:
type: object
properties:
entities:
type: array
items:
type: object
additionalProperties: true
count:
type: integer
SearchRequest:
type: object
required:
- field_ids
- query
properties:
field_ids:
type: array
description: The fields to return for each matching entity.
items:
type: string
query:
type: array
description: Filter predicates combined with AND logic.
items:
$ref: '#/components/schemas/QueryPredicate'
order:
type: array
items:
type: object
properties:
field_id:
type: string
sort:
type: string
enum:
- asc
- desc
limit:
type: integer
description: Items to return (default 50, maximum 1000).
default: 50
maximum: 1000
after_id:
type: string
before_id:
type: string
QueryPredicate:
type: object
required:
- type
- field_id
- operator_id
- values
properties:
type:
type: string
example: predicate
field_id:
type: string
example: categories
operator_id:
type: string
description: Comparison operator (e.g. includes, eq, gte, lte, between, contains).
example: includes
values:
type: array
items: {}
SearchResponse:
type: object
properties:
count:
type: integer
description: Total number of matching entities.
entities:
type: array
items:
type: object
properties:
uuid:
type: string
properties:
type: object
additionalProperties: true
AutocompleteResponse:
type: object
properties:
count:
type: integer
entities:
type: array
items:
type: object
properties:
identifier:
$ref: '#/components/schemas/Identifier'
short_description:
type: string
DeletedEntitiesResponse:
type: object
properties:
count:
type: integer
entities:
type: array
items:
type: object
properties:
uuid:
type: string
format: uuid
deleted_at:
type: string
format: date-time
entity_def_id:
type: string