# ECB Euro FX Rates Scraper (`parseforge/ecb-fx-rates-scraper`) Actor

Extract daily or historical Euro foreign exchange reference rates from the European Central Bank. Covers 30+ currencies: USD, GBP, JPY, CHF, CNY, and more. Use 'daily', '90d', or 'historical' modes.

- **URL**: https://apify.com/parseforge/ecb-fx-rates-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** News, Automation, Other
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)

## 💱 ECB Euro FX Rates Scraper

Accountants, finance teams, and trading desks all need reliable EUR reference rates. The European Central Bank publishes official daily foreign exchange rates against the euro every afternoon. This tool pulls today's rates, the last 90 days, or the full historical series since 1999 into a clean tabular dataset.

> **The ECB FX Rates Scraper collects official European Central Bank euro reference rates with currency code, date, rate, and base currency. Pick daily, 90-day, or full historical since 1999 mode.**

### ✨ What Does It Do

- 💶 **Official ECB rates** - reference rates published daily by the European Central Bank
- 📅 **Three time ranges** - today's rates, last 90 days, or historical since 1999
- 🌍 **30+ currencies** - USD, GBP, JPY, CHF, SEK, AUD, CAD, CNY, BRL, INR, and many more
- 🔍 **Currency filtering** - limit results to specific currencies with a simple list
- 🧮 **Ready-to-use format** - one row per currency-date pair for easy analysis

### 🔧 Input

- **Mode** - `daily` for today, `90d` for last 90 days, `historical` for all data since 1999
- **Filter Currencies** - optional list of 3-letter codes (e.g. `USD`, `GBP`, `JPY`) to narrow results
- **Max Items** - free users get 10 items, paid users up to 1,000,000 (each item is one currency-day pair)

