Getting Started

1. Get Your API Key

The CAPAdata API is available on Pro Plus and Provider subscription tiers. To generate an API key:

  1. Log in to your CAPAdata account
  2. Go to Account Settings
  3. Scroll to the Developer section
  4. Click "Create API Key" and give it a name
  5. 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

MethodEndpointDescription
GET/v1/providersReturns 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 uploads
  • latestQuarter - 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:

HeaderDescription
X-RateLimit-LimitMaximum requests per minute
X-RateLimit-RemainingRemaining requests in the current window
Retry-AfterSeconds to wait before retrying (only on 429 responses)

8. Error Responses

StatusMeaningAction
401Missing or invalid API keyCheck your x-api-key header
403Valid key but insufficient subscriptionUpgrade to Pro Plus or Provider tier
429Rate limit exceededWait 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.