How to Scrape ECB Exchange Rates
Export official ECB daily and monthly foreign-exchange observations without building SDMX requests.

Official exchange rates are easy to view but awkward to collect repeatedly when every currency and observation date lives inside a structured series. The ECB Exchange Rates Scraper converts those series into ordinary dataset rows that work in spreadsheets, databases, and scheduled workflows.
Request several currencies together
Start with the smallest useful input. Currency values are ISO codes, the base is EUR, and the default frequency is daily.
{"currencies":["USD","GBP","JPY"],"frequency":"D","maxResultsPerCurrency":10}Each row states the observation date, currency, official rate, inverse rate, status, and ECB source. Preserve both the date and currency as a composite key. A value without those fields cannot be compared safely later.
For a historical extract, add startDate and endDate. Without dates, the Actor asks for the latest observations, which is usually better for monitoring. Weekends and ECB holidays do not create daily observations, so ten results can cover more than ten calendar days.
Validate a first run by opening the ECB source and comparing two currencies and dates. Then save the input as an Apify Task. Send completed datasets to your warehouse instead of overwriting them if you need a time series. The calculated eur_per_unit field is convenient for reporting, but retain rate_per_eur as the authoritative published direction. This creates a small, auditable pipeline with an official source rather than a copied web table.
Document the selected frequency beside every export so monthly and daily observations are never combined accidentally during later analysis or reconciliation.
Frequently asked questions
Is an ECB API key required?
No. The official bounded data endpoint used here is credential-free.
What does rate_per_eur mean?
It is the number of foreign-currency units quoted for one euro.
Related
100 free credits, no credit card.
About 30 real searches. Add the MCP to Claude or Cursor in two minutes.