Dealert Data API
Programmatic access to the Dealert M&A deals database — browse with filters, run semantic search, fetch a single deal, and pull the reference vocabularies you need to build queries. A simple, read-only REST API returning JSON.
https://dealert.ai/api/v1Introduction
All endpoints are GET requests and return JSON. Successful list responses are shaped { "data": [...], "pagination": {...} }; single-object responses are { "data": {...} }. Access requires an active Data API add-on on your account and an API key.
Don't have access yet? Enable the add-on and create a key →
Authentication
Send your secret key on every request, in either header:
# Recommended
curl -H "X-API-Key: YOUR_KEY" "https://dealert.ai/api/v1/deals?limit=5"
# Or a bearer token
curl -H "Authorization: Bearer YOUR_KEY" "https://dealert.ai/api/v1/deals?limit=5"
dk_live_… and are shown once at creation — store them securely. Manage and revoke keys anytime in Settings. A revoked key stops working immediately.Rate limits & quota
Each account has a monthly request quota that resets on the 1st of the month. Every response includes your current standing:
| Header | Meaning |
|---|---|
X-Quota-Limit | Requests allowed this month |
X-Quota-Remaining | Requests left in the current period |
X-Quota-Reset | Date the quota resets (YYYY-MM-DD) |
When the quota is exhausted, requests return 429 until the reset date. Requests rejected before authentication (unknown route, missing key) do not count against your quota.
Per-minute rate limit
In addition to the monthly quota, each API key is limited to 100 requests per minute. Every response carries your current standing, and throttled requests do not consume monthly quota:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per minute (100) |
X-RateLimit-Remaining | Requests left in the current minute |
Retry-After | Seconds to wait (sent on a 429) |
Exceeding the limit returns 429 with type: "rate_limited". Back off for the number of seconds in Retry-After and retry.
Errors
Errors use a consistent envelope and standard HTTP status codes:
{ "error": { "type": "quota_exceeded", "message": "Monthly API quota exceeded. Resets on 2026-08-01." } }
| Status | type | When |
|---|---|---|
400 | missing_query | A required parameter is absent (e.g. q on search) |
401 | no_key / invalid_key | Missing, invalid, or revoked key |
403 | addon_inactive | The Data API add-on isn't active on your account |
404 | not_found | Unknown endpoint, or no deal with that code |
405 | method_not_allowed | Only GET is supported |
429 | quota_exceeded | Monthly quota used up |
429 | rate_limited | Over 100 requests/minute — see Retry-After |
500/502/503 | various | Server-side / upstream issue — retry shortly |
List deals
/dealsBrowse and filter the deals database, most recent first. Paginated.
Query parameters
| Param | Type | Description |
|---|---|---|
page | int | Page number (default 1) |
limit | int | Results per page, 1–100 (default 25) |
target_country | int[] | Country id(s) — see reference. Repeat to OR: target_country=1&target_country=5 |
deal_type | int[] | Deal type id(s) |
seller_type | int[] | Seller type id(s) |
target_industry | string[] | Industry code(s) at any level (l1/l3/l5) |
min_deal_year, max_deal_year | int | Deal year range |
min_deal_month, max_deal_month | int | Month bounds (1–12), applied within the year range |
min_ev/max_ev, min_revenue/max_revenue, min_ebitda/max_ebitda, min_ebit/max_ebit, min_transaction_size/max_transaction_size | number | Financial filters (USD millions) |
min_evr/max_evr, min_evebitda/max_evebitda, min_evebit/max_evebit | number | Valuation-multiple filters |
buyer_name, target_name | string | Prefix match on buyer / target name |
data_source | string | estimates (default, uses Dealert estimates where disclosed data is missing), confirmed (disclosed figures only), or confirmed_strict (must have ≥1 disclosed figure) |
Example
curl -H "X-API-Key: YOUR_KEY" \
"https://dealert.ai/api/v1/deals?target_country=1&min_ev=50&data_source=confirmed&limit=2"
{
"data": [
{
"deal_code": "GCXI",
"buyer_name": "Baladna Q.P.S.C., Algerian National Investment Fund",
"target_name": "Baladna Algeria S.P.A.",
"deal_year": 2025,
"target_country": "Algeria",
"target_industry": "Dairy Products",
"deal_type": "Strategic Partnership",
"transaction_size": "155.00",
"ev": null, "revenue": null, "ebitda": null,
"ev_est_min": "160.0", "ev_est_max": "190.0"
/* …more fields — see "The deal object" */
}
],
"pagination": { "page": 1, "limit": 2, "total": 33, "total_pages": 17 }
}
Search deals
/deals/searchHybrid keyword + semantic (vector) search, ordered by relevance. Accepts the same filter parameters as List deals (except buyer_name/target_name).
| Param | Type | Description |
|---|---|---|
q required | string | Natural-language or keyword query |
page, limit | int | Pagination (limit 1–100, default 25) |
curl -H "X-API-Key: YOUR_KEY" \
"https://dealert.ai/api/v1/deals/search?q=AI%20infrastructure%20acquisitions&limit=5"
Response adds the echoed query alongside data and pagination.
Get a deal
/deals/{deal_code}Fetch a single deal by its deal_code. Returns 404 if no match.
curl -H "X-API-Key: YOUR_KEY" "https://dealert.ai/api/v1/deals/GCXI"
{ "data": { "deal_code": "GCXI", "buyer_name": "…", /* …full deal object */ } }
Reference data
Lookups for building filter queries. Each returns { "data": [...] }.
| Endpoint | Returns |
|---|---|
GET /reference/countries | { id, name } — use id with target_country |
GET /reference/deal-types | { id, name } — use id with deal_type |
GET /reference/seller-types | { id, name } — use id with seller_type |
GET /reference/industries | { code, name, lvl, l1p, l3p } — use code with target_industry. lvl is the hierarchy level (1/3/5); l1p/l3p are parent codes. |
curl -H "X-API-Key: YOUR_KEY" "https://dealert.ai/api/v1/reference/countries"
Likely buyers
/likely-buyersFind the acquirers and investors most likely to buy a target with a given profile, ranked by historical deal fit with supporting evidence.
| Param | Type | Description |
|---|---|---|
niche required | string[] | Industry code(s) — see reference/industries. Repeat: niche=5010101010&niche=50 |
country required | int[] | Target country id(s) |
size_band required | string | Target EV band: micro (<$10M), small ($10–50M), medium ($50–200M), large ($200M+) |
niche_mode | string | exact (default), balanced (one level broader), adjacent (whole sector) |
geo_mode | string | domestic (default, filter to countries) or cross_border |
buyer_type | string | all (default), strategic, financial |
size_mode | string | strict (default), flexible (±1 band), broad (ignore size) |
recently_active | string | yes (default, last 5 years) or no |
use_deal_type_filter + deal_types | bool + int[] | Restrict to specific deal types |
curl -H "X-API-Key: YOUR_KEY" \
"https://dealert.ai/api/v1/likely-buyers?niche=50&country=1&size_band=large&buyer_type=financial"
Returns { "data": [ … ] } — each buyer has buyer_name, match_strength_label, score_pct, supporting_deal_count, reasoning, and up to 3 supporting_deals. Up to 100 results.
Instant comps
/compsResolve a company by name and return a set of AI-ranked comparable transactions. This runs a live analysis and typically takes ~30 seconds — set a generous client timeout.
| Param | Type | Description |
|---|---|---|
company required | string | Company name (or website URL for precision) |
curl -H "X-API-Key: YOUR_KEY" "https://dealert.ai/api/v1/comps?company=Salesforce"
Returns { "data": [ … ], "company": "…", "website": "…", "logic": { … } }. Each item in data is a comparable deal with relevancy_pct, relevancy_label, and the standard deal fields. logic describes the inferred industry/geography used for matching. 404 if the company can't be resolved.
The deal object
Financial figures are in USD millions. Disclosed fields are null when not publicly reported; the matching *_est_min/*_est_max pair carries Dealert's estimated range for that metric.
| Field | Description |
|---|---|
deal_code | Stable unique identifier |
buyer_name, target_name | Parties to the deal |
deal_year | Year of the deal |
target_country, target_industry, deal_type, seller_type | Classifier names |
transaction_size, ev, revenue, ebitda, ebit | Disclosed figures (nullable) |
evr, evebitda, evebit | Computed multiples (EV/Revenue, EV/EBITDA, EV/EBIT) |
trsize_est_min/max, ev_est_min/max, rev_est_min/max, ebitda_est_min/max, ebit_est_min/max | Estimated ranges for each metric |
evrevenue_est_min/max, evebitda_est_min/max, evebit_est_min/max | Estimated multiple ranges |
aiconf, reasoning | Model confidence and rationale behind the estimates |