---
title: "What are the rate limits of the fund data API?"
description: "Monthly requests per plan (5 to 10,000), a per-minute burst limit (10 to 600), the X-RateLimit and X-Burst headers on every response, and what a 429 with reason burst, quota_exhausted or overage_cap means."
canonical: https://fundfactsapi.com/answers/what-are-the-rate-limits-of-the-fund-data-api
published: 2026-09-12
updated: 2026-10-13
publisher: FundFacts API
---

# What are the rate limits of the fund data API?

**Short answer:** Two limits: a monthly allowance (Free 5, Starter 60, Pro 1,000, Scale 10,000 requests) and a burst limit per minute (10, 30, 120 and 600 respectively; 1,200 on Enterprise). Every response carries X-RateLimit-Limit / -Remaining / -Reset for the month and X-Burst-Limit / -Remaining for the minute. A 429 rate_limited response includes reason (burst, quota_exhausted or overage_cap) and Retry-After in seconds.

## Headers on every response

| Header | Meaning |
|---|---|
| `X-RateLimit-Limit` | Requests per month on your plan |
| `X-RateLimit-Remaining` | Left this month after this call (0 while on overage) |
| `X-RateLimit-Reset` | Unix time of the next monthly reset (first of the month, UTC) |
| `X-Burst-Limit` / `X-Burst-Remaining` | Requests allowed per minute, and how many are left |
| `Retry-After` | Only on 429: seconds to wait |

The same numbers are in the `quota` object of the JSON body.

## The 429 body

```json
{ "error": { "code": "rate_limited", "reason": "burst", "message": "…", "retryAfter": 42, "resetAt": "2026-10-01T00:00:00.000Z" } }
```

- `burst`: slow down; wait `Retry-After` (60 seconds at most).
- `quota_exhausted`: the monthly allowance is used and the plan has no overage (Free, Starter); wait for the reset or upgrade.
- `overage_cap`: Pro or Scale ran past the allowance up to the cap (two months' subscription); upgrade or wait.

For `quota_exhausted` and `overage_cap` the body also carries `upgrade`: the next plan up with its monthly allowance, price and URL, and `message` spells out what it gives, so a script or an agent can pass the offer on without knowing the price list.

## What is counted

One request per fund found on `/funds/{isin}`, `POST /funds`, `/portfolio` and `/overlap`; 5 per document on `/extract`; 1 or 2 per factsheet. `/search`, `/me`, `/changes` and the demo endpoint are free. Rejected calls (401, 429) and invalid ISINs are not counted.

## Client rules

Read `X-RateLimit-Remaining` and stop before zero; on 429 sleep `Retry-After`; never retry 4xx otherwise; retry `502 upstream_error` at most twice with a minute between. The SDKs do the burst retry for you.

## FAQ

### Are limits per key or per account?

Per account. Several keys on one account share the same monthly allowance and burst limit.

## About FundFacts API

FundFacts turns any fund or ETF ISIN into one dated factsheet (fees and KID costs, the 1–7 risk indicator, holdings, sector and country exposure, returns) read from the fund house's own documents: as a client-ready PDF under your firm's name for advisers and wealth managers, as JSON through its API for developers, or inside ChatGPT and Claude through its MCP server.

FundFacts works inside ChatGPT and Claude as a connector (a remote MCP server): ask about any fund or ETF by ISIN, ticker or name and the assistant answers from FundFacts' dated figures, fees, risk, holdings, exposure and returns, with fund cards, side-by-side comparisons, holdings overlap and portfolio look-through.

- Free API key, no card: https://fundfactsapi.com/signup
- Documentation: https://fundfactsapi.com/docs (OpenAPI: https://fundfactsapi.com/openapi.json)
- MCP server: https://fundfactsapi.com/api/mcp (set-up for every client: https://fundfactsapi.com/mcp-server)
- Pricing: https://fundfactsapi.com/pricing
- Site index for AI assistants: https://fundfactsapi.com/llms.txt
- Informational data, not investment advice.
