Currency Exchange Rates Scraper - Live & Historical FX by Date
Pricing
from $0.90 / 1,000 results
Currency Exchange Rates Scraper - Live & Historical FX by Date
$0.9/1K π₯ Fast currency exchange scraper! Live & historical FX rates for 30+ currencies. No key needed. JSON, CSV, Excel or API in seconds. Enter currency pairs & pull thousands of rates for finance & billing β‘
Pricing
from $0.90 / 1,000 results
Rating
0.0
(0)
Developer
ninhothedev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Currency Exchange Rates Scraper (multi-source: Frankfurter + ECB)
Get clean live & historical currency exchange rates: latest rates, single-day historical, and full time-series across 30+ currencies (ECB reference rates). As JSON, CSV or Excel. Free, no API key, no proxy.
Multi-source by design. Rates are fetched through a host fallback chain (Frankfurter β ECB) and the first host that answers wins, so an outage at any single provider no longer fails your run. See Data sources & reliability.
π΅ Pricing
Pay per result β $0.0003 per item (~$0.30 / 1,000). No subscription, no proxy needed. You only pay for the data you scrape, and new Apify accounts include free monthly credits so you can test it for $0.
π What can it extract?
- Latest exchange rates for any base currency
- Historical rates on any single past day
- Time-series of rates across a date range (one series per currency)
- 30+ currencies (USD, EUR, GBP, JPY, CHF, AUD, CAD, CNY, β¦)
- Powered by European Central Bank (ECB) reference rates, reached through four independent hosts with automatic failover
- A
sourcefield on every row telling you which host served it
π How do I use it?
- Click Try for free.
- Choose a mode (latest / historical / timeseries) and set the input (see examples below).
- Click Start and download results as JSON, CSV or Excel β or pull them via the API / schedule them daily.
βοΈ Input examples
Latest USD rates for EUR, GBP, JPY:
{"mode": "latest","base": "USD","symbols": ["EUR", "GBP", "JPY"]}
Historical (single day):
{"mode": "historical","base": "EUR","symbols": ["USD"],"date": "2024-01-02"}
Time-series (date range):
{"mode": "timeseries","base": "USD","symbols": ["EUR", "GBP"],"startDate": "2024-01-01","endDate": "2024-01-31"}
π¦ Output examples
latest / historical β one item per target currency:
{"base": "USD","target": "EUR","rate": 0.87673,"amount": 1.0,"date": "2026-06-29","source": "frankfurter-dev","scraped_at": "2026-06-30T08:30:00+00:00"}
timeseries β one item per currency, with a series[] array:
{"base": "USD","target": "EUR","start_date": "2024-01-01","end_date": "2024-01-31","series": [{ "date": "2024-01-02", "rate": 0.91274 },{ "date": "2024-01-03", "rate": 0.91583 }],"scraped_at": "2026-06-30T08:30:00+00:00"}
π― Use cases
- Ecommerce pricing β convert and localize prices, keep multi-currency catalogs in sync
- Finance β monitor FX movements, build dashboards and alerts
- Accounting β book invoices and expenses at the correct daily rate
- Analytics β feed clean rate time-series into BI tools, models and reports
π Data sources & reliability
Every row carries a source field naming the host that actually answered.
What happened (and what was fixed)
api.frankfurter.dev sits behind Cloudflare and began returning HTTP 522 (origin connection timed out) to datacenter IP ranges, including Apify's runners, while still serving 200 to residential connections. A 522 is an edge-to-origin failure, so retrying the same host does not help.
The fix is a host fallback chain, not a proxy. The same ECB reference rates are published by several independent hosts, so the actor walks them in order and uses the first that answers:
| # | Host | source | Notes |
|---|---|---|---|
| 1 | api.frankfurter.dev | frankfurter-dev | canonical Frankfurter host |
| 2 | api.frankfurter.app | frankfurter-app | legacy host; terminates on a different Cloudflare edge, so it can succeed when #1's edge is failing |
| 3 | data-api.ecb.europa.eu | ecb-sdmx | the ECB SDMX API β the original source Frankfurter republishes, with no Cloudflare in front |
| 4 | ecb.europa.eu/.../eurofxref-daily.xml | ecb-xml | ECB daily reference XML (latest mode only) |
Which host won is logged on every run, and if all four fail the run fails loudly with each host's actual HTTP status rather than returning an empty dataset.
One schema, whichever host answers
The ECB tiers publish EUR-denominated rates only. Rather than pushing a different shape, the actor performs the cross-rate rebasing locally β rate(base β target) = eurRate(target) / eurRate(base) β so an ECB-served row is byte-identical in structure to a Frankfurter-served one and your base currency keeps working. Verified live: for USD β EUR/GBP/JPY the Frankfurter and ECB paths agree to within Frankfurter's own 5-decimal rounding.
How this differs from ecb-exchange-rates-scraper
The account also ships ECB Exchange Rates Scraper, which is a straight mirror of the ECB's published EUR reference rates. This actor is the multi-source convenience tool, and stays that way:
| This actor | ecb-exchange-rates-scraper | |
|---|---|---|
| Base currency | any (cross-rates computed for you) | EUR only |
| Modes | latest, historical single day, time-series ranges | latest reference rates |
| Hosts | 4, with automatic failover | ECB only |
| Best for | apps, billing and analytics that need arbitrary pairs and ranges | a faithful, single-source ECB mirror |
The ECB hosts are a resilience tier here, not the product.
π° How much will it cost?
You pay only the per-result price (no proxy cost): 100 β ~$0.03 Β· 1,000 β ~$0.30 Β· 10,000 β ~$3
π Why this one
| Feature | This actor | Others |
|---|---|---|
| Latest + historical + time-series | β | latest only |
| Multi-host failover (survives a provider outage) | β | β |
| Any base currency (cross-rates computed) | β | EUR/USD only |
| 30+ ECB reference currencies | β | partial |
| No API key, no proxy | β | sometimes |
| Pay per result, free to test | β | subscription |
π Related actors
- CoinGecko Crypto Scraper β crypto prices & market data
- Binance Crypto Scraper β crypto trading data
- Yahoo Finance Scraper β stocks & tickers
- Shopify Store Scraper β ecommerce products & prices
β FAQ
API key or proxy? No β neither is needed. Which rates? ECB reference rates, fetched via Frankfurter with automatic failover to the ECB's own API. What is the source field? The host that served that row. What if a provider is down? The actor tries the next host automatically; it only fails if all four are unreachable. Weekends/holidays? ECB does not publish on those days; the API returns the most recent working-day rate. All currencies? Leave symbols empty to get every available currency.
π Support
Found a bug or need an extra field? Open an issue on the actor β fixes and new fields ship fast.
Legal & privacy
Data via the free Frankfurter API and the European Central Bank's public SDMX API and daily reference XML. All are ECB reference rates. No personal data is collected.
Keywords: currency scraper, exchange rates, forex, fx rates, currency converter, historical exchange rates, ECB rates, frankfurter, multi-source failover, ecommerce pricing, finance, accounting, analytics, JSON CSV Excel