Frankfurter FX Rates Scraper
Pricing
from $30.00 / 1,000 results
Frankfurter FX Rates Scraper
Scrape currency exchange rates from Frankfurter open API. Latest rates, historical rates, and time-series for 30+ currencies sourced from the European Central Bank. No API key required.
Pricing
from $30.00 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share

💱 Frankfurter FX Rates Scraper
🚀 Pull European Central Bank reference exchange rates in seconds. Filter by base currency, target currencies, single date, or full historical time series. No API key, no registration, no manual CSV wrangling.
🕒 Last updated: 2026-05-12 · 📊 8 fields per record · 30+ currencies sourced from the ECB · Daily refresh on banking days · History back to 1999-01-04
The Frankfurter FX Rates Scraper extracts foreign exchange data from the Frankfurter open API, a free service that mirrors the European Central Bank reference rates published every working day. You can pull the latest rate for any supported pair, look up a specific historical date, or stream a full time series between two dates. The actor handles base currency conversion, target symbol filtering, and weekend or holiday gaps gracefully by clamping requests to the ECB earliest publication date of 1999-01-04.
Every record is a flat JSON object with the rate, its inverse, a timestamp, ISO currency codes, and the human-readable currency names (for example United States Dollar, Australian Dollar). When the requested item count exceeds the daily currency count, the actor auto-promotes a latest request to a timeseries request so you always get the rows you asked for. The result is a clean, predictable feed ready to push into a database, BI tool, AI agent, or downstream conversion pipeline.
| 🎯 Target audience | 💼 Primary use cases |
|---|---|
| Fintech and treasury teams | Daily FX rate ingestion for accounting and reporting |
| Quant and analytics teams | Historical back-testing across multi-year currency series |
| SaaS pricing and billing | Multi-currency price localization and conversion |
| Travel and e-commerce | Real-time checkout currency conversion |
| Data journalists and researchers | Long-horizon studies of currency movements |
📋 What the Frankfurter FX Rates Scraper does
- 🗓️ Three modes for any time horizon. Choose
latest,historical(single date), ortimeseries(date range) and let the actor build the correct API path. - 💵 Base currency selection. Pivot any of the 30+ supported codes as the base, with full ISO 4217 enum coverage in the input schema.
- 🎯 Target currency filtering. Pass a short list like
USD, GBP, JPYto return only the rows you need, or leave it empty for every available currency. - 🔁 Inverse rate computed for you. Each record includes
inverseRaterounded to eight decimal places, so you never need a second calculation step. - 📈 Smart auto-promotion. If you ask for more rows than the latest snapshot can supply, the scraper switches to a multi-day series and clamps to the ECB earliest date.
- 🌍 Dynamic currency discovery. The actor reads the live currency list from Frankfurter at runtime, so newly added currencies are picked up automatically.
Each record carries the trade date, base and target codes, full currency names, the rate, the inverse rate, and the scrapedAt timestamp. The schema stays the same across all three modes, which makes it simple to union historical and live data in the same table.
💡 Why it matters: Reliable FX data is a building block for invoicing, financial reporting, portfolio analytics, and any product that displays prices in multiple currencies. By tapping the ECB reference set through Frankfurter, you get an authoritative, free, and license-friendly feed without locking yourself into a paid API contract.
🎬 Full Demo
🚧 Coming soon: a 3-minute walkthrough showing how to configure a base currency, select targets, run a time-series pull, and route results into Google Sheets.
⚙️ Input
| Field | Type | Description |
|---|---|---|
mode | enum | One of latest, historical, or timeseries. Default latest. |
baseCurrency | enum | Base ISO code. 31 supported codes including EUR, USD, GBP, JPY, CHF. Default EUR. |
targetCurrencies | array | Optional list of target ISO codes. Leave empty for all available currencies. |
date | string | Single date in YYYY-MM-DD format. Only used in historical mode. |
startDate | string | Range start in YYYY-MM-DD. Only used in timeseries mode. |
endDate | string | Range end in YYYY-MM-DD. Only used in timeseries mode. |
maxItems | integer | Free users 10, paid users up to 1,000,000. |
Example: latest USD to a short list of targets.
{"mode": "latest","baseCurrency": "USD","targetCurrencies": ["EUR", "GBP", "JPY", "CHF"],"maxItems": 10}
Example: full 2024 time series for EUR to USD.
{"mode": "timeseries","baseCurrency": "EUR","targetCurrencies": ["USD"],"startDate": "2024-01-01","endDate": "2024-12-31","maxItems": 1000}
⚠️ Good to Know: Frankfurter mirrors ECB publication, so rates are only updated on banking days. Weekend and holiday requests return the most recent business-day rate. Historical coverage starts on 1999-01-04 (the launch of the euro reference series).
📊 Output
Each record is a flat JSON object with the fields below.
🧾 Schema
| Field | Type | Example |
|---|---|---|
📅 date | string | 2026-05-12 |
💵 baseCurrency | string | USD |
🏷️ baseCurrencyName | string | United States Dollar |
🎯 targetCurrency | string | AUD |
🏷️ targetCurrencyName | string | Australian Dollar |
📈 rate | number | 1.3846 |
📉 inverseRate | number | 0.72223025 |
⏱️ scrapedAt | string | 2026-05-12T16:29:54.177Z |
📦 Sample records
✨ Why choose this Actor
| Capability | |
|---|---|
| 🆓 | No API key. The Frankfurter source is open and free, and this actor inherits that. |
| 🏦 | Authoritative source. Numbers come from the European Central Bank reference set. |
| 🕰️ | Deep history. Daily rates from 1999-01-04 to today, in a single uniform schema. |
| 🔁 | Inverse rate included. No second calculation step for reverse pairs. |
| 🎚️ | Three modes, one schema. latest, historical, and timeseries share the same record shape. |
| 🌐 | Dynamic currency list. New currencies added by the ECB appear automatically. |
| 🔌 | Integrates everywhere. Pipe to Sheets, Airtable, Slack, BigQuery, Snowflake, or your AI agent. |
📊 31 currencies, 6,800+ banking days of history, 1 free actor.
📈 How it compares to alternatives
| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| ⭐ Frankfurter FX Rates Scraper (this Actor) | Free tier available | 30+ ECB currencies, 1999-today | Daily on banking days | Base, target, date, range | One JSON input |
| Paid live FX APIs | $50-500 per month | Often broader, includes crypto | Sub-second to daily | Per-vendor SDK | Account, key, SDK |
| Official bank publications | Free | Per-issuer, fragmented | Daily | Manual | Browser or PDF parsing |
| Legacy community dumps | Free | Stale snapshots | None | None | CSV download |
For finance teams that need ECB reference rates without contract overhead, this actor is the shortest path from request to row.
🚀 How to use
- 🔐 Create a free Apify account. Sign up at Apify and claim the $5 starter credit.
- 🎚️ Open the actor and pick a mode. Choose
latestfor a snapshot,historicalfor one date, ortimeseriesfor a range. - 💱 Set the currencies. Pick a base, then add optional target codes or leave the list empty for all 30+.
- ▶️ Run it. Free users get a 10-row preview, paid users can pull up to 1,000,000 records per run.
- 📤 Export. Download JSON, CSV, or Excel, or push results into Google Sheets, Airtable, Slack, Notion, or a database via Apify integrations.
⏱️ Total time from sign-up to first dataset: about 90 seconds.
💼 Business use cases
🌟 Beyond business use cases
Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.
🔌 Automating Frankfurter FX Rates Scraper
Drive this actor from your own stack with a few lines of code.
- Trigger runs from Node.js using the Apify JavaScript client
- Trigger runs from Python using the Apify Python client
- Read the Apify REST API docs to call the actor over HTTP
Schedules let you run the actor every banking day, every hour, or any cron pattern you need. Pair a daily schedule with a webhook to land each run straight into your warehouse.
❓ Frequently Asked Questions
💰 Is there a cost to run this Actor?
The actor itself is free to use on Apify. You pay only for the platform compute and storage you consume during a run. New accounts come with $5 of starter credit, which covers many small runs.
🔑 Do I need a Frankfurter API key?
No. The Frankfurter service is fully open and unauthenticated. The actor reaches the upstream directly with no key, token, or registration step.
📅 How far back does the history go?
The European Central Bank reference series starts on 1999-01-04. The actor clamps earlier requests to that date and logs a warning so you do not silently miss rows.
🕒 How often are rates updated?
The ECB publishes reference rates around 16:00 CET on banking days. Weekends and ECB holidays return the most recent business-day value rather than a new rate.
💱 Which currencies are supported?
Around 31 currencies including EUR, USD, GBP, JPY, CHF, AUD, CAD, CNY, INR, BRL, MXN, SEK, NOK, DKK, PLN, HUF, CZK, RON, TRY, ZAR, HKD, SGD, KRW, THB, ILS, PHP, MYR, IDR, NZD, ISK, BGN. The list is fetched live at runtime, so any new code added upstream appears automatically.
🤝 Can I use this Actor for commercial use?
Yes. The data is public reference data from the ECB. You are responsible for following the upstream terms and any local rules that apply to your use of currency information.
💳 Do I need a paid Apify plan?
A paid plan is not required. Free accounts can preview up to 10 rows per run. Paid plans unlock up to 1,000,000 rows per run plus larger storage and compute budgets.
🆘 What if a run fails?
Open the run in the Apify console to inspect the log, the input, and any partial dataset. Network errors, upstream rate limits, and invalid date ranges are surfaced as error items in the dataset rather than as silent crashes.
⚖️ Is scraping this data legal?
Currency reference rates published by central banks are public information. This actor accesses the open Frankfurter API only, so the data flow is the same one any browser or curl request would produce. Compliance with the source terms and local law remains your responsibility.
🔄 What is the difference between latest, historical, and timeseries?
latest returns the most recent published rates for one date. historical returns rates for a single date you supply. timeseries returns rates for every banking day in a range. All three modes share the same record schema.
🧪 Can I limit the run to a few currencies?
Yes. Set targetCurrencies to a short list like ["USD", "GBP", "JPY"]. The base currency is set separately and is not included in the output rows.
🔌 Integrate with any app
Stream results into the tools your team already uses.
- Make - low-code automation across thousands of apps
- Zapier - trigger and route data into 6,000+ services
- n8n - self-hosted workflow runner with native Apify support
- Slack - notifications when runs complete or hit anomalies
- Google Sheets - one-click dataset to spreadsheet sync
- BigQuery and Snowflake - warehouse loads via webhook or schedule
🔗 Recommended Actors
- 🪙 OpenAlex Scraper - open scholarly data feed for cross-currency research
- 🌐 Wikidata Entity Search Scraper - look up country and currency entities at scale
- 📚 Open Library Scraper - free metadata for finance literature and references
- 🔎 CrossRef Scraper - find peer-reviewed FX and macro research papers
- 📈 GitHub Trending Scraper - track open-source finance tooling repos
💡 Pro Tip: browse the complete ParseForge collection for more data feeds across finance, research, and developer ecosystems.
🆘 Need Help? Open our contact form and a human will reply within one business day.
This Actor accesses publicly available data only. By using it you accept the responsibility to comply with the source's Terms of Service, rate limits, and applicable laws including data-protection regulations. The data is scraped on-demand from the upstream public API and is not cached or pre-stored by this Actor.