Skip to main content

Rate Limits

Each SDK call or direct REST call counts as one API request. Cache misses also count against origin-miss budgets.

Limits

TierRequests/minuteOrigin misses/minute
Anonymous IP1200120
X-Gfin-Contact / SDK contact=6000600
API key300003000

Anonymous usage works without signup. For scripts, services, notebooks, and agents, declare a contact identity to use the higher public tier:

curl "https://api.gfin.dev/v1/quote/AAPL/summary?exchange=NASDAQ" \
-H "X-Gfin-Contact: you@example.com"
from gfin import Client

client = Client(contact="you@example.com")

429 Shape

{
"error": {
"code": "rate_limited",
"message": "Request limit exceeded."
},
"rate_limit": {
"tier": "anonymous",
"scope": "request",
"retry_after_seconds": 42
}
}

429 responses also include a Retry-After header.

For SDK exceptions and retry guidance across all status codes, see Errors.

Origin Misses

Normal cached reads are cheaper than refreshes. A request with refresh=1 bypasses gfin cache and spends origin-miss quota:

curl "https://api.gfin.dev/v1/search?q=apple&refresh=1"

Use refresh for explicit user actions, not routine polling.