Currency Exchange Rates Scraper: ECB Daily & Historical avatar

Currency Exchange Rates Scraper: ECB Daily & Historical

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Currency Exchange Rates Scraper: ECB Daily & Historical

Currency Exchange Rates Scraper: ECB Daily & Historical

Currency exchange rates from the free ECB euro reference rates (optional Frankfurter API): latest, a date or a date range, any base currency via EUR cross rates, amount conversion. About 30 currencies, keyless, official sources.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Aadam Ahmed

Aadam Ahmed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Security

Limited permissions

Share

Currency Exchange Rates Scraper: ECB Daily and Historical Rates

Get euro foreign exchange reference rates from the European Central Bank, latest, for one date or a date range, converted to any base currency via EUR cross rates, with optional amount conversion. Free, keyless official source; optional Frankfurter API (ECB-based). One row per date and currency pair.

What you get

Rows of {date, base, quote, rate, amount, converted, source} for about 30 currencies. For a date that has no publication, date is the previous business day actually used and requested_date shows what you asked for.

Use cases

  • Convert invoices, prices or reports into a reporting currency at the official ECB reference rate of a given day.
  • Pull historical rate series for a base currency (for example USD to EUR, GBP, JPY) for accounting, research or dashboards.
  • Give an AI agent a trustworthy, source-labelled exchange rate (callable through Apify's MCP server, https://mcp.apify.com).
  • Schedule a daily run to keep a spreadsheet or database of rates current.

What it does

  • Primary source, ecb: reads the ECB's public files eurofxref-daily.xml (latest), eurofxref-hist-90d.xml (last 90 days) and eurofxref-hist.xml (full history since 4 January 1999) from https://www.ecb.europa.eu/stats/eurofxref/. The ECB's files are euro-based: each rate is units of currency per 1 EUR.
  • Cross rates: for another base, rate(base to quote) = rate(EUR to quote) / rate(EUR to base). The conversion is calculated here, not published by the ECB, and is rounded to 10 significant digits.
  • Optional source, frankfurter: the free Frankfurter API (https://api.frankfurter.app), which republishes ECB data and converts bases server-side. For long ranges it may return sampled (weekly or monthly) points; see its documentation.
  • Polite by design: sequential requests at most 1 per second, an identifying User-Agent, retries with exponential backoff on HTTP 429 and 5xx, and clear failure messages. No proxies or workarounds.

Input

FieldMeaning
modelatest (default), date or range
baseISO 4217 code to convert from (default EUR)
targetsCodes to convert to; empty means every currency published that day
dateDate mode, YYYY-MM-DD (previous business day is used if none was published)
startDate, endDateRange mode; empty end date means up to the latest day
amountAmount of base currency to convert (default 1)
sourceecb (default) or frankfurter
maxRowsSafety cap on rows (default 1,000)

Example input and output

Input (bundled test-input.json): USD base, targets EUR, GBP and JPY, range 2026-09-01 to 2026-09-05, amount 100.

The record below uses illustrative values only (not a real quote); real rates are whatever the ECB published for that day. Our tests use synthetic files in the ECB XML format.

{
"date": "2026-09-01", "requested_date": null, "base": "USD", "quote": "GBP",
"rate": 0.75, "amount": 100, "converted": 75, "source": "ecb"
}

Limitations (read before relying on it)

  • Publication schedule: the ECB publishes around 16:00 CET on TARGET business days. There are no rates for weekends and TARGET holidays, so a range returns only business days and a single date falls back to the previous one. Rates for "today" do not exist before the afternoon publication.
  • About 30 currencies only. The set is the ECB's and changes over time (some currencies were discontinued). A requested currency that the ECB does not publish makes the run fail with the list of available codes; nothing is estimated.
  • The UAE dirham (AED) is not published by the ECB, nor are the other Gulf currencies. This actor does not fake them and does not compute AED from the USD peg; if you need AED, use a source that publishes it.
  • Reference rates are for information only, not for transactions or settlement. They are not tradeable, bid/ask or intraday rates, and cross rates are derived. Check the ECB's terms of use for reuse and attribution; this is not financial advice.
  • Rounding: rates carry up to 10 significant digits; converted amounts are the rate times the amount, with the same precision.
  • Not affiliated with the European Central Bank or Frankfurter.

Pricing (pay per result)

Pay-per-event with Apify's built-in dataset-item event: each row (one date and currency pair) is one result. The live price is set in Apify Console and shown on the Store page. Planning figure in our notes: USD 1.00 per 1,000 results (not yet published).

FAQ

Do I need an API key? No.

Why is the date different from the one I asked for? The ECB did not publish that day (weekend or holiday), so the previous business day is returned; requested_date keeps your date.

Can I get AED, SAR or other Gulf currencies? Not from the ECB. See limitations.

How is USD to GBP calculated? (GBP per EUR) / (USD per EUR) on the same date.

Which source should I use? ecb is the primary and reads the official files. Use frankfurter if you prefer its server-side conversion.