Skip to main content
A market analysis in five requests. This example measures venture funding into European AI companies: how much capital the market absorbs each year, whether deal count is rising or falling with it, what a typical round now looks like, and who is deploying. Two taxonomy lookups resolve the market, then three aggregates measure it. Together they answer a question that no single endpoint answers on its own, which is the point: the analytics endpoints are composable, so you assemble a view rather than fetching a prebuilt one.
To analyse a different market, change the two lookups in step 2. Every later request reuses the IDs they return, so nothing else needs editing. Pass type on both lookups: an untyped search matches every taxonomy row containing your term, which is slower and returns rows you did not ask for.

Prerequisites

  • Complete the Quickstart to create an API key and make your first request.
  • DEALROOM_CLIENT_ID and DEALROOM_CLIENT_SECRET exported as environment variables.
  • jq for the cURL and Command Prompt snippets. The PowerShell, Node.js, and Python variants don’t require it.

The recipe

How the requests fit together

Every request after the lookups reuses one filter fragment, MARKET, which is the market definition: a technology tag, a location, and is_vc_round[eq]:true to exclude grants, debt, and other non-venture events. Holding that fragment constant is what makes the results comparable. Steps 3 and 4 are the pair that carries the analysis. Step 3 tells you whether money is flowing in. Step 4 tells you whether it is spread across more companies or concentrated into larger rounds. Reading them together is what separates a growing market from a concentrating one.

Common pitfalls

  • Reporting lag. Rounds keep being recorded for weeks after they close, so the most recent period always understates. Exclude the current year from a trend, or label it as partial.
  • Undisclosed amounts. amount[gte]:1 in step 4 excludes rounds with no reported amount, which is why its count is lower than step 3’s. Leave the filter out and those rounds enter the distribution as zeroes.
  • Investor amounts double count. A round contributes its full size to every investor in it, so step 5’s amounts rank investors but should not be totalled. Deal count also favours investors who write many small cheques, so use sort=-sum_amount when you want capital deployed instead.
  • Small groups. Narrow the market far enough and a percentile is drawn from a handful of rounds. Check count before reading a median.

Where to go from here

  • Break the same market down by geography instead of time with group_by=hq_country, or by stage with group_by=standardized_round. The filter fragment stays identical. See Analytics and aggregates for every supported source, metric, and dimension.
  • Add per-metric filters and percentages with /analytics/aggregate/{source}/multi-metric, which can calculate shares such as “what proportion of this market is unicorns” in one request.
  • Request every monetary metric and threshold in another currency with currency=EUR. See Currencies.
  • Move from the aggregate to the underlying records with /data/transactions, using the same filter syntax. See Filtering and the Filters and sorting reference.
  • For a shorter first query against a /data endpoint, see Top fintech startups.