Cross-bank comparison: each covered source's most recent official rate for the requested pair in a single call, with min/max/median and spread in basis points. Pairs a bank does not publish directly are cross-computed via that bank's own table only (never mixing banks) and flagged derived. Sources whose newest publication is older than 30 days are flagged stale and excluded from the spread stats. Banks that cannot produce the pair are skipped. Methodology: https://allratestoday.com/official-rates-methodology/. Available on all plans.
Query parameters
-
Source currency, 3-letter code
Minimum length is
3, maximum length is3. -
Target currency, 3-letter code
Minimum length is
3, maximum length is3. -
Rate type to return when the pair is requested with source+target on a two-sided table (buy/sell banks such as TCMB, BCB, BI, CBN). Values are the bank's own type labels as shown in its full table, e.g. buy or sell. Without it the pair resolves reference, mid, import, buy, sell in that order and rate_type says which side was used. A type the bank does not publish returns 404 listing the available types.
-
Response format (default json). csv is UTF-8 with a BOM; xlsx is a real Excel workbook with typed dates and numbers; xml mirrors the JSON fields.
Values are
json,csv,xml, orxlsx. Default value isjson.
Responses
-
Latest rate for the pair from every source that can produce it
-
Invalid or missing parameters
-
Authentication required — provide an API key via
Authorization: Bearer art_live_...(free keys at https://allratestoday.com/register) -
No covered source publishes rates covering the requested pair
-
Monthly request limit exceeded (X-Monthly-Limit / X-Monthly-Used / X-Monthly-Resets headers included)
curl \
--request GET 'https://allratestoday.com/api/v1/central-banks/rates?source=USD&target=EUR' \
--header "Authorization: Bearer $ACCESS_TOKEN"
{
"source": "USD",
"target": "EUR",
"as_of": "2026-08-10",
"count": 41,
"banks": [
{
"code": "ecb",
"name": "European Central Bank",
"rate": 0.9214,
"rate_date": "2026-08-10",
"rate_type": "reference",
"derived": true,
"method": "inverse",
"stale": false
}
],
"stats": {
"min": 0.9187,
"max": 0.9241,
"median": 0.9214,
"spread_bps": 58.6,
"banks_in_stats": 38
},
"methodology": "https://allratestoday.com/official-rates-methodology/",
"disclaimer": "string"
}
{
"error": "string",
"hint": "string"
}
{
"error": "string",
"hint": "string"
}
{
"error": "string",
"hint": "string"
}
{
"error": "Request limit exceeded",
"used": 42,
"limit": 42,
"plan": "free",
"resets_at": "2026-05-04T09:42:00Z",
"upgrade_url": "https://allratestoday.com/pricing"
}