Exchange rates for any base currency, latest or on a past date (since 1999): about 30 European Central Bank reference currencies (published each working day around 16:00 CET) and about 115 more (African, Asian, Latin American...) from the National Bank of Poland's weekly table, crossed through the euro. Returns the rate date (the last publication on or before the requested date), each rate and its source.
Every response includes credits_used: the credits this call cost.
Parameters
name
type
description
base
string
Base currency (ISO code, default EUR). Example: USD
symbols
string
Currencies to return, comma-separated (default all). Example: EUR,GBP,JPY,INR
date
string
Date (YYYY-MM-DD, default latest).
sources
all | ecb
all (default: ECB currencies plus ~115 more from the National Bank of Poland's weekly table) or ecb (ECB reference currencies only).
import os, requests
res = requests.get(
"https://api.api.sh/fx/v1/rates",
params={"base": "USD"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json()
const url = new URL("https://api.api.sh/fx/v1/rates");
url.searchParams.set("base", "USD");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).
The fastest way to see the full response is the playground: it runs this endpoint with your account and shows the exact JSON.