Currency Exchange Rates: Live, Historical, Convert avatar

Currency Exchange Rates: Live, Historical, Convert

Pricing

from $1.00 / 1,000 rate fetcheds

Go to Apify Store
Currency Exchange Rates: Live, Historical, Convert

Currency Exchange Rates: Live, Historical, Convert

Get live and past exchange rates for 340 currencies and crypto. Convert amounts in bulk, get daily rates for any date range since 1999, and compare sources. Uses official ECB rates, daily community rates and optional live Google Finance rates. Works as a batch run or a live HTTP API.

Pricing

from $1.00 / 1,000 rate fetcheds

Rating

0.0

(0)

Developer

APIzilla

APIzilla

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Currency Exchange Rates API: Live, Historical, Convert

Get exchange rates for 340 currencies and crypto coins. Convert many amounts in one run. Get rates for any past day since 1999. Get daily rates between two dates. Compare rates from more than one source.

You can use it in two ways:

  • Batch run. Fill in the input, click Start, and get a table of results.
  • Live API (Standby). Call a web address from your app and get JSON back in under a second.

What you can do

OperationWhat it doesPrice event
latestLatest rates from one base currency to many target currencies.rate-fetched per pair
convertConvert a list of amounts. Each item can have its own date.conversion per amount
historicalRates on one past day.historical-rate per pair
timeseriesOne rate per day between two dates.timeseries-day per day and pair
crosscheckGets the same pair from ECB, community rates and Google, and shows how far apart they are.cross-check per pair
currenciesList of all codes, names and how far back history goes.Free

Rates from the Google source cost a small extra fee per rate (google-live-rate). See Costs and limits below for all prices.

Data sources

SourceCurrenciesHow freshHistoryNotes
ecb30 main currencies (USD, EUR, GBP, JPY, CHF, CNY and more)Once per working day, around 16:00 CETSince 4 January 1999Official reference rates of the European Central Bank. We read them through the free Frankfurter service. If it is down, we read the ECB files directly.
community340 currencies and crypto coinsOnce per daySince 2 March 2024Free open data from the fawazahmed0 exchange-api project. Good for currencies the ECB does not cover, like NGN, AED, PKR, BTC and ETH.
googleMost currency pairs and big crypto coinsLive, a few minutes oldNo historyRead from public Google Finance pages. Not an official feed. It can stop working if Google changes its pages or blocks requests.
auto (default)All of the aboveUses the ECB when it has both currencies. Uses community rates for the rest. If the ECB source fails, it falls back to community rates.

All rates are mid-market rates. They are not the buy or sell price of a bank. Do not use them for trading.

Input examples

Latest rates:

{
"operation": "latest",
"base": "USD",
"targets": ["EUR", "GBP", "JPY", "NGN", "BTC"]
}

Convert amounts in bulk:

{
"operation": "convert",
"conversions": [
{ "amount": 100, "from": "USD", "to": "EUR" },
{ "amount": 2500, "from": "GBP", "to": "JPY", "date": "2024-06-28", "id": "invoice-17" }
]
}

Rates on a past day:

{ "operation": "historical", "base": "EUR", "targets": ["USD", "CHF"], "date": "2008-09-15" }

Daily rates between two dates:

{ "operation": "timeseries", "base": "USD", "targets": ["EUR"], "startDate": "2025-01-01", "endDate": "2025-03-31" }

Live rates from Google:

{ "operation": "latest", "base": "USD", "targets": ["EUR", "INR"], "source": "google" }

Output

Each result is one row in the dataset. Example:

{
"operation": "convert",
"status": "succeeded",
"from": "USD",
"to": "EUR",
"amount": 100,
"result": 89.246,
"rate": 0.89246,
"inverseRate": 1.120498398,
"rateDate": "2026-10-22",
"requestedDate": null,
"source": "ecb",
"sourceName": "European Central Bank reference rates",
"backupUsed": false,
"fetchedAt": "2026-10-22T15:56:16Z",
"message": "",
"charged": { "conversion": 1 }
}
  • rate: how many units of to you get for 1 unit of from.
  • rateDate: the day of the rate. On weekends and holidays the ECB does not publish rates. Then you get the last rate before that day, and message says so.
  • status: succeeded or failed. A failed row has a clear message, for example an unknown code or a date that is too old.
  • Google rows also have quoteTime, previousClose and changePercent.
  • Cross-check rows have rates (one rate per source), spreadPercent and sourcesAgree (true when the sources are within 1%).

A short run summary is saved in the key-value store under the key SUMMARY.

Live API (Standby mode)

The actor can also run as a web API. You do not need to start it. Just call the address shown on the Endpoints tab and add your Apify token.

curl -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
"https://ACTOR-ADDRESS.apify.actor/latest?base=USD&symbols=EUR,GBP"
EndpointExample
GET /latest/latest?base=USD&symbols=EUR,GBP&source=auto
GET /convert/convert?from=USD&to=EUR&amount=100&date=2024-05-02
POST /convertBody: {"conversions": [{"amount": 100, "from": "USD", "to": "EUR"}]}. Up to 1,000 items.
GET /historical/historical?date=2020-03-02&base=USD&symbols=EUR,JPY
GET /timeseries/timeseries?base=USD&symbols=EUR&start=2025-01-01&end=2025-01-31
GET /crosscheck/crosscheck?base=USD&symbols=EUR,GBP
GET /currencies/currencies (free)

The answer is JSON with ok, results (the same rows as above) and charged. Bad input gives HTTP 400 with an error text.

Prices per result are the same as in batch runs. In Standby mode you also pay the small platform cost of the server while it is running. It stops by itself after a short time with no requests.

Costs and limits

You pay per result. Prices:

EventWhen you payPricePer 1,000
rate-fetchedOne latest rate for one pair$0.001$1.00
conversionOne amount converted$0.001$1.00
historical-rateOne pair on one past date$0.0015$1.50
timeseries-dayOne day of one pair in a time series$0.0002$0.20
cross-checkOne pair compared across sources$0.003$3.00
google-live-rateExtra fee for each rate from the Google source$0.002$2.00
Actor startOnce per run (Apify default)$0.00005$0.05

The currencies operation is free. Examples: 1,000 conversions cost $1.00. One year of daily USD to EUR rates (about 255 days) costs about $0.05. One live Google rate costs $0.003 in total.

  • You only pay for rows that succeed. Failed rows are free.
  • Set "Max cost per run" in the run options. The actor stops before it goes over.
  • maxResults limits the number of rows in one run.
  • A time series with community rates can be up to 400 days per pair. With ECB rates there is no practical limit.
  • The Google source is live but not official. Use auto or ecb when you need stable, official numbers.

Good to know

  • Codes are not case sensitive. usd and USD both work.
  • Crypto codes like BTC, ETH and SOL come from the community source or Google.
  • ECB rates are rounded to 4 or 5 digits. Community rates have more digits.
  • Data from the ECB and Frankfurter is free to reuse. Community rates are public domain (CC0). Google Finance data is for information only.