The goal
Turn a taxonomy filter into market evidence
A company list answers who is in a market. A funding series answers whether capital formation is accelerating, slowing, or shifting geographically.
The result combines a market trend with the records behind it. That makes the output useful for sector research, strategy, reporting, and investment memos.
python -m venv .venv
source .venv/bin/activate
pip install requests python-dotenv
Store DEALROOM_CLIENT_ID and DEALROOM_CLIENT_SECRET in a local .env file. Keep it out of version control.
Use aggregate data for the trend
The answer is a sequence of yearly totals, so start with GET /analytics/timeseries. Use GET /data/companies separately when you need company records.
| Question | Endpoint |
|---|---|
| How much VC funding was recorded each year? | /analytics/timeseries |
| Which companies make up the selected market? | /data/companies |
| How many companies match? | page.total from the company list |
Keep aggregate and record queries separate. A timeseries is not a company ranking, and paging through companies to calculate annual totals recreates work the API already performs.
Resolve the market before querying it
The reference search resolves “Quantum Computing” to tag ID 823301. Europe is location ID 34.
europe_filter = (
"and(tag_id[eq]:823301,"
"hq_location[eq]:34)"
)
global_filter = "tag_id[eq]:823301"
Resolve IDs through GET /reference/filters/search in a general application. Labels are for readers; numeric IDs belong in API filters.
Add a baseline to make the trend meaningful
Run the same timeseries twice. Keep the metric, years, aggregation, and currency fixed; change only the location constraint.
base_query = {
"metric": "vc_funding",
"aggregation": "sum",
"year_min": 2018,
"year_max": 2026,
"currency": "EUR",
}
europe = client.get(
"/analytics/timeseries",
{**base_query, "filter": europe_filter},
)
global_market = client.get(
"/analytics/timeseries",
{**base_query, "filter": global_filter},
)
Matching query definitions make the comparison explainable. The regional share is calculated from two returned values for the same year.
Attach companies to the curve
The timeseries shows market direction, but it does not identify participants. Add one sorted company query using the same tag and headquarters filters.
companies = client.get(
"/data/companies",
{
"filter": company_filter,
"sort": "-total_funding",
"limit": 8,
"include_total": "true",
"currency": "EUR",
},
)
The response contributes the company name, funding total, location, headcount, hiring status, valuation context, founders, and page.total.
Real output
Inspect the European quantum funding pulse
Annual funding against the global baseline, followed by the companies behind the market.
Loading the quantum funding pulse...
Snapshot generated from the Dealroom API. The 2026 value is year to date.
Keep unlike periods and cohorts separate
Market charts become misleading when filters or time windows shift quietly. Preserve the query beside the result and document these limits.
- Label the current calendar year as year to date.
- Remember that undisclosed round amounts do not enter funding totals.
- State whether geography means current headquarters, founding location, or office presence.
- Expect taxonomy membership to change as company profiles improve.
- Do not treat funding volume as a measure of technical progress or company quality.
Complete example
Download the market-pulse generator
The file includes OAuth2 authentication, bounded retries, reusable cohort arguments, regional benchmarking, Markdown output, and structured JSON.