Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in
All collectors

Exchange rate API

Finance & crypto · v1.1.0 · exchange_rates

$0.0002 / rate

$0.20 / 1K · pay per delivered rate

An exchange rate API that reads the European Central Bank's published reference rates through Frankfurter and returns one row per target currency: the rate from your base and the reference date. Choose the base currency, optionally the set of targets you care about, and pass a date to read a historical day instead of the latest — no key required.

$0.0002 per delivered rate · $2 free every month · Failed runs never billed

What it does

What an exchange rate API does

The ECB publishes one authoritative set of reference rates each working day, and this returns them row by row rather than as a single object keyed by currency code. A base and a list of symbols go in, a table of currency-and-rate comes out, which is the shape a conversion or a valuation column actually joins against.

The same call reaches back in time: pass a date and you get that day's reference rates, the basis for back-testing a conversion or valuing a historical position. Because this is ECB reference data it is a daily fixing rather than a live market tick — accurate for accounting and modelling, not for trading a spread.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
basestringnoBase currency (3-letter, default USD).
symbolsarraynoCurrencies to convert to (empty = all available).
datestringnoHistorical date YYYY-MM-DD (omit for latest).
max_resultsintegernoHow many currencies to deliver at most (1–50). You pay only for delivered currencies.

Outputs — 6 fields, one row per rate

What one rate looks like

Every delivered rate carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based position.
currencystringTarget currency code.
ratenumberRate from base to this currency.
basestring · nullableBase currency.
datestring · nullableReference date.
inverse_ratenumber · nullable1 unit of the target currency expressed in the base currency.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/exchange_rates/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/exchange_rates/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"base":"USD","max_results":40}'

Example response

POST /v1/scraper/collectors/exchange_rates/run
$ curl $QD/exchange_rates/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"base": "USD", "max_results": 40}'
{ "status": "done", "count": 40,
  "results": [
    {
      "currency": "…",
      "rate": …,
      "base": "…",
      "date": "…" } ],
  "cost": 0.008 }
# 40 rates × $0.0002 · nothing delivered, nothing charged

Try it

Exchange rates (Frankfurter/ECB), running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key
Exchange rate API: from base, QuanticData reads the exchange rate table and returns one row per rate with rate, base and date, at $0.0002 per delivered rate.
You send base and symbols; the run reads the source and comes back as rates with rank, currency and rate — 6 fields on every row — and you are billed $0.0002 for each rate actually delivered, nothing for a run that delivers none.
$0.0002 / rate10,000 rates on the free $2 every month
Semantic inputbase, symbols, date — no URL lists
Up to 50rates per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

Pricing

Exchange rate API pricing

$0.0002 per delivered rate. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 10,000 rates before you spend anything.

$0.0002per delivered rate$0.2 per 1,000 delivered rates
10,000 rateson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

What people build with the exchange rate API

Three shapes of work this endpoint was designed around.

Multi-currency billing

Pull the day's rates from your base currency and convert invoices or balances with one row per target, refreshed on whatever schedule your books need.

Historical valuation

Pass a date and value a past transaction at that day's ECB reference rate, so a restated figure uses the fixing that actually applied then.

Normalising to one currency

Join the currency rows onto a table of mixed-currency amounts to express them all in a single base for comparison.

Exchange rate API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
ShapeOne object keyed by currency codeOne row per currency, ready to join
Without a keySign up and manage a tokenKeyless, straight over ECB reference data
Historical dayA separate endpoint and formatThe same call with a date passed in

What people search for

Live autocomplete demand around Exchange rates (Frankfurter/ECB), pulled with our own Keyword ideas collector.

Exchange rate API: the POST to the exchange_rates collector, 40 rates delivered and the bill, 40 × $0.0002 = $0.008 in usage.cost_usd; zero rates would cost $0.
The same call you would paste into a terminal: a Bearer key, base, symbols and date in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many rates arrived and usage.cost_usd is $0.008, which is 40 × $0.0002. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the exchange rate API.

Something else? Ask us

Is this exchange rate API free and keyless?

Yes. It reads Frankfurter, a keyless service over the ECB's published reference rates, so you get currency rows back without a key or a per-call token to manage.

Can I get historical exchange rates?

Yes — pass date as YYYY-MM-DD and the rows carry that day's ECB reference rates rather than the latest, which is what a back-test or a restated figure needs.

Are these live market rates?

No. They are the ECB's daily reference rates — one authoritative fixing per working day — so they are right for billing, accounting and modelling, not for trading against a live bid-ask spread.

Is there a free exchange rate API?

Every account gets $2 of credit every month with no card, which is about 10,000 delivered rates on this endpoint at $0.0002 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.0002. A run capped at 50 rates — the maximum for this collector — costs $0.01 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Run the exchange rate API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Run in dashboard
Illustration: three coloured zones of the page that is read (Exchange rate table) turn into clean JSON with the fields rate, base and date; 6 fields on every row.