SourceFinch Verified · Exchange rates
Euro foreign exchange reference rates, last 90 days
The European Central Bank's daily euro reference rates against about 30 currencies for the last 90 days, one record per business day with each currency's rate in units per euro.
- Healthy · 100% of observed runs successful
- Exchange rates
- European Central Bank
- European Union
- Publisher's public API
- 30 typed fields
Monitor this sourceAPI, CLI, SDK and MCP
Part of: Exchange-rate desk
At a glance
- Publisher
- European Central Bank · homepage
- Category
- Exchange rates
- Jurisdiction
- European Union
- Publisher updates
- Each TARGET business day, around 16:00 CET
- SourceFinch checks
- Daily by default
- Records per run
- 64 in the latest run
- Record key
date- Acquired from
- Publisher's public API:
https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml - Recipe
- v1.0.0, approved October 12, 2026
- Verified since
- October 12, 2026
- Last green run
- October 12, 2026
What the data contains
The European Central Bank publishes euro foreign exchange reference rates for about 30 currencies each TARGET business day at around 16:00 CET. The rates come from the daily concertation procedure between central banks across Europe, normally at 14:10 CET, and are published for information; the ECB strongly discourages using them for transactions. This source reads the ECB's 90-day reference rate file on each daily run and makes one record per business day, keyed by the reference date, with one numeric field per currency (units of that currency per 1 euro). A monitor reports each new business day's rates and any correction of a published day. The ECB suspended its rouble rate in March 2022, and a currency the ECB stops quoting shows as null. The data describes exchange rates and contains no personal data. SourceFinch is independent of the ECB.
Fields and types
Every record has these fields. The key field date identifies a record across runs, so changes are reported field by field.
| Field | Type | Description |
|---|---|---|
datekey | date | Reference date the rates were set (YYYY-MM-DD), one record per TARGET business day. The record key. |
usd | number, nullable | Euro reference rate for the U.S. dollar: units of USD per 1 euro. |
jpy | number, nullable | Euro reference rate for the Japanese yen: units of JPY per 1 euro. |
czk | number, nullable | Euro reference rate for the Czech koruna: units of CZK per 1 euro. |
dkk | number, nullable | Euro reference rate for the Danish krone: units of DKK per 1 euro. |
gbp | number, nullable | Euro reference rate for the pound sterling: units of GBP per 1 euro. |
huf | number, nullable | Euro reference rate for the Hungarian forint: units of HUF per 1 euro. |
pln | number, nullable | Euro reference rate for the Polish zloty: units of PLN per 1 euro. |
ron | number, nullable | Euro reference rate for the Romanian leu: units of RON per 1 euro. |
sek | number, nullable | Euro reference rate for the Swedish krona: units of SEK per 1 euro. |
chf | number, nullable | Euro reference rate for the Swiss franc: units of CHF per 1 euro. |
isk | number, nullable | Euro reference rate for the Icelandic krona: units of ISK per 1 euro. |
nok | number, nullable | Euro reference rate for the Norwegian krone: units of NOK per 1 euro. |
try | number, nullable | Euro reference rate for the Turkish lira: units of TRY per 1 euro. |
aud | number, nullable | Euro reference rate for the Australian dollar: units of AUD per 1 euro. |
brl | number, nullable | Euro reference rate for the Brazilian real: units of BRL per 1 euro. |
cad | number, nullable | Euro reference rate for the Canadian dollar: units of CAD per 1 euro. |
cny | number, nullable | Euro reference rate for the Chinese yuan renminbi: units of CNY per 1 euro. |
hkd | number, nullable | Euro reference rate for the Hong Kong dollar: units of HKD per 1 euro. |
idr | number, nullable | Euro reference rate for the Indonesian rupiah: units of IDR per 1 euro. |
ils | number, nullable | Euro reference rate for the Israeli shekel: units of ILS per 1 euro. |
inr | number, nullable | Euro reference rate for the Indian rupee: units of INR per 1 euro. |
krw | number, nullable | Euro reference rate for the South Korean won: units of KRW per 1 euro. |
mxn | number, nullable | Euro reference rate for the Mexican peso: units of MXN per 1 euro. |
myr | number, nullable | Euro reference rate for the Malaysian ringgit: units of MYR per 1 euro. |
nzd | number, nullable | Euro reference rate for the New Zealand dollar: units of NZD per 1 euro. |
php | number, nullable | Euro reference rate for the Philippine peso: units of PHP per 1 euro. |
sgd | number, nullable | Euro reference rate for the Singapore dollar: units of SGD per 1 euro. |
thb | number, nullable | Euro reference rate for the Thai baht: units of THB per 1 euro. |
zar | number, nullable | Euro reference rate for the South African rand: units of ZAR per 1 euro. |
Sample output
The first 5 of 64 records from SourceFinch's own run on October 12, 2026, exactly as delivered.
| Field | Record 1 | Record 2 | Record 3 | Record 4 | Record 5 |
|---|---|---|---|---|---|
date | 2026-10-12 | 2026-10-09 | 2026-10-08 | 2026-10-07 | 2026-10-06 |
usd | 1.1181 | 1.1206 | 1.1186 | 1.1177 | 1.1269 |
jpy | 177.33 | 177.34 | 177.05 | 176.85 | 178.15 |
czk | 24.391 | 24.369 | 24.403 | 24.427 | 24.405 |
dkk | 7.4748 | 7.4751 | 7.4739 | 7.4745 | 7.4747 |
gbp | 0.84478 | 0.84763 | 0.84698 | 0.84645 | 0.8488 |
huf | 365.13 | 365.08 | 366.25 | 366.75 | 364.95 |
pln | 4.385 | 4.3835 | 4.3753 | 4.3825 | 4.365 |
ron | 5.337 | 5.3406 | 5.3434 | 5.3528 | 5.351 |
sek | 11.1965 | 11.1675 | 11.194 | 11.224 | 11.2425 |
chf | 0.9312 | 0.9313 | 0.9326 | 0.9309 | 0.9359 |
isk | 136.4 | 136.8 | 137 | 137 | 137.2 |
nok | 10.6955 | 10.7155 | 10.717 | 10.712 | 10.778 |
try | 55.1635 | 55.1033 | 55.0523 | 54.9822 | 55.4196 |
aud | 1.6032 | 1.6052 | 1.611 | 1.6079 | 1.614 |
brl | 5.5819 | 5.6086 | 5.6118 | 5.5953 | 5.5991 |
cad | 1.5946 | 1.5942 | 1.5953 | 1.5931 | 1.6058 |
cny | 7.4832 | 7.4992 | 7.4972 | 7.4937 | 7.5554 |
hkd | 8.7743 | 8.794 | 8.7783 | 8.7722 | 8.8438 |
idr | 20036.18 | 20036.94 | 20045.31 | 19974.25 | 20104.8 |
ils | 3.432 | 3.426 | 3.4423 | 3.429 | 3.4348 |
inr | 107.086 | 108.3965 | 108.2635 | 108.1165 | 108.6615 |
krw | 1490.53 | 1503.27 | 1502.79 | 1496.25 | 1508.67 |
mxn | 20.5081 | 20.395 | 20.1486 | 20.2236 | 20.2217 |
myr | 4.5663 | 4.5777 | 4.5768 | 4.5692 | 4.6034 |
nzd | 1.9968 | 1.9961 | 2.0014 | 1.9977 | 2.0061 |
php | 70.169 | 70.397 | 70.475 | 70.203 | 70.702 |
sgd | 1.4314 | 1.4348 | 1.434 | 1.4311 | 1.4392 |
thb | 37.585 | 37.574 | 37.68 | 37.661 | 37.836 |
zar | 18.4945 | 18.527 | 18.6252 | 18.6539 | 18.5829 |
Sample as JSON
[
{
"aud": 1.6032,
"brl": 5.5819,
"cad": 1.5946,
"chf": 0.9312,
"cny": 7.4832,
"czk": 24.391,
"dkk": 7.4748,
"gbp": 0.84478,
"hkd": 8.7743,
"huf": 365.13,
"idr": 20036.18,
"ils": 3.432,
"inr": 107.086,
"isk": 136.4,
"jpy": 177.33,
"krw": 1490.53,
"mxn": 20.5081,
"myr": 4.5663,
"nok": 10.6955,
"nzd": 1.9968,
"php": 70.169,
"pln": 4.385,
"ron": 5.337,
"sek": 11.1965,
"sgd": 1.4314,
"thb": 37.585,
"try": 55.1635,
"usd": 1.1181,
"zar": 18.4945,
"date": "2026-10-12"
},
{
"aud": 1.6052,
"brl": 5.6086,
"cad": 1.5942,
"chf": 0.9313,
"cny": 7.4992,
"czk": 24.369,
"dkk": 7.4751,
"gbp": 0.84763,
"hkd": 8.794,
"huf": 365.08,
"idr": 20036.94,
"ils": 3.426,
"inr": 108.3965,
"isk": 136.8,
"jpy": 177.34,
"krw": 1503.27,
"mxn": 20.395,
"myr": 4.5777,
"nok": 10.7155,
"nzd": 1.9961,
"php": 70.397,
"pln": 4.3835,
"ron": 5.3406,
"sek": 11.1675,
"sgd": 1.4348,
"thb": 37.574,
"try": 55.1033,
"usd": 1.1206,
"zar": 18.527,
"date": "2026-10-09"
},
{
"aud": 1.611,
"brl": 5.6118,
"cad": 1.5953,
"chf": 0.9326,
"cny": 7.4972,
"czk": 24.403,
"dkk": 7.4739,
"gbp": 0.84698,
"hkd": 8.7783,
"huf": 366.25,
"idr": 20045.31,
"ils": 3.4423,
"inr": 108.2635,
"isk": 137,
"jpy": 177.05,
"krw": 1502.79,
"mxn": 20.1486,
"myr": 4.5768,
"nok": 10.717,
"nzd": 2.0014,
"php": 70.475,
"pln": 4.3753,
"ron": 5.3434,
"sek": 11.194,
"sgd": 1.434,
"thb": 37.68,
"try": 55.0523,
"usd": 1.1186,
"zar": 18.6252,
"date": "2026-10-08"
},
{
"aud": 1.6079,
"brl": 5.5953,
"cad": 1.5931,
"chf": 0.9309,
"cny": 7.4937,
"czk": 24.427,
"dkk": 7.4745,
"gbp": 0.84645,
"hkd": 8.7722,
"huf": 366.75,
"idr": 19974.25,
"ils": 3.429,
"inr": 108.1165,
"isk": 137,
"jpy": 176.85,
"krw": 1496.25,
"mxn": 20.2236,
"myr": 4.5692,
"nok": 10.712,
"nzd": 1.9977,
"php": 70.203,
"pln": 4.3825,
"ron": 5.3528,
"sek": 11.224,
"sgd": 1.4311,
"thb": 37.661,
"try": 54.9822,
"usd": 1.1177,
"zar": 18.6539,
"date": "2026-10-07"
},
{
"aud": 1.614,
"brl": 5.5991,
"cad": 1.6058,
"chf": 0.9359,
"cny": 7.5554,
"czk": 24.405,
"dkk": 7.4747,
"gbp": 0.8488,
"hkd": 8.8438,
"huf": 364.95,
"idr": 20104.8,
"ils": 3.4348,
"inr": 108.6615,
"isk": 137.2,
"jpy": 178.15,
"krw": 1508.67,
"mxn": 20.2217,
"myr": 4.6034,
"nok": 10.778,
"nzd": 2.0061,
"php": 70.702,
"pln": 4.365,
"ron": 5.351,
"sek": 11.2425,
"sgd": 1.4392,
"thb": 37.836,
"try": 55.4196,
"usd": 1.1269,
"zar": 18.5829,
"date": "2026-10-06"
}
]Evidence behind every value
- Each run keeps the publisher's exact response, hashed with SHA-256. This sample came from a response with hash
99c778b3ea0e026780f57ce4287fd28f0a9810b962e8dc19d803e9ce432f17b6. - Every value records where it came from in that response: a CSS path into the retained capture.
- Each run gets a signed manifest (Ed25519) timestamped by an RFC 3161 authority: this run's manifest hash is
39985e39b4b84516df11b6206a3ed5e78e7694b2a90dc2880fa07c114558791d, timestamped October 12, 2026. - The compliance state at capture is recorded with the evidence: robots.txt hash and verdict, AI-preference signals, crawler identity and the usage rights below.
- Download any run as an evidence bundle (WACZ) and check it offline, without trusting SourceFinch:
sourcefinch verify-bundle run.wacz.
Terms posture and usage rights
- Terms
- Automated access permitted · publisher's terms
- robots.txt
- Allows this path · SHA-256
8e55738f64103300… - AI-preference signals
- None observed at review
- Public record
- No
- Reviewed
- October 12, 2026; next review April 12, 2027
- Licence basis
- Publisher's terms of use
- Commercial use
- Allowed
- Redistribution
- Allowed
- Attribution
- Required (text below)
The European Central Bank's disclaimer and copyright notice lets users make free use of information obtained directly from its website, provided it appears accurately and the ECB is cited as the source; anyone selling documents that include the information must tell buyers it is available free of charge from the ECB's website, and modifications must be stated. Papers bearing their authors' names are excepted. The ECB says the reference rates are for information only and discourages their use for transactions. www.ecb.europa.eu/robots.txt allows the reference rate files, and they need no key.
Source: European Central Bank (euro foreign exchange reference rates), reformatted by SourceFinch. The rates are available free of charge from www.ecb.europa.eu. SourceFinch is independent of and not endorsed by the ECB.
Usage rights travel with every record SourceFinch delivers (API, exports, webhooks and evidence bundles). They are our documented understanding of the publisher's stated terms, not legal advice.
Reliability
- Runs, last 30 days
- 1
- Green
- 100%
- Failed
- 0
- Median run time
- 2.2 s
- Latest run
- success, October 12, 2026
Measured on completed runs of this recipe version across SourceFinch, anonymized, within a rolling 30-day window. First successful observation: October 12, 2026. A new recipe has only the history collected since that date; this is not a 30-day uptime guarantee.
Use it
Every surface creates the same monitor from this Verified recipe. Monitors keep record history, report field-level changes and deliver by webhook, export or email. You confirm you have the right to collect the source (rights: true).
Console
Open this recipe in the console: it preserves the reviewed URL, fields and record key. Review the latest captured sample, confirm source rights, and choose a schedule before creating your monitor.
Portable recipe
Copy into the console's Import or share a recipe panel to customize fields, types and schedules. This configuration contains no captured records or workspace IDs.
{
"schema": "sourcefinch/source@1",
"name": "Euro foreign exchange reference rates, last 90 days",
"url": "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml",
"recipe": {
"mode": "http",
"format": "xml",
"items": "Cube[time]",
"fields": {
"aud": "Cube[currency=\"AUD\"]@rate",
"brl": "Cube[currency=\"BRL\"]@rate",
"cad": "Cube[currency=\"CAD\"]@rate",
"chf": "Cube[currency=\"CHF\"]@rate",
"cny": "Cube[currency=\"CNY\"]@rate",
"czk": "Cube[currency=\"CZK\"]@rate",
"dkk": "Cube[currency=\"DKK\"]@rate",
"gbp": "Cube[currency=\"GBP\"]@rate",
"hkd": "Cube[currency=\"HKD\"]@rate",
"huf": "Cube[currency=\"HUF\"]@rate",
"idr": "Cube[currency=\"IDR\"]@rate",
"ils": "Cube[currency=\"ILS\"]@rate",
"inr": "Cube[currency=\"INR\"]@rate",
"isk": "Cube[currency=\"ISK\"]@rate",
"jpy": "Cube[currency=\"JPY\"]@rate",
"krw": "Cube[currency=\"KRW\"]@rate",
"mxn": "Cube[currency=\"MXN\"]@rate",
"myr": "Cube[currency=\"MYR\"]@rate",
"nok": "Cube[currency=\"NOK\"]@rate",
"nzd": "Cube[currency=\"NZD\"]@rate",
"php": "Cube[currency=\"PHP\"]@rate",
"pln": "Cube[currency=\"PLN\"]@rate",
"ron": "Cube[currency=\"RON\"]@rate",
"sek": "Cube[currency=\"SEK\"]@rate",
"sgd": "Cube[currency=\"SGD\"]@rate",
"thb": "Cube[currency=\"THB\"]@rate",
"try": "Cube[currency=\"TRY\"]@rate",
"usd": "Cube[currency=\"USD\"]@rate",
"zar": "Cube[currency=\"ZAR\"]@rate",
"date": "@time"
},
"required": [
"date"
],
"types": {
"aud": "number",
"brl": "number",
"cad": "number",
"chf": "number",
"cny": "number",
"czk": "number",
"date": "date",
"dkk": "number",
"gbp": "number",
"hkd": "number",
"huf": "number",
"idr": "number",
"ils": "number",
"inr": "number",
"isk": "number",
"jpy": "number",
"krw": "number",
"mxn": "number",
"myr": "number",
"nok": "number",
"nzd": "number",
"php": "number",
"pln": "number",
"ron": "number",
"sek": "number",
"sgd": "number",
"thb": "number",
"try": "number",
"usd": "number",
"zar": "number"
}
},
"schedule": "daily",
"key_field": "date"
}source.json
The request body used by the API, CLI and SDK examples.
{
"name": "Euro foreign exchange reference rates, last 90 days",
"url": "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml",
"recipe": {
"mode": "http",
"format": "xml",
"items": "Cube[time]",
"fields": {
"aud": "Cube[currency=\"AUD\"]@rate",
"brl": "Cube[currency=\"BRL\"]@rate",
"cad": "Cube[currency=\"CAD\"]@rate",
"chf": "Cube[currency=\"CHF\"]@rate",
"cny": "Cube[currency=\"CNY\"]@rate",
"czk": "Cube[currency=\"CZK\"]@rate",
"dkk": "Cube[currency=\"DKK\"]@rate",
"gbp": "Cube[currency=\"GBP\"]@rate",
"hkd": "Cube[currency=\"HKD\"]@rate",
"huf": "Cube[currency=\"HUF\"]@rate",
"idr": "Cube[currency=\"IDR\"]@rate",
"ils": "Cube[currency=\"ILS\"]@rate",
"inr": "Cube[currency=\"INR\"]@rate",
"isk": "Cube[currency=\"ISK\"]@rate",
"jpy": "Cube[currency=\"JPY\"]@rate",
"krw": "Cube[currency=\"KRW\"]@rate",
"mxn": "Cube[currency=\"MXN\"]@rate",
"myr": "Cube[currency=\"MYR\"]@rate",
"nok": "Cube[currency=\"NOK\"]@rate",
"nzd": "Cube[currency=\"NZD\"]@rate",
"php": "Cube[currency=\"PHP\"]@rate",
"pln": "Cube[currency=\"PLN\"]@rate",
"ron": "Cube[currency=\"RON\"]@rate",
"sek": "Cube[currency=\"SEK\"]@rate",
"sgd": "Cube[currency=\"SGD\"]@rate",
"thb": "Cube[currency=\"THB\"]@rate",
"try": "Cube[currency=\"TRY\"]@rate",
"usd": "Cube[currency=\"USD\"]@rate",
"zar": "Cube[currency=\"ZAR\"]@rate",
"date": "@time"
},
"required": [
"date"
],
"types": {
"aud": "number",
"brl": "number",
"cad": "number",
"chf": "number",
"cny": "number",
"czk": "number",
"dkk": "number",
"gbp": "number",
"hkd": "number",
"huf": "number",
"idr": "number",
"ils": "number",
"inr": "number",
"isk": "number",
"jpy": "number",
"krw": "number",
"mxn": "number",
"myr": "number",
"nok": "number",
"nzd": "number",
"php": "number",
"pln": "number",
"ron": "number",
"sek": "number",
"sgd": "number",
"thb": "number",
"try": "number",
"usd": "number",
"zar": "number",
"date": "date"
}
},
"key_field": "date",
"schedule": "daily",
"rights": true,
"catalog": {
"slug": "ecb-euro-foreign-exchange-reference-rates",
"version_id": "8aac4f83-4b68-4a87-898e-d3438c33b043"
}
}REST API
Create an API key under Console → API keys. Reference: /docs/api.
# the Verified entry (fields, recipe, sample, terms) as JSON
curl https://sourcefinch.com/v1/catalog/ecb-euro-foreign-exchange-reference-rates -H "Authorization: Bearer $SOURCEFINCH_API_KEY"
# create the monitor from source.json (below)
curl -X POST https://sourcefinch.com/v1/sources \
-H "Authorization: Bearer $SOURCEFINCH_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d @source.json
# then run it now (later runs follow the schedule)
curl -X POST https://sourcefinch.com/v1/sources/$SOURCE_ID/runs \
-H "Authorization: Bearer $SOURCEFINCH_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"CLI
The sourcefinch CLI is not on npm yet; see /docs/cli.
sourcefinch login
sourcefinch catalog get ecb-euro-foreign-exchange-reference-rates --source-json > source.json
sourcefinch sources create --file source.json
sourcefinch runs create $SOURCE_ID --wait
sourcefinch records $SOURCE_IDTypeScript SDK
The SDK is not on npm yet; see /docs/sdk.
import { SourceFinch } from "@sourcefinch/sdk";
const sf = new SourceFinch({ apiKey: process.env.SOURCEFINCH_API_KEY });
const entry = await sf.catalog.get("ecb-euro-foreign-exchange-reference-rates");
const source = await sf.sources.create({
catalog: { slug: entry.slug, version_id: entry.recipe.version_id },
name: entry.name.slice(0, 100),
url: entry.acquisition_path.endpoint,
recipe: entry.recipe.definition,
key_field: entry.recipe.key_field,
schedule: entry.recipe.schedule,
rights: true, // you confirm you have the right to collect this source
});
const run = await sf.runs.wait((await sf.runs.create(source.id)).id);
console.log(run.status);MCP
Remote MCP server with OAuth; see /docs/mcp.
claude mcp add --transport http sourcefinch https://sourcefinch.com/mcp
# then ask your agent:
"Use SourceFinch to monitor Euro foreign exchange reference rates, last 90 days: get_catalog_source ecb-euro-foreign-exchange-reference-rates,
then create_source with its create_source_args (dry run first), then run_source."Pricing
Each check is one run, whatever the number of records, and failed runs are free. On its default daily schedule this source uses about 30 runs a month, which fits the Free plan's 300 runs. It uses HTTP acquisition, so no browser runs are needed. See plans.
Guides using this source
Related sources
More from European Central Bank and in exchange rates.
SourceFinch is independent and is not affiliated with or endorsed by European Central Bank. This page describes euro foreign exchange reference rates, last 90 days as SourceFinch acquires it.