Sign in

Member sign in

Aviation Market Intelligence

Data API

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 returns 405.
  • 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

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 -NoTypeInformation

Endpoints

All paths are relative to https://clearedforcapital.com/wp-json/cfc/v1.

EndpointReturns
GET /briefsBriefs, filtered, sorted and paginated
GET /briefs/{id}One brief
GET /dealsBriefs that carry structured deal data, with deal filters and totals
GET /entitiesCompanies and organisations, searchable, with brief counts
GET /entities/{id|slug}One entity with stats, recent briefs and deal history
GET /regions, /categories, /deal-typesReference lists with counts
GET /meYour key, plan and remaining quota

GET/briefs

Briefs across all tiers, newest first by default. Combine any filters.

ParameterTypeDescription
fromdateEarliest brief date, YYYY-MM-DD, inclusive.
todateLatest brief date, YYYY-MM-DD, inclusive.
regionstringOne region from /regions, e.g. Europe, Asia-Pacific (case-insensitive).
categorystringOne category from /categories, e.g. Fleet, M&A (URL-encode as M%26A).
entityid or slugBriefs where the company is the primary entity or a related party, e.g. ryanair or 229.
tierinteger0 Free, 1 Briefing, 2 Intelligence. Omit for all tiers (your key can read all of them).
qstringSearch text (2–100 characters) matched against headline, summary, notes and primary entity name.
updated_sinceISO 8601Only briefs created or edited at or after this time (UTC), e.g. 2026-11-01T00:00:00Z. Use it for incremental syncs.
sortstring-date (default, newest first), date, -id, id, -updated, updated.
pageintegerPage number, from 1. Default 1.
per_pageintegerItems 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 8

Response (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 8

Response (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.

ParameterTypeDescription
typestringOne or more deal types, comma-separated: order, acquisition, lease, financing, buyback, contract, other.
min_valuenumberMinimum deal value in USD (deal.value_usd). Deals without a USD value are excluded when set.
max_valuenumberMaximum deal value in USD.
has_valuebooleantrue to return only deals with a USD value.
currencystringNative currency of the stated value, ISO 4217 (e.g. EUR).
aircraft_typestringSubstring match on aircraft type, e.g. A350, 737 MAX, E195-E2.
manufacturerstringSubstring match, e.g. Airbus, Boeing, Embraer.
counterpartystringSubstring match on the deal counterparty.
sortstringEverything /briefs accepts, plus -value / value (USD; unvalued deals last) and -aircraft / aircraft.
from, to, region, category, entity, tier, q, updated_since, page, per_pageAs 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 8

Response (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.

ParameterTypeDescription
qstringSearch name, slug or ticker.
typestringairline, oem, mro, airport, lessor, supplier, technology, advisory, regulator, other.
countrystringISO 3166 two-letter code, e.g. US, IE, AE.
has_tickerbooleantrue for listed companies only.
has_briefsbooleantrue to skip entities with no published briefs.
sortstringname (default), -name, -briefs (most covered first), briefs, -latest (most recently in the news).
page, per_pageintegerAs 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 8

Response (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.

ParameterTypeDescription
briefs_limitintegerHow 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 8

Response (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 8

Response (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 8

Response (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 8

Response (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 8

Response (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

FieldTypeDescription
idintegerStable brief id.
datedateDate of the event. date_approx is true when only the month or week is known.
week_startdateMonday of the brief’s week.
headline, summary, notesstringThe brief text. notes is analyst context and is often null.
region, categorystringSee reference lists.
tier, tier_nameinteger, stringWhich plan the brief is published under on the site: 0 Free, 1 Briefing, 2 Intelligence.
entityobject|nullPrimary company: id, slug, name, type, country, country_code, ticker, exchange.
related_entitiesarrayOther parties with their role.
dealobject|nulltype, 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.
sourceobjectlabel and url of the original source.
url, report_urlstring|nullThe brief page on this site, and the Briefing report when one exists.
updated_attimestampLast 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 page and per_page (max 200). Follow links.next until it is null, or loop to meta.total_pages.
  • The total is also sent as the X-Total-Count header.
  • 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 with sort=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:

HeaderMeaning
X-RateLimit-LimitRequests allowed this hour (600)
X-RateLimit-RemainingRequests left this hour
X-RateLimit-ResetUnix time when the hourly window resets
X-RateLimit-Limit-Day, -Remaining-Day, -Reset-DayThe same for the daily window
Retry-AfterSeconds 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)"
    }
  }
}
StatusCodeWhen
400invalid_parameterA parameter is malformed or out of range (bad date, unknown region, per_page over 200…).
401missing_api_keyNo Authorization: Bearer or X-API-Key header.
401invalid_api_keyThe key is wrong, revoked, or not a cfc_ member key.
403membership_requiredThe key’s account does not have an active Intelligence plan. Includes upgrade_url.
404not_found, entity_not_foundUnknown brief, entity or path.
405method_not_allowedAnything other than GET.
429rate_limitedHourly or daily limit reached; see Retry-After.
500 / 503query_failed, unavailableSomething 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.