# ECB Exchange Rates Scraper - Euro FX Reference Rates (`ninhothedev/ecb-exchange-rates-scraper`) Actor

$0.5/1K 🔥 Fast ECB exchange rates scraper! Official euro FX reference rates for 40+ currencies, current & historical. No key. JSON, CSV, Excel or API in seconds. Pull thousands of rates for finance & accounting ⚡

- **URL**: https://apify.com/ninhothedev/ecb-exchange-rates-scraper.md
- **Developed by:** [ninhothedev](https://apify.com/ninhothedev) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## ECB Exchange Rates Scraper 💶

**Scrape the official European Central Bank (ECB) euro foreign exchange reference rates** for USD, GBP, JPY, CHF and 40+ currencies — latest or historical daily rates, in clean structured JSON. No API key, no login, datacenter-proxy-friendly, blazing fast.

The ECB publishes the euro reference exchange rates every business day around 16:00 CET. This Actor pulls them straight from the official **ECB Data Portal** and turns them into ready-to-use dataset records you can push into a spreadsheet, database, BI dashboard, or accounting workflow.

***

### ✨ Features

- 🏦 **Official source** — rates come directly from the ECB Data Portal (`data-api.ecb.europa.eu`), the same numbers used across the EU for reporting.
- 💱 **40+ currencies** — USD, GBP, JPY, CHF, AUD, CAD, CNY, HKD, NOK, SEK, PLN, CZK, and many more. Leave the list empty to grab **every** available currency.
- 🕒 **Latest or historical** — return just today's rate, or up to the last **100 daily observations** per currency for time series.
- ⚡ **Fast & cheap** — a single clean CSV request; runs on **512 MB** RAM and finishes in seconds on datacenter proxies (or no proxy at all).
- 🧱 **Structured output** — every record has `currency`, `date`, `rate`, `base`, `frequency`, `scraped_at`.
- 🔁 **Schedule it** — run daily to build your own historical FX archive automatically.

***

### 📥 Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | select | `rates` | What to scrape. Currently the euro reference rates. |
| `currencies` | array | `["USD","GBP","JPY","CHF"]` | ISO 4217 codes. **Empty = all** available currencies. |
| `observations` | integer | `1` | Recent daily observations per currency (1–100). `1` = latest only. |
| `maxItems` | integer | `500` | Max records pushed to the dataset (1–5000). |

#### Example input

```json
{
  "mode": "rates",
  "currencies": ["USD", "GBP", "JPY", "CHF"],
  "observations": 1,
  "maxItems": 500
}
```

***

### 📤 Output

Each item is one currency on one date. The `rate` is **units of that currency per 1 EUR**.

```json
{
  "currency": "USD",
  "date": "2026-07-17",
  "rate": 1.1435,
  "base": "EUR",
  "frequency": "D",
  "scraped_at": "2026-07-19T11:29:40.200041+00:00"
}
```

So `1 EUR = 1.1435 USD`. To convert **X USD → EUR**: `X / 1.1435`. To cross-rate two currencies, divide their per-EUR rates (e.g. `GBP per USD = rate_GBP / rate_USD`).

***

### 💡 Use cases

- **Finance & treasury** — daily mark-to-market and month-end revaluation against official ECB rates.
- **Accounting & invoicing** — book foreign-currency invoices at the compliant reference rate for the invoice date.
- **Fintech & apps** — power currency converters and pricing with an authoritative euro base.
- **Dashboards & BI** — feed Power BI, Looker, Google Sheets, or a database with a clean FX feed.
- **Research & backtesting** — build a historical euro FX time series across dozens of currencies.

***

### 💰 Pricing

This Actor is inexpensive to run — roughly **~$0.50 per 1,000 runs** on the Apify platform, since each run is a single lightweight request on 512 MB RAM. Actual cost depends on your plan and how many observations/currencies you fetch. Schedule it daily and your whole-year FX archive costs pennies.

***

### 🆚 Why this Actor

| | This Actor | Generic "free FX API" wrappers |
|---|---|---|
| Source | Official **ECB Data Portal** | Mixed / unofficial aggregators |
| Currencies | 40+, or all at once | Often limited on free tiers |
| History | Up to 100 daily obs/currency | Frequently paywalled |
| Key required | ❌ None | ✅ Usually |
| Proxy | Datacenter-friendly | Varies |
| Output | Clean, nullable, schema'd | Raw / inconsistent |

***

### 🔗 Related Actors by the same author

- 💱 [Currency Exchange Scraper](https://apify.com/ninhothedev/currency-exchange-scraper)
- 🪙 [Coinpaprika Scraper](https://apify.com/ninhothedev/coinpaprika-scraper)
- 📈 [Yahoo Finance Scraper](https://apify.com/ninhothedev/yahoo-finance-scraper)
- 🌍 [World Bank Scraper](https://apify.com/ninhothedev/world-bank-scraper)

***

### 🔎 Keywords

ecb exchange rates, euro reference rates, ecb api, euro fx rates, foreign exchange scraper, currency converter data, eur usd rate, eur gbp rate, forex reference rates, european central bank, sdmx, fx time series, currency api no key, euro exchange rate history, treasury fx feed.

***

### ⚖️ Notes

The ECB euro foreign exchange reference rates are published by the European Central Bank for information purposes and are freely available. This Actor accesses the public ECB Data Portal API and does not scrape any login-gated or personal data.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. 'rates' fetches official ECB euro foreign exchange reference rates for the selected currencies.

## `currencies` (type: `array`):

ISO 4217 currency codes to fetch (rate = units of that currency per 1 EUR). Leave empty to fetch ALL available currencies published by the ECB (USD, GBP, JPY, CHF, AUD, CAD, CNY, and 40+ more).

## `observations` (type: `integer`):

How many most recent daily observations (business days) to return per currency. Use 1 for the latest rate only, or up to 100 for recent history.

## `maxItems` (type: `integer`):

Maximum number of rate records to push to the dataset. Safety cap to control run size and cost.

## Actor input object example

```json
{
  "mode": "rates",
  "currencies": [
    "USD",
    "GBP",
    "JPY",
    "CHF"
  ],
  "observations": 1,
  "maxItems": 500
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "currencies": [
        "USD",
        "GBP",
        "JPY",
        "CHF"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ninhothedev/ecb-exchange-rates-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "currencies": [
        "USD",
        "GBP",
        "JPY",
        "CHF",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("ninhothedev/ecb-exchange-rates-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "currencies": [
    "USD",
    "GBP",
    "JPY",
    "CHF"
  ]
}' |
apify call ninhothedev/ecb-exchange-rates-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ninhothedev/ecb-exchange-rates-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/43rY5hZAK1tVrdimi/builds/cgeuk29WyrKlkOS41/openapi.json
