Skip to main content

Prerequisites

  • A Dealroom API key. See Authentication to obtain one.
  • An HTTP client (curl, Postman, or any language with an HTTP library).

1. Obtain an access token

Exchange your API key credentials for a Bearer token:
The response contains an access_token valid for expires_in seconds (typically 86400s / 24h). Cache it and reuse it — do not request a new token per API call.

2. Query entities

Fetch the 10 highest-valued startups launched in 2020 or later:
Note the -g flag. curl treats [ and ] as glob ranges even inside quotes, so a filter expression without it fails before any request is sent: curl: (3) bad range in URL. -g (--globoff) turns globbing off. Other HTTP clients need nothing special — or percent-encode the brackets as %5B / %5D.
The X-Client-Id header is required on all requests authenticated with an API key. See Authentication for details.

3. Understand the response

  • data — array of matching entities. Entities are addressed by uuid; there is no numeric id on the entity. They expose flat HQ fields (hq_country, hq_city, lat, lon) and structured sub-objects like latest_valuation and tags. Monetary values are JSON numbers.
  • page.limit / page.offset — the applied pagination params
  • page.total — total matching records; only present when include_total=true
  • page.next_cursor / page.prev_cursor — opaque cursors for keyset pagination; see Pagination
  • currency — the currency monetary fields are expressed in (defaults to USD; override with ?currency=EUR)
Requests made without an API key additionally carry plan-cap metadata (page.capped, page.tier, page.ecosystem) — API-key responses, like the one above, omit those fields. See Pagination. Don’t mark them required in a schema-driven client.
Some fields are tier-gated: latest_valuation and latest_revenue are premium, and come back as null on lower tiers even when the underlying filter and sort still work. On keyless requests, page.tier shows the tier the request was served at.

4. Paginate through results

Use limit and offset to page through results:
For deep or sequential walks, prefer cursor pagination: round-trip page.next_cursor via ?cursor=, and echo the same sort and filter on every cursor request — a cursor replayed without them returns 400 Invalid cursor for this sort order; restart from the first page. See Pagination for the full reference, including the cursor rules and per-plan depth caps.

Next steps

  • Learn about Filtering to narrow results with 65+ available filters.
  • Explore API Versioning to understand how breaking changes are handled.
  • Browse the API Reference for all available endpoints.