Pull every brief, deal and company in the Cleared for Capital archive straight into your own models, spreadsheets and notebooks. The Data API is included with the Intelligence plan.
Overview
The Cleared for Capital Data API gives you the whole archive as JSON: every brief across all tiers, structured deal data (type, value, aircraft, counterparty), the companies we track and their deal history, and the reference lists behind them. It is the same data as the Data Archive and Markets pages, built for spreadsheets, notebooks and your own models.
- Base URL:
https://clearedforcapital.com/wp-json/cfc/v1 - Format: JSON (UTF-8). Dates are
YYYY-MM-DD; timestamps are UTC ISO 8601. - Methods: read-only. Every endpoint is
GET; anything else returns405. - Transport: HTTPS only.
Who has access
The API is part of the Intelligence plan. Briefing and Free accounts can read this page but cannot create keys; upgrade to Intelligence to get access.
Your membership is checked on every request. If your Intelligence plan lapses or is downgraded, your keys keep existing but return 403 membership_required until the plan is active again. Nothing needs to be re-issued when you renew.
Get an API key
Sign in with your Intelligence account and create a key below. You can hold up to two active keys (for example one for a notebook and one for a scheduled job). The full key is shown once, right after you create it; we only store a one-way hash, so we cannot show it again or recover it. If you lose it, revoke it and create a new one.
Your API keys
Sign in with your Intelligence account to create a key. Not a member yet? See plans
Forgot password?New here? Subscribe
Keep your key secret: treat it like a password, keep it out of shared notebooks and source control, and load it from an environment variable such as CFC_API_KEY. Keys are personal to your account and covered by your membership terms.
Authentication
Send your key on every request in one of these headers:
Authorization: Bearer cfc_your_key_here
X-API-Key: cfc_your_key_here
Keys start with cfc_ followed by 40 hex characters. Do not put keys in the query string. A missing key returns 401 missing_api_key; an unknown or revoked key returns 401 invalid_api_key.
Quick start
Set your key once, then call /me to check it works and see your remaining quota.
curl (macOS / Linux)
export CFC_API_KEY="cfc_your_key_here"
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/me" -H "Authorization: Bearer $CFC_API_KEY"
Python
# pip install requests
import os, time, requests
API = "https://clearedforcapital.com/wp-json/cfc/v1"
S = requests.Session()
S.headers["Authorization"] = f"Bearer {os.environ['CFC_API_KEY']}"
def get_all(path, **params):
"""Yield every item from a paginated endpoint."""
params.setdefault("per_page", 200)
page = 1
while True:
r = S.get(f"{API}{path}", params={**params, "page": page}, timeout=30)
if r.status_code == 429:
time.sleep(int(r.headers.get("Retry-After", 60))); continue
r.raise_for_status()
body = r.json()
yield from body["data"]
if page >= body["meta"]["total_pages"]:
break
page += 1
deals = list(get_all("/deals", type="order", **{"from": "2026-01-01"}))
print(len(deals), "orders in 2026")
PowerShell
$env:CFC_API_KEY = 'cfc_your_key_here'
$api = 'https://clearedforcapital.com/wp-json/cfc/v1'
$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri "$api/me" -Headers $h | ConvertTo-Json -Depth 6
# All 2026 Europe M&A briefs, every page, to CSV
$page = 1; $rows = @()
do {
$r = Invoke-RestMethod -Uri "$api/briefs?region=Europe&category=M%26A&from=2026-01-01&per_page=200&page=$page" -Headers $h
$rows += $r.data | Select-Object id, date, headline, @{n='entity';e={$_.entity.name}}, @{n='value_usd';e={$_.deal.value_usd}}
$page++
} while ($page -le $r.meta.total_pages)
$rows | Export-Csv europe-ma-2026.csv -NoTypeInformationEndpoints
All paths are relative to https://clearedforcapital.com/wp-json/cfc/v1.
| Endpoint | Returns |
|---|---|
GET /briefs | Briefs, filtered, sorted and paginated |
GET /briefs/{id} | One brief |
GET /deals | Briefs that carry structured deal data, with deal filters and totals |
GET /entities | Companies and organisations, searchable, with brief counts |
GET /entities/{id|slug} | One entity with stats, recent briefs and deal history |
GET /regions, /categories, /deal-types | Reference lists with counts |
GET /me | Your key, plan and remaining quota |
GET/briefs
Briefs across all tiers, newest first by default. Combine any filters.
| Parameter | Type | Description |
|---|---|---|
from | date | Earliest brief date, YYYY-MM-DD, inclusive. |
to | date | Latest brief date, YYYY-MM-DD, inclusive. |
region | string | One region from /regions, e.g. Europe, Asia-Pacific (case-insensitive). |
category | string | One category from /categories, e.g. Fleet, M&A (URL-encode as M%26A). |
entity | id or slug | Briefs where the company is the primary entity or a related party, e.g. ryanair or 229. |
tier | integer | 0 Free, 1 Briefing, 2 Intelligence. Omit for all tiers (your key can read all of them). |
q | string | Search text (2–100 characters) matched against headline, summary, notes and primary entity name. |
updated_since | ISO 8601 | Only briefs created or edited at or after this time (UTC), e.g. 2026-11-01T00:00:00Z. Use it for incremental syncs. |
sort | string | -date (default, newest first), date, -id, id, -updated, updated. |
page | integer | Page number, from 1. Default 1. |
per_page | integer | Items per page, 1–200. Default 50. |
Example: Europe M&A briefs in 2026
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/briefs?region=Europe&category=M%26A&from=2026-01-01&to=2026-12-31&per_page=2" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/briefs",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
params={"region": "Europe", "category": "M&A", "from": "2026-01-01", "to": "2026-12-31", "per_page": 2},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/briefs?region=Europe&category=M%26A&from=2026-01-01&to=2026-12-31&per_page=2' -Headers $h |
ConvertTo-Json -Depth 8Response (from a real call; long lists trimmed)
{
"data": [
{
"id": 3500,
"date": "2026-11-02",
"date_approx": false,
"week_start": "2026-11-02",
"headline": "ORIX Aviation completes its ~$640m acquisition of AerFin",
"summary": "ORIX Aviation has closed its purchase of Newport-based aftermarket specialist AerFin after regulatory approvals, making it a wholly owned subsidiary. The deal, reported at about $640m, bolts used serviceable material, engine and airframe parts trading onto a lessor that owns and manages more than 230 aircraft, letting ORIX capture value across the full asset life rather than exiting at end-of-lease.",
"notes": "Value per Bloomberg (~£475m). AerFin has 230+ staff with sites in Newport, Gatwick, Miami, Singapore and Dublin. Advisers: Goldman Sachs for ORIX, Rothschild for AerFin.",
"region": "Europe",
"category": "M&A",
"tier": 1,
"tier_name": "Briefing",
"entity": {
"id": 304,
"slug": "orix",
"name": "ORIX Corporation",
"type": "lessor",
"country": "Japan",
"country_code": "JP",
"ticker": "8591",
"exchange": "TSE"
},
"related_entities": [
{
"id": 305,
"slug": "aerfin",
"name": "AerFin",
"type": "supplier",
"role": "mentioned"
}
],
"deal": {
"type": "acquisition",
"value": 640000000,
"value_high": null,
"currency": "USD",
"fx_rate": null,
"value_usd": 640000000,
"value_basis": "reported",
"aircraft_count": null,
"aircraft_type": null,
"manufacturer": null,
"counterparty": "AerFin",
"note": "Completion; ~$640m per Bloomberg"
},
"source": {
"label": "Daily aviation data load, 2026-11-02",
"url": "https://www.insidermedia.com/news/wales/subsidiary-of-japanese-giant-completes-640m-acquisition-of-230-strong-aviation-firm"
},
"url": "https://clearedforcapital.com/data-archive/?av_brief=3500",
"report_url": null,
"updated_at": "2026-11-02T17:11:05Z"
}
],
"meta": {
"page": 1,
"per_page": 2,
"total": 40,
"total_pages": 20,
"sort": "-date"
},
"links": {
"self": "https://clearedforcapital.com/wp-json/cfc/v1/briefs?region=Europe&category=M%26A&from=2026-01-01&to=2026-12-31&per_page=2&sort=-date&page=1",
"next": "https://clearedforcapital.com/wp-json/cfc/v1/briefs?region=Europe&category=M%26A&from=2026-01-01&to=2026-12-31&per_page=2&sort=-date&page=2",
"prev": null
}
}
More examples
https://clearedforcapital.com/wp-json/cfc/v1/briefs?q=A321neo&per_page=50
https://clearedforcapital.com/wp-json/cfc/v1/briefs?entity=ryanair&sort=date
https://clearedforcapital.com/wp-json/cfc/v1/briefs?tier=2&from=2026-10-01
https://clearedforcapital.com/wp-json/cfc/v1/briefs?updated_since=2026-11-01T00:00:00Z&sort=updated
GET/briefs/{id}
One published brief by its numeric id (the id from any list, also the av_brief number in Data Archive links). Returns 404 not_found for unknown or unpublished ids.
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/briefs/2130" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/briefs/2130",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/briefs/2130' -Headers $h |
ConvertTo-Json -Depth 8Response (real call)
{
"data": {
"id": 2130,
"date": "2026-10-30",
"date_approx": false,
"week_start": "2026-10-26",
"headline": "Air Astana and China Southern sign first Kazakhstan–China airline JV",
"summary": "Air Astana (AIRA) signed a joint venture with China Southern Airlines covering coordinated schedules, wider codeshare and joint marketing, the first airline JV between Kazakhstan and China. It builds on an existing codeshare in a market where weekly flights are up 52% year on year, positioning Air Astana as a Europe–Asia transit gateway as Kazakhstan targets 30 Chinese destinations.",
"notes": null,
"region": "Asia-Pacific",
"category": "Network",
"tier": 0,
"tier_name": "Free",
"entity": {
"id": 411,
"slug": "air-astana",
"name": "Air Astana",
"type": "airline",
"country": "Kazakhstan",
"country_code": "KZ",
"ticker": "AIRA",
"exchange": "AIX"
},
"related_entities": [
{
"id": 367,
"slug": "china-southern",
"name": "China Southern Airlines",
"type": "airline",
"role": "partner"
}
],
"deal": null,
"source": {
"label": "Daily aviation data load, 2026-10-30",
"url": "https://www.tradingview.com/news/reuters.com,2026-10-30:newsml_RSd1632Ba:0-reg-air-astana-jsc-jv-agreement-with-china-southern-airlines/"
},
"url": "https://clearedforcapital.com/data-archive/?av_brief=2130",
"report_url": null,
"updated_at": "2026-10-30T16:07:34Z"
}
}
GET/deals
Only briefs that carry structured deal fields: aircraft orders, acquisitions, leases, financings, buybacks and contracts. Takes every /briefs filter plus the deal filters below, and adds totals for the whole filtered set to meta.
| Parameter | Type | Description |
|---|---|---|
type | string | One or more deal types, comma-separated: order, acquisition, lease, financing, buyback, contract, other. |
min_value | number | Minimum deal value in USD (deal.value_usd). Deals without a USD value are excluded when set. |
max_value | number | Maximum deal value in USD. |
has_value | boolean | true to return only deals with a USD value. |
currency | string | Native currency of the stated value, ISO 4217 (e.g. EUR). |
aircraft_type | string | Substring match on aircraft type, e.g. A350, 737 MAX, E195-E2. |
manufacturer | string | Substring match, e.g. Airbus, Boeing, Embraer. |
counterparty | string | Substring match on the deal counterparty. |
sort | string | Everything /briefs accepts, plus -value / value (USD; unvalued deals last) and -aircraft / aircraft. |
from, to, region, category, entity, tier, q, updated_since, page, per_page | As for /briefs. |
Values. value is in the native currency as stated; value_high is the top of a stated range. value_usd is only filled when the value was stated in USD or a conversion rate was stated (fx_rate); we never guess conversions. value_basis tells you what the number is: disclosed, list (list price), reported, estimated or ceiling.
Example: orders and leases worth $1bn or more, largest first
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/deals?type=order,lease&min_value=1000000000&sort=-value&per_page=2" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/deals",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
params={"type": "order,lease", "min_value": 1000000000, "sort": "-value", "per_page": 2},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/deals?type=order,lease&min_value=1000000000&sort=-value&per_page=2' -Headers $h |
ConvertTo-Json -Depth 8Response (from a real call; long lists trimmed)
{
"data": [
{
"id": 840,
"date": "2025-05-14",
"date_approx": false,
"week_start": "2025-05-12",
"headline": "Qatar Airways orders up to 210 Boeing widebodies for $96bn",
"summary": "Qatar Airways ordered 130 787s and 30 777-9s with 50 options, about $96bn and Boeing's (BA) largest widebody order. It also signed for more than 400 GE (GE) engines.",
"notes": null,
"region": "Middle East",
"category": "Fleet",
"tier": 1,
"tier_name": "Briefing",
"entity": {
"id": 2,
"slug": "qatar-airways",
"name": "Qatar Airways",
"type": "airline",
"country": "Qatar",
"country_code": "QA",
"ticker": null,
"exchange": null
},
"related_entities": [
{
"id": 8,
"slug": "boeing",
"name": "Boeing",
"type": "oem",
"role": "supplier"
},
{
"id": 214,
"slug": "ge-aerospace",
"name": "GE Aerospace",
"type": "oem",
"role": "supplier"
}
],
"deal": {
"type": "order",
"value": 96000000000,
"value_high": null,
"currency": "USD",
"fx_rate": null,
"value_usd": 96000000000,
"value_basis": "reported",
"aircraft_count": 160,
"aircraft_type": "787 / 777-9",
"manufacturer": "Boeing",
"counterparty": "Boeing",
"note": "Plus 50 options"
},
"source": {
"label": "May 2025 backfill, scraped on nomad",
"url": "https://www.reuters.com/business/aerospace-defense/qatar-signs-200-bln-deal-buy-jets-boeing-during-trump-visit-2025-05-14/"
},
"url": "https://clearedforcapital.com/data-archive/?av_brief=840",
"report_url": null,
"updated_at": "2026-10-30T01:35:43Z"
}
],
"meta": {
"page": 1,
"per_page": 2,
"total": 38,
"total_pages": 19,
"sort": "-value",
"valued_deals": 38,
"total_value_usd": 522510000000,
"total_aircraft": 2029
},
"links": {
"self": "https://clearedforcapital.com/wp-json/cfc/v1/deals?type=order%2Clease&min_value=1000000000&per_page=2&sort=-value&page=1",
"next": "https://clearedforcapital.com/wp-json/cfc/v1/deals?type=order%2Clease&min_value=1000000000&per_page=2&sort=-value&page=2",
"prev": null
}
}
GET/entities
Airlines, OEMs, lessors, MROs, suppliers and other organisations in the archive. Each row includes how many published briefs mention it and the first and latest brief dates.
| Parameter | Type | Description |
|---|---|---|
q | string | Search name, slug or ticker. |
type | string | airline, oem, mro, airport, lessor, supplier, technology, advisory, regulator, other. |
country | string | ISO 3166 two-letter code, e.g. US, IE, AE. |
has_ticker | boolean | true for listed companies only. |
has_briefs | boolean | true to skip entities with no published briefs. |
sort | string | name (default), -name, -briefs (most covered first), briefs, -latest (most recently in the news). |
page, per_page | integer | As above (max 200). |
Example: most-covered airlines matching “air”
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/entities?q=air&type=airline&sort=-briefs&per_page=2" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/entities",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
params={"q": "air", "type": "airline", "sort": "-briefs", "per_page": 2},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/entities?q=air&type=airline&sort=-briefs&per_page=2' -Headers $h |
ConvertTo-Json -Depth 8Response (real call)
{
"data": [
{
"id": 320,
"slug": "united-airlines",
"name": "United Airlines",
"type": "airline",
"country": "United States",
"country_code": "US",
"ticker": "UAL",
"exchange": "NASDAQ",
"parent_id": null,
"brief_count": 53,
"first_brief": "2018-07-16",
"latest_brief": "2026-10-21"
},
{
"id": 2,
"slug": "qatar-airways",
"name": "Qatar Airways",
"type": "airline",
"country": "Qatar",
"country_code": "QA",
"ticker": null,
"exchange": null,
"parent_id": null,
"brief_count": 49,
"first_brief": "2018-02-10",
"latest_brief": "2026-10-27"
}
],
"meta": {
"page": 1,
"per_page": 2,
"total": 258,
"total_pages": 129,
"sort": "-briefs"
},
"links": {
"self": "https://clearedforcapital.com/wp-json/cfc/v1/entities?q=air&type=airline&per_page=2&sort=-briefs&page=1",
"next": "https://clearedforcapital.com/wp-json/cfc/v1/entities?q=air&type=airline&per_page=2&sort=-briefs&page=2",
"prev": null
}
}
GET/entities/{id|slug}
One entity by numeric id or slug, with coverage stats, a breakdown by category and deal type, its most recent briefs (with the entity’s role in each: primary, partner, counterparty, supplier or mentioned) and up to 100 deals in its history. Use links.all_briefs / links.all_deals to page through everything.
| Parameter | Type | Description |
|---|---|---|
briefs_limit | integer | How many recent briefs to embed, 1–100. Default 25. |
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/entities/ryanair?briefs_limit=2" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/entities/ryanair?briefs_limit=2",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/entities/ryanair?briefs_limit=2' -Headers $h |
ConvertTo-Json -Depth 8Response (from a real call; long lists trimmed)
{
"data": {
"id": 229,
"slug": "ryanair",
"name": "Ryanair",
"type": "airline",
"country": "Ireland",
"country_code": "IE",
"ticker": "RYA",
"exchange": "ISE",
"parent_id": null,
"brief_count": 21,
"first_brief": "2018-03-20",
"latest_brief": "2026-09-02",
"stats": {
"deal_count": 3,
"deal_value_usd": 40500000000,
"aircraft_in_deals": 150,
"by_category": {
"Fleet": 11,
"Financials": 7,
"M&A": 2,
"MRO": 1
},
"by_deal_type": {
"order": {
"count": 2,
"value_usd": 40500000000
},
"contract": {
"count": 1,
"value_usd": null
}
}
},
"briefs": [
{
"id": 171,
"date": "2026-09-02",
"date_approx": false,
"week_start": "2026-08-31",
"headline": "Ryanair cuts traffic guidance, warns profit will fall",
"summary": "Ryanair cut full-year traffic guidance and warned profits will fall as high oil prices bite, adding that the fuel shock could threaten weaker European competitors.",
"notes": null,
"region": "Europe",
"category": "Financials",
"tier": 1,
"tier_name": "Briefing",
"entity": {
"id": 229,
"slug": "ryanair",
"name": "Ryanair",
"type": "airline",
"country": "Ireland",
"country_code": "IE",
"ticker": "RYA",
"exchange": "ISE"
},
"related_entities": [],
"deal": null,
"source": {
"label": "September 2026 backfill (date-filtered news + trade/IR feeds, scraped on nomad)",
"url": "https://www.flightglobal.com/archive/2026/09/ryanair-cuts-full-year-traffic-guidance-and-warns-profits-will-fall/"
},
"url": "https://clearedforcapital.com/data-archive/?av_brief=171",
"report_url": null,
"updated_at": "2026-10-29T16:55:32Z",
"role": "primary"
}
],
"deal_history": [
{
"brief_id": 618,
"date": "2026-02-10",
"headline": "Ryanair and CFM sign multi-billion-dollar engine materials deal",
"primary_entity": "Ryanair",
"type": "contract",
"value": null,
"value_high": null,
"currency": null,
"fx_rate": null,
"value_usd": null,
"value_basis": null,
"aircraft_count": null,
"aircraft_type": null,
"manufacturer": null,
"counterparty": "CFM International",
"note": "Engine material services MoU, ~$1bn/yr reported"
},
{
"brief_id": 861,
"date": "2025-06-10",
"headline": "Ryanair buys 30 LEAP-1B spare engines",
"primary_entity": "Ryanair",
"type": "order",
"value": 500000000,
"value_high": null,
"currency": "USD",
"fx_rate": null,
"value_usd": 500000000,
"value_basis": "reported",
"aircraft_count": null,
"aircraft_type": null,
"manufacturer": null,
"counterparty": "CFM International",
"note": "30 spare engines"
}
],
"links": {
"all_briefs": "https://clearedforcapital.com/wp-json/cfc/v1/briefs?entity=ryanair",
"all_deals": "https://clearedforcapital.com/wp-json/cfc/v1/deals?entity=ryanair"
}
}
}
Reference lists
Valid filter values, with live counts. These change rarely; cache them.
GET/regions
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/regions" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/regions",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/regions' -Headers $h |
ConvertTo-Json -Depth 8Response (real call)
{
"data": [
{
"name": "Global",
"brief_count": 176,
"latest_brief": "2026-11-02"
},
{
"name": "North America",
"brief_count": 451,
"latest_brief": "2026-11-03"
},
{
"name": "Latin America",
"brief_count": 119,
"latest_brief": "2026-11-02"
},
{
"name": "Europe",
"brief_count": 534,
"latest_brief": "2026-11-03"
},
{
"name": "Middle East",
"brief_count": 200,
"latest_brief": "2026-10-29"
},
{
"name": "Africa",
"brief_count": 107,
"latest_brief": "2026-11-03"
},
{
"name": "Asia-Pacific",
"brief_count": 689,
"latest_brief": "2026-11-03"
}
]
}
GET/categories
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/categories" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/categories",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/categories' -Headers $h |
ConvertTo-Json -Depth 8Response (real call)
{
"data": [
{
"name": "Network",
"brief_count": 21,
"latest_brief": "2026-11-03"
},
{
"name": "Fleet",
"brief_count": 1272,
"latest_brief": "2026-11-03"
},
{
"name": "M&A",
"brief_count": 410,
"latest_brief": "2026-11-02"
},
{
"name": "Financials",
"brief_count": 406,
"latest_brief": "2026-11-03"
},
{
"name": "MRO",
"brief_count": 164,
"latest_brief": "2026-11-03"
},
{
"name": "Regulatory",
"brief_count": 1,
"latest_brief": "2026-10-20"
},
{
"name": "Airports",
"brief_count": 1,
"latest_brief": "2026-10-25"
},
{
"name": "Strategy",
"brief_count": 1,
"latest_brief": "2026-10-27"
},
{
"name": "Technology",
"brief_count": 0,
"latest_brief": null
},
{
"name": "Other",
"brief_count": 0,
"latest_brief": null
}
]
}
GET/deal-types
Deal types with the number of deals, how many carry a USD value, and their total USD value; meta.value_bases lists the valid value_basis values.
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/deal-types" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/deal-types",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/deal-types' -Headers $h |
ConvertTo-Json -Depth 8Response (real call)
{
"data": [
{
"name": "order",
"deal_count": 299,
"valued_deals": 41,
"total_value_usd": 523237000000
},
{
"name": "acquisition",
"deal_count": 179,
"valued_deals": 47,
"total_value_usd": 87249130000
},
{
"name": "lease",
"deal_count": 123,
"valued_deals": 6,
"total_value_usd": 4166000000
},
{
"name": "financing",
"deal_count": 55,
"valued_deals": 37,
"total_value_usd": 33841000000
},
{
"name": "buyback",
"deal_count": 1,
"valued_deals": 1,
"total_value_usd": 500000000
},
{
"name": "contract",
"deal_count": 67,
"valued_deals": 0,
"total_value_usd": 0
},
{
"name": "other",
"deal_count": 11,
"valued_deals": 4,
"total_value_usd": 1098800000
}
],
"meta": {
"value_bases": [
"disclosed",
"list",
"reported",
"estimated",
"ceiling"
]
}
}
GET/me
The key you are using, your plan and your remaining quota. Calls to /me count toward your limits like any other request.
curl -s "https://clearedforcapital.com/wp-json/cfc/v1/me" \
-H "Authorization: Bearer $CFC_API_KEY"import os, requests
r = requests.get(
"https://clearedforcapital.com/wp-json/cfc/v1/me",
headers={"Authorization": f"Bearer {os.environ['CFC_API_KEY']}"},
timeout=30,
)
r.raise_for_status()
print(r.json())$h = @{ Authorization = "Bearer $env:CFC_API_KEY" }
Invoke-RestMethod -Uri 'https://clearedforcapital.com/wp-json/cfc/v1/me' -Headers $h |
ConvertTo-Json -Depth 8Response (real call; name and key prefix changed)
{
"data": {
"account": {
"display_name": "Jane Analyst",
"plan": "Intelligence"
},
"key": {
"id": 12,
"name": "Research notebook",
"prefix": "cfc_1a2b3c4d",
"created_at": "2026-11-04T15:34:07Z"
},
"rate_limits": {
"hourly": {
"limit": 600,
"used": 22,
"remaining": 578,
"resets_at": "2026-11-04T16:00:00Z"
},
"daily": {
"limit": 5000,
"used": 22,
"remaining": 4978,
"resets_at": "2026-11-05T00:00:00Z"
}
},
"api_version": "1.4.0",
"docs": "https://clearedforcapital.com/api/"
}
}The brief object
| Field | Type | Description |
|---|---|---|
id | integer | Stable brief id. |
date | date | Date of the event. date_approx is true when only the month or week is known. |
week_start | date | Monday of the brief’s week. |
headline, summary, notes | string | The brief text. notes is analyst context and is often null. |
region, category | string | See reference lists. |
tier, tier_name | integer, string | Which plan the brief is published under on the site: 0 Free, 1 Briefing, 2 Intelligence. |
entity | object|null | Primary company: id, slug, name, type, country, country_code, ticker, exchange. |
related_entities | array | Other parties with their role. |
deal | object|null | type, value, value_high, currency, fx_rate, value_usd, value_basis, aircraft_count, aircraft_type, manufacturer, counterparty, note. null when the brief is not a deal; individual fields are null when not stated. |
source | object | label and url of the original source. |
url, report_url | string|null | The brief page on this site, and the Briefing report when one exists. |
updated_at | timestamp | Last change (UTC). Use with updated_since. |
Pagination & sorting
List endpoints return data (the items), meta and links:
{
"meta": {
"page": 1,
"per_page": 2,
"total": 2276,
"total_pages": 1138,
"sort": "-date"
},
"links": {
"self": "https://clearedforcapital.com/wp-json/cfc/v1/briefs?per_page=2&page=1",
"next": "https://clearedforcapital.com/wp-json/cfc/v1/briefs?per_page=2&page=2",
"prev": null
}
}
- Use
pageandper_page(max 200). Followlinks.nextuntil it isnull, or loop tometa.total_pages. - The total is also sent as the
X-Total-Countheader. - Pick an order with
sort; a leading-means descending. Results are stable within a sort (ties are broken by id). - For a nightly sync, request
updated_since= your last run time withsort=updated.
Rate limits
Each key can make 600 requests per hour and 5,000 requests per day. Windows are fixed: the hourly window resets at the top of each hour and the daily window at midnight UTC, which is 7:00 pm Eastern while US Eastern Standard Time is in effect (8:00 pm during daylight saving time). Reset times in headers and in /me are given in UTC. Every response carries your current state:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed this hour (600) |
X-RateLimit-Remaining | Requests left this hour |
X-RateLimit-Reset | Unix time when the hourly window resets |
X-RateLimit-Limit-Day, -Remaining-Day, -Reset-Day | The same for the daily window |
Retry-After | Seconds to wait (only on 429) |
Over the limit you get 429 rate_limited; wait for Retry-After seconds. With per_page=200 the whole archive is only a few dozen requests, so you should rarely come close.
A real 429 (limit lowered for the test)
HTTP/1.1 429 Too Many Requests
Retry-After: 1487
X-RateLimit-Limit: 1
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1793808000
X-RateLimit-Limit-Day: 5000
X-RateLimit-Remaining-Day: 4979
X-RateLimit-Reset-Day: 1793836800
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded (1 requests per hour). Retry after 2026-11-04 16:00:00 UTC.",
"status": 429
}
}Errors
Errors always use the same shape, with a machine-readable code, a human-readable message and the HTTP status. Validation errors add details.
{
"error": {
"code": "invalid_parameter",
"message": "Invalid parameter(s): per_page",
"status": 400,
"details": {
"per_page": "per_page must be between 1 (inclusive) and 200 (inclusive)"
}
}
}
| Status | Code | When |
|---|---|---|
| 400 | invalid_parameter | A parameter is malformed or out of range (bad date, unknown region, per_page over 200…). |
| 401 | missing_api_key | No Authorization: Bearer or X-API-Key header. |
| 401 | invalid_api_key | The key is wrong, revoked, or not a cfc_ member key. |
| 403 | membership_required | The key’s account does not have an active Intelligence plan. Includes upgrade_url. |
| 404 | not_found, entity_not_found | Unknown brief, entity or path. |
| 405 | method_not_allowed | Anything other than GET. |
| 429 | rate_limited | Hourly or daily limit reached; see Retry-After. |
| 500 / 503 | query_failed, unavailable | Something went wrong on our side; retry with backoff. |
Examples (real calls)
{
"error": {
"code": "invalid_parameter",
"message": "region must be one of: Global, North America, Latin America, Europe, Middle East, Africa, Asia-Pacific.",
"status": 400
}
}
{
"error": {
"code": "not_found",
"message": "Brief not found.",
"status": 404
}
}Revoking & rotating keys
Manage keys in the key panel above, signed in. Revoke stops a key immediately; any request using it afterwards gets 401 invalid_api_key. To rotate without downtime: create a second key, switch your scripts to it, then revoke the old one. The panel shows when each key was created and last used and how many calls it made today, so you can spot one you no longer use.
If you think a key has leaked, revoke it straight away and create a new one.
Fair use & support
The API is for your own research and internal use under your Intelligence membership. Please don’t share keys or republish the archive in bulk. Data is for information only and is not investment advice. Questions, a field you need, or higher limits for a project: contact us.
