Currency Exchange Rates Scraper
Pricing
from $6.80 / 1,000 results
Currency Exchange Rates Scraper
Scrape live foreign exchange rates for any base currency against 160+ world currencies. Each record has base currency, target currency, rate and last update time. Export to JSON, CSV or Excel.
Pricing
from $6.80 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Currency Exchange Rates Scraper
Here is one real result, with every field the actor returns:
{"baseCurrency": "USD","targetCurrency": "AED","rate": 3.6725,"inverseRate": 0.272294,"lastUpdated": "Mon, 10 Aug 2026 00:02:31 +0000","lastUpdatedUnix": 1786320151,"nextUpdate": "Tue, 11 Aug 2026 00:23:41 +0000","source": "Exchange Rates","observedAt": "2026-08-10T14:28:25.371Z"}
The most complete currency exchange rate scraper available. It returns one row per currency pair against your chosen base, with the rate, the precomputed inverse rate, and the exact source update timestamps, so you can drop the data straight into a spreadsheet or database without extra math.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor fetches the latest exchange rates for the base currency you pass and writes one normalized record per currency pair to the run's dataset. Each record carries the base and target currency, the rate, a precomputed inverse rate, and the source's last-updated and next-update timestamps. Missing source values are returned as null and never invented.
Coverage spans 160+ world currencies. The base currency is fully configurable, so you can pull rates from USD, EUR, GBP or any supported currency.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the first 10 currency rates against the US dollar.
{"baseCurrency": "USD","maxRates": 10}
Change baseCurrency to convert from any supported currency. Free plans return up to 10 rates per run; raise maxRates on a paid plan to pull the full currency table.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
baseCurrency | string | no | USD | Three-letter base currency code to convert from, for example USD, EUR, GBP, JPY. |
maxRates | integer | no | 10 | Maximum number of currency rates to collect. Free Apify plans are capped at 10 per run. Raise it to pull the full table (160+). |
Output reference
One dataset item per currency pair. Types: string, number, integer, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
baseCurrency | string | The base currency the rate converts from. |
targetCurrency | string | The target currency the rate converts to. |
rate | number | Units of targetCurrency per 1 unit of baseCurrency. |
inverseRate | number | Units of baseCurrency per 1 unit of targetCurrency (1 / rate, 6 decimals), or null when rate is zero. |
lastUpdated | string | Source last-update time (RFC 1123 string). |
lastUpdatedUnix | integer | Source last-update time as a Unix timestamp. |
nextUpdate | string | Source next scheduled update time (RFC 1123 string). |
source | string | Always Exchange Rates. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"baseCurrency":"USD","maxRates":10}):
{"baseCurrency": "USD","targetCurrency": "USD","rate": 1,"inverseRate": 1,"lastUpdated": "Mon, 10 Aug 2026 00:02:31 +0000","lastUpdatedUnix": 1786320151,"nextUpdate": "Tue, 11 Aug 2026 00:23:41 +0000","source": "Exchange Rates","observedAt": "2026-08-10T14:28:25.371Z"}
The base currency always appears against itself with a rate of 1.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~exchange-rates-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"baseCurrency":"EUR","maxRates":200}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~exchange-rates-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"baseCurrency":"GBP","maxRates":50}'
Apify CLI:
apify call scrapers_lat/exchange-rates-scraper \--input '{"baseCurrency":"JPY"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per currency rate returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 rates per run. Upgrade for the full currency table.
FAQ and troubleshooting
A run returned only 10 rows even though there are more currencies. Why?
Free Apify plans are capped at 10 results per run. Raise maxRates on a paid plan to pull the full table of 160+ currencies.
What time do the rates refer to?
The lastUpdated and lastUpdatedUnix fields give the source's last update time, and nextUpdate gives the next scheduled refresh. observedAt is when this actor collected the data.
Do I need to compute the reverse conversion myself?
No. Each row already includes inverseRate, the rate in the opposite direction.
Why does the base currency appear with a rate of 1? The source includes the base against itself for completeness. You can filter it out downstream if you do not need it.
Can I convert from a currency other than USD?
Yes. Set baseCurrency to any supported three-letter code, for example EUR, GBP, JPY.
Is this an official central bank tool? No. This actor is independent and returns aggregated public exchange rate data for reference. Do not rely on it as the sole source for settlement or regulatory purposes.
Related scrapers
- Argentina Dolar Scraper: Argentine peso blue and official USD rates.
- LATAM Central Banks FX Scraper: official Latin American central bank FX rates.
- CoinGecko Crypto Scraper: cryptocurrency prices and market data.
- Yahoo Finance Scraper: stock and market quotes.
- IMF Data Scraper: IMF macroeconomic indicators.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US, European and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool that returns aggregated public exchange rate data for reference. Not affiliated with any central bank; do not use as the sole source for settlement or regulatory purposes.
