Infrastructure Concession Intelligence API
Programmatic access to 33,000+ global infrastructure concessions. Airports, toll roads, ports, water, rail, waste, power distribution, gas distribution, marinas.
Quick Start
Get from zero to first API call in 60 seconds. Concessio's infrastructure concession API returns structured data about government-granted BOT contracts, concession agreements, and PPP/PFI projects worldwide.
cURL
curl -H "Authorization: Bearer ck_live_xxx" \ "https://app.concessio.io/api/v1/concessions?sector=Airport&country=France&per_page=5"
JavaScript
const resp = await fetch(
"https://app.concessio.io/api/v1/concessions?sector=Airport&country=France",
{ headers: { "Authorization": "Bearer ck_live_xxx" } }
);
const { data, pagination } = await resp.json();
console.log(`Found ${pagination.total} airport concessions in France`);Python
import requests
resp = requests.get(
"https://app.concessio.io/api/v1/concessions",
params={"sector": "Airport", "country": "France"},
headers={"Authorization": "Bearer ck_live_xxx"}
)
data = resp.json()
print(f"Found {data['pagination']['total']} airport concessions in France")Response
{
"data": [
{
"id": "fund-vinci-lyon-saint-exup-ry-airport",
"concessio_id": "FR10C0000401",
"registry_url": "https://concessio.io/id/FR10C0000401",
"name": "Lyon-Saint Exupéry Airport Concession",
"country": "France",
"sector": "Airport",
"operator": "Vinci SA",
"status": "Active",
"concession_end": null,
"contract_type": "Concession"
}
],
"pagination": { "page": 1, "per_page": 25, "total": 54, "total_pages": 3 }
}Authentication & Rate Limits
Concessio uses API keys for authentication. Pass your key via the Authorization header. API keys are tied to your organization and plan tier.
Authorization: Bearer ck_live_xxxxxxxxxxxx
Key format: ck_live_ for production, ck_test_ for sandbox.
| Plan | Rate Limit | Access | Price |
|---|---|---|---|
| Screen | 100 req/hr | Search + basic fields | $750/mo |
| Advise | 500 req/hr | Full detail + financials + ownership | $2,500/mo |
| Manage | 2,000 req/hr | Full detail + portfolio + bulk | Custom |
Error Responses
| Status | Code | Description |
|---|---|---|
| 400 | invalid_params | Malformed query parameters |
| 401 | unauthorized | Missing or invalid API key |
| 403 | plan_restricted | Endpoint not available on current plan |
| 404 | not_found | Concession ID does not exist |
| 429 | rate_limited | Rate limit exceeded — includes retry_after |
| 500 | internal_error | Server error |
Concessio IDs
A Concessio ID is the canonical 12-character identifier assigned to every infrastructure concession in the Concessio database. It functions for infrastructure concessions the way ISIN functions for securities or CUSIP functions for North American debt and equity instruments — a stable, machine-readable, citation-grade reference.
Concessio IDs are stable for the life of the concession. They do not change if the asset is renamed, sold, restructured, or transferred between operators. Cite them in filings, press releases, research reports, term sheets, and contracts. The registry is free and public — no authentication required for ID lookups.
Quick example. The Lyon-Saint Exupéry Airport concession:
Format
The 12-character format is CC-AA-S-NNNNNN-K, displayed without hyphens in storage and with hyphens for human reading.
Stored: FR10C0000401 Display: FR-10-C-000040-1 CC France (ISO 3166-1 alpha-2) AA 10 Airport (asset class code) S C Concession (structure code) NNNNNN 000040 (sequence within prefix) K 1 (Luhn check digit)
Asset class codes group infrastructure into families. The first digit indicates the family (10s transport, 20s utilities, 30s environmental, 40s social); the second digit identifies the specific asset class:
| Code | Asset class | Family |
|---|---|---|
| 10 | Airport | Transport |
| 11 | Toll Road | Transport |
| 12 | Port | Transport |
| 13 | Rail | Transport |
| 14 | Marina | Transport |
| 20 | Water | Utilities |
| 21 | Power Distribution | Utilities |
| 22 | Gas Distribution | Utilities |
| 23 | District Heating | Utilities |
| 30 | Waste | Environmental |
| 40 | Social | Social |
| 99 | Other Infrastructure | Other |
Structure codes identify the contract type:
| Code | Structure |
|---|---|
| C | Concession (pure operational) |
| B | BOT — Build-Operate-Transfer |
| O | BOOT — Build-Own-Operate-Transfer |
| T | BTO — Build-Transfer-Operate |
| W | BOO — Build-Own-Operate |
| D | DBFOM — Design-Build-Finance-Operate-Maintain |
| F | DBFO — Design-Build-Finance-Operate |
| R | ROT — Rehabilitate-Operate-Transfer |
| L | Lease (long-term) |
| A | Affermage |
| M | Management Contract |
| P | PPP — Public-Private Partnership (generic) |
| X | Other / unknown |
Lookup
Every Concessio ID resolves to a free public registry page and a JSON lookup endpoint. No API key required.
| Type | URL pattern |
|---|---|
| HTML page | https://concessio.io/id/{ID} |
| JSON API | https://concessio.io/api/v1/id/{ID} |
Live examples
Click any ID below to see its public registry page:
| Concessio ID | Asset | Country | Sector |
|---|---|---|---|
| FR10C0000401 | Lyon-Saint Exupéry Airport | France | Airport |
| CL11C0000011 | Accesos a Valdivia | Chile | Toll Road |
| AU12C0000014 | Port Botany Sydney | Australia | Port |
| GB13X0000155 | Eurotunnel Freight Shuttle Service | United Kingdom | Rail |
| IN10R0000014 | Delhi Indira Gandhi Airport Expansion | India | Airport |
| ES11C0000103 | R-3 and R-5 Radial Autopistas Madrid | Spain | Toll Road |
| PT11P0000034 | Transmontana Motorway | Portugal | Toll Road |
| BR20R0000019 | Rio de Janeiro Water Bloc 4 | Brazil | Water |
JSON response
GET https://concessio.io/api/v1/id/CL11C0000011
{
"id": "CL11C0000011",
"display_id": "CL-11-C-000001-1",
"name": "Accesos a Valdivia",
"country": "Chile",
"country_code": "CL",
"sector": "Toll Road",
"sector_family": "Transport",
"asset_class_code": "11",
"contract_type": "Concession",
"structure_code": "C",
"structure_name": "Concession (pure operational)",
"start_date": "2010-01-01",
"end_date": "2035-01-01",
"operator": null,
"grantor": "Ministerio de Obras Publicas (MOP)",
"registry_url": "https://concessio.io/id/CL11C0000011",
"retrieved_at": "2026-04-22T12:00:00.000Z"
}Validation
The 12th character is a Luhn check digit using the ISIN variant (letters expanded to two-digit numbers, A=10 through Z=35). The check digit catches accidental typos and casually fabricated identifiers before they ever reach the database. A Concessio ID with a wrong check digit returns 400 invalid_check_digit from the API.
// Reference implementation — JavaScript
function validateConcessioId(id) {
const s = String(id).replace(/[^A-Z0-9]/gi, "").toUpperCase();
if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9][0-9]{6}[0-9]$/.test(s)) return false;
let expanded = "";
for (const ch of s.slice(0, 11)) {
const c = ch.charCodeAt(0);
if (c >= 48 && c <= 57) expanded += ch;
else if (c >= 65 && c <= 90) expanded += String(c - 55);
}
let total = 0, alt = true;
for (let i = expanded.length - 1; i >= 0; i--) {
const d = parseInt(expanded[i], 10);
if (alt) { const dd = d * 2; total += dd >= 10 ? Math.floor(dd / 10) + (dd % 10) : dd; }
else total += d;
alt = !alt;
}
const expected = String((10 - (total % 10)) % 10);
return expected === s[11];
}
validateConcessioId("CL11C0000011"); // true
validateConcessioId("CL-11-C-000001-1"); // true (hyphens allowed)
validateConcessioId("CL11C0000099"); // false (bad check digit)Error responses
| Status | Code | When |
|---|---|---|
| 400 | invalid_format | Not 12 alphanumeric characters in the canonical layout |
| 400 | invalid_check_digit | Format correct but Luhn fails — typo or fabricated |
| 404 | not_found | Format and Luhn valid but ID is not in the registry |
| 200 | — | Concession found, full record returned |
Concessio mints a Concessio ID for every infrastructure concession ingested into the database — currently 29,475+ concessions across 170+ countries and 12 asset classes. The registry adds new IDs as new concessions are ingested. IDs are never reused, never re-issued, and never reassigned.
API Reference
GET /api/v1/concessions — Search
Primary discovery endpoint for searching 33,000+ infrastructure concessions. Supports full-text search, country/sector/operator filtering, expiry date ranges, and pagination.
| Parameter | Type | Description |
|---|---|---|
| q | string | Full-text search across name, country, operator, sector |
| country | string | Country name, comma-separated for multiple |
| sector | string | Airport, Toll Road, Port, Water, Rail, Waste, Power Distribution, Gas Distribution, Marina |
| expires_before | date | ISO 8601 — concessions expiring before this date |
| expires_after | date | ISO 8601 — concessions expiring after this date |
| operator | string | Fuzzy match on operator/concessionaire name |
| status | string | Active, Expired, Under Tender, Cancelled |
| sort | string | concession_end, name, country (default: concession_end) |
| order | string | asc or desc (default: asc) |
| page | number | Page number (default: 1) |
| per_page | number | Results per page (default: 25, max: 100) |
GET /api/v1/concessions/:id — Detail
Full detail for a single infrastructure concession including ownership history, financials, lifecycle events, and contract terms. Returns current owner with stake percentage and transaction history.
GET /api/v1/sectors
Valid sector values with concession counts. Helps AI agents understand available infrastructure categories in the Concessio database.
GET /api/v1/countries
All countries with infrastructure concession counts and region mapping. Helps agents validate country names and discover Concessio's geographic coverage across 170+ countries.
GET /api/v1/operators
Search infrastructure operators and concessionaires. Supports fuzzy matching. Returns operator name and concession count. Covers 700+ operators including Vinci, Ferrovial, Transurban, Macquarie, Brookfield, Meridiam, DIF, and more.
GET /api/v1/stats
Aggregate statistics about the Concessio infrastructure concession database: total concessions (33,000+), breakdown by sector and region, concessions expiring within 12/24/36 months. Best first call for an AI agent to understand data scope.
Connect to Claude (MCP)
The Model Context Protocol (MCP) lets your AI assistant access Concessio's infrastructure concession data directly. When you connect Concessio to Claude, it can answer questions about infrastructure concessions, BOT contracts, government-granted operating rights, and concession expiry timelines using live data from our database of 33,000+ concessions.
Setup for Claude Desktop
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"concessio": {
"transport": {
"type": "sse",
"url": "https://app.concessio.io/api/mcp/sse"
},
"headers": {
"Authorization": "Bearer ck_live_xxxx"
}
}
}
}Available Tools
| Tool | When to Use |
|---|---|
| search_concessions | Search for infrastructure concessions by country, sector, operator, or expiry date. Use for any question about specific concessions, BOT contracts, or government-granted operating rights. |
| get_concession_detail | Get full details for a specific concession — ownership history, financials, contract terms. Use after search to drill into a specific asset. |
| get_operator_portfolio | List all concessions held by a company. Use when asked about an operator's holdings, portfolio, or infrastructure exposure. |
| get_expiring_concessions | Find concessions expiring soon. Critical for deal origination — expiring concessions signal re-tender opportunities. |
| get_concession_stats | Database overview: totals by sector, region, status, and expiry counts. Best first call to understand scope. |
| get_country_concessions | All concessions in a specific country, broken down by sector. Use for country-level infrastructure landscape questions. |
Example Queries
Once connected, ask Claude questions like these — Concessio provides the data:
- "What European airport concessions expire before 2030?"
- "Show me Vinci's infrastructure concession portfolio"
- "How many toll road concessions are there globally?"
- "What concessions does Spain have?"
- "Which water concessions are expiring in the next 18 months?"
- "What is the total value of port concessions in Southeast Asia?"
- "Compare rail concessions across France, Germany, and Italy"
- "Find infrastructure assets operated by Macquarie"
Data Coverage
Concessio maintains the most comprehensive database of global infrastructure concessions, covering government-granted BOT contracts, concession agreements, PPP/PFI projects, and regulated infrastructure assets.
| Metric | Coverage |
|---|---|
| Total concessions | 33,000+ and growing daily |
| Countries | 170+ countries, with depth in Europe, Latin America, South/Southeast Asia, Africa |
| Asset classes | Airports, toll roads, ports, water utilities, rail, waste management, power distribution, gas distribution, marinas |
| Ownership events | 10,800+ tracked ownership changes from competition filings, fund reports, press |
| Transaction multiples | 1,618 transactions with EV/EBITDA and valuation data |
| Contract clauses | 5,297 extracted and benchmarked clauses |
| Operators tracked | 700+ infrastructure operators and concessionaires |
| Data sources | World Bank PPI, EU TED procurement, UK PFI, India PPPAC, IFC, EIB, EBRD, national PPP registries, listed fund reports, competition authority filings, daily press monitoring |
| Update frequency | Daily ingestion from public procurement databases, weekly fund report checks, daily news monitoring |
Data Fields
Each infrastructure concession record includes: name, country, region, sector, operator, grantor, concession start/end dates, duration, contract value, status, contract type, source, and for Advise-tier users: ownership history, financial metrics, and concession intelligence metadata.
Ownership Intelligence
Concessio tracks who currently owns every infrastructure concession through an event-sourced ownership layer. Sources include EU DG Competition merger decisions, UK CMA rulings, national competition authority filings, audited fund reports (HICL, BBGI, INPP, Transurban, Vinci, Ferrovial, and 30+ more), and daily infrastructure deal news monitoring. Each ownership event records acquirer, seller, stake percentage, transaction value, and source with confidence scoring.