```json
{
    "mode": "90d",
    "currencies": ["USD", "GBP", "JPY"],
    "maxItems": 300
}
````

### 📊 Output

Each record is one currency-date rate pair. Download as JSON, CSV, or Excel.

| 📌 Field | 📄 Description |
|----------|---------------|
| 📅 date | Rate publication date |
| 💱 currency | 3-letter currency code |
| 💯 rate | Value of 1 EUR in this currency |
| 💶 base | Always EUR |
| 🏦 source | Always ECB |
| ⏱️ scrapedAt | Collection timestamp |

```json
{
    "date": "2026-04-09",
    "currency": "USD",
    "rate": 1.0843,
    "base": "EUR",
    "source": "ECB",
    "scrapedAt": "2026-04-10T12:00:00.000Z"
}
```

### 💎 Why Choose the ECB FX Rates Scraper?

| Feature | Our Tool | Manual XML Download |
|---------|----------|---------------------|
| Three time ranges | ✅ Daily, 90d, full | ✅ But separate files |
| Currency filtering | ✅ Built-in | ❌ Post-process needed |
| Flat table format | ✅ One row per pair | ❌ Nested XML |
| Historical since 1999 | ✅ Yes | ✅ Yes |
| Export to JSON/CSV/Excel | ✅ Yes | ❌ XML only |
| Scheduled runs | ✅ Daily 3pm CET | ❌ Manual download |

### 📋 How to Use

1. **Sign Up** - [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. **Configure** - pick daily / 90d / historical mode and optional currency filter
3. **Run It** - click Start and get clean FX rate rows in seconds

No coding, no XML parsing, no manual data cleanup.

### 🎯 Business Use Cases

- 💼 **Accounting teams** - pull daily EUR rates for month-end reporting and multi-currency revaluation
- 📈 **Trading desks** - backfill historical EUR rates for back-testing strategies
- 🏢 **Multinational finance** - convert foreign subsidiary financials into EUR reporting
- 📊 **Financial dashboards** - feed live EUR rates into BI dashboards and Looker models
- 🛒 **E-commerce** - update product prices daily based on official EUR rates
- 🎓 **Economic research** - analyze historical EUR/USD, EUR/GBP, or EUR/JPY trends since 1999

### ❓ FAQ

🏦 **What are ECB reference rates?**
The European Central Bank publishes official euro reference rates against major world currencies every working day around 3 PM CET. They are the most widely used official EUR rates.

📅 **What's the difference between daily, 90d, and historical modes?**
Daily returns only today's rates. 90d returns the last 90 business days. Historical returns the full series back to 1999.

💱 **Which currencies are covered?**
Over 30 major currencies including USD, GBP, JPY, CHF, CAD, AUD, SEK, NOK, DKK, PLN, CZK, HUF, RON, BGN, TRY, CNY, INR, KRW, SGD, HKD, NZD, ZAR, BRL, MXN, ILS, MYR, PHP, THB, IDR, ISK.

⏰ **When is the daily rate published?**
Around 3 PM CET (Central European Time) every TARGET business day. Weekends and eurozone holidays are not published.

🔄 **Can I schedule a daily run?**
Yes. Set a scheduled run for 4 PM CET to always grab the latest day's rates right after they publish.

### 🔗 Integrate ECB FX Rates Scraper with any app

- [Make](https://docs.apify.com/platform/integrations/make) - automate daily rate imports
- [Zapier](https://docs.apify.com/platform/integrations/zapier) - alert on significant rate moves
- [Slack](https://docs.apify.com/platform/integrations/slack) - post daily FX updates to finance channels
- [Google Sheets](https://docs.apify.com/platform/integrations/drive) - maintain historical rate spreadsheets
- [Webhooks](https://docs.apify.com/platform/integrations/webhooks) - trigger workflows on completion

### 💡 Recommended Actors

Looking for more data collection tools? Check out these related actors:

| Actor | Description | Link |
|-------|-------------|------|
| FINRA BrokerCheck Scraper | US broker registration lookups | [Link](https://apify.com/parseforge/finra-brokercheck-scraper) |
| GSA eLibrary Scraper | US government contract data | [Link](https://apify.com/parseforge/gsa-elibrary-scraper) |
| Pitchbook Funds Scraper | Private fund profiles | [Link](https://apify.com/parseforge/pitchbook-funds-scraper) |
| Pitchbook Investors Scraper | PE and VC investor profiles | [Link](https://apify.com/parseforge/pitchbook-investors-scraper) |
| Bring A Trailer Auctions Scraper | Car auction listings and bids | [Link](https://apify.com/parseforge/bringatrailer-auctions-scraper) |

**Pro Tip:** 💡 Browse the full [ParseForge catalog](https://apify.com/parseforge) to find more data tools.

### 🆘 Need Help?

- Check the FAQ section above for common questions
- Visit the [Apify documentation](https://docs.apify.com) for platform guides
- Contact us at [Tally contact form](https://tally.so/r/BzdKgA)

### ⚠️ Disclaimer

> This Actor is an independent tool and is not affiliated with, endorsed by, or connected to the European Central Bank or any EU institution. It collects only publicly available reference rate data.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Each item is one currency-day pair.

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

'daily' = today's rates; '90d' = last 90 days; 'historical' = all data since 1999.

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

Optional list of 3-letter currency codes to include (e.g. \['USD','GBP','JPY']). Empty = all available.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "daily"
}
```

# Actor output Schema

## `overview` (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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/ecb-fx-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 = { "maxItems": 10 }

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

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10
}' |
apify call parseforge/ecb-fx-rates-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/ecb-fx-rates-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "ECB Euro FX Rates Scraper",
        "description": "Extract daily or historical Euro foreign exchange reference rates from the European Central Bank. Covers 30+ currencies: USD, GBP, JPY, CHF, CNY, and more. Use 'daily', '90d', or 'historical' modes.",
        "version": "1.0",
        "x-build-id": "EkFdqEkcGBQLqcFjm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~ecb-fx-rates-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-ecb-fx-rates-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~ecb-fx-rates-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-ecb-fx-rates-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~ecb-fx-rates-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-ecb-fx-rates-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Each item is one currency-day pair."
                    },
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "daily",
                            "90d",
                            "historical"
                        ],
                        "type": "string",
                        "description": "'daily' = today's rates; '90d' = last 90 days; 'historical' = all data since 1999.",
                        "default": "daily"
                    },
                    "currencies": {
                        "title": "Filter Currencies",
                        "type": "array",
                        "description": "Optional list of 3-letter currency codes to include (e.g. ['USD','GBP','JPY']). Empty = all available.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
