Getting Started
1. Get Your API Key
The CAPAdata API is available on Pro Plus and Provider subscription tiers. To generate an API key:
- Log in to your CAPAdata account
- Go to Account Settings
- Scroll to the Developer section
- Click "Create API Key" and give it a name
- Copy the key immediately - it will only be shown once
Store your API key securely. Do not share it or commit it to source control. If a key is compromised, delete it from your account page and create a new one.
2. Authentication
All requests must include your API key in the x-api-key header.
GET /api/v1/providers HTTP/1.1 Host: capadata.co.uk x-api-key: your-api-key-here
3. Base URL
https://capadata.co.uk/api/v1
All endpoints are versioned. The current version is v1.
4. Available Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /v1/providers | Returns all provider, fund, and fund bracket data |
5. Response Format
The API returns JSON. The response is wrapped in an object with metadata:
{
"dataLastUpdated": "2026-03-19T13:38:37.000Z",
"latestQuarter": "Q4 2025",
"capaFund": {
"name": "CAPA",
"fundBrackets": [...]
},
"providers": [
{
"name": "Aegon",
"slug": "aegon",
"funds": [
{
"name": "Aegon Workplace Default",
"fundBrackets": [...]
}
],
...
}
]
}dataLastUpdated- ISO 8601 timestamp of when the data was last updated, including any corrective uploadslatestQuarter- the most recent quarter covered by the data (e.g. "Q4 2025")capaFund- the CAPA average fund, a composite benchmark with the same structure as a provider fund (see Data Dictionary)providers- array of provider objects (see Data Dictionary)
6. Code Examples
curl
curl -H "x-api-key: your-api-key-here" \ https://capadata.co.uk/api/v1/providers
Python
import requests
response = requests.get(
"https://capadata.co.uk/api/v1/providers",
headers={"x-api-key": "your-api-key-here"}
)
data = response.json()
print(f"Data last updated: {data['dataLastUpdated']}")
print(f"Latest quarter: {data['latestQuarter']}")
for provider in data["providers"]:
print(f"{provider['name']} - {len(provider['funds'])} funds")JavaScript / Node.js
const response = await fetch(
"https://capadata.co.uk/api/v1/providers",
{ headers: { "x-api-key": "your-api-key-here" } }
);
const data = await response.json();
console.log("Data last updated:", data.dataLastUpdated);
console.log("Latest quarter:", data.latestQuarter);
data.providers.forEach(provider => {
console.log(provider.name, "-", provider.funds.length, "funds");
});7. Rate Limits
API requests are rate limited to 100 requests per minute per API key.
Rate limit information is included in the response headers:
| Header | Description |
|---|---|
X-RateLimit-Limit | Maximum requests per minute |
X-RateLimit-Remaining | Remaining requests in the current window |
Retry-After | Seconds to wait before retrying (only on 429 responses) |
8. Error Responses
| Status | Meaning | Action |
|---|---|---|
| 401 | Missing or invalid API key | Check your x-api-key header |
| 403 | Valid key but insufficient subscription | Upgrade to Pro Plus or Provider tier |
| 429 | Rate limit exceeded | Wait for the Retry-After duration and retry |
9. Data Refresh Schedule
Provider performance data is updated quarterly, aligned with provider reporting periods. Corrective updates may be applied between quarters as providers revise their submissions.
The dataLastUpdated field in the response always reflects the most recent update, including any corrections. The latestQuarter field indicates which quarter the data covers.
10. OpenAPI Specification
A machine-readable OpenAPI 3.0 specification is available for code generation and tooling:
Need Help?
Contact us at info@capadata.co.uk if you have questions about the API or need support with your integration.
