Currency Data API provides a simple REST API with real-time and historical exchange rates for 168 world currencies, delivering currency pairs in universally usable JSON format - compatible with any of your applications.
Spot exchange rate data is retrieved from several major forex data providers in real-time, validated, processed and delivered hourly, every 10 minutes, or even within the 60-second market window.
Providing the most representative forex market value available ("midpoint" value) for every API request, the Currency Data API API powers currency converters, mobile applications, financial software components and back-office systems all around the world.
/list Returns all available currencies.
/live Get the most recent exchange rate data.
/convert Convert one currency to another.
/historical Get historical rates for a specific day.
/timeframe Request exchange rates for a specific period of time.
/change Request any currency's change parameters (margin, percentage).
The Currency Data API comes with a constantly updated endpoint returning all available currencies. To access this list, make a request to the API's list endpoint.
To reduce bandwidth you can limit the number of output currencies to a specific set of your choice on most API endpoints. To do so, simply append the Fixer API's symbols parameter to your API request and set it to one or more comma-separated currency codes.
curl --request GET 'https://api.apilayer.com/currency_data/live?base=USD&symbols=EUR,GBP' \
--header 'apikey: YOUR API KEY'
It is also possible to convert currencies using historical exchange rate data. To do this, please also use the API's date parameter and set it to your preferred date. (format YYYY-MM-DD)
curl --request GET 'https://api.apilayer.com/currency_data/convert?base=USD&symbols=EUR,GBP,JPY&amount=5&date=2018-01-01' \
--header 'apikey: YOUR API KEY'
Currency Data API Reference
This API is organized around REST. Our API has predictable resource-oriented URLs,
accepts form-encoded request bodies, returns JSON-encoded responses, and uses
standard HTTP response codes, authentication, and verbs.
Each subscription has its own rate limit. When you become a member, you start by choosing
a rate limit that suits your usage needs. Do not worry; You can upgrade or downgrade your
plan at any time. For this reason, instead of starting with a larger plan that you do
not need, we can offer you to upgrade your plan after you start with "free" or "gold plan"
options and start using the API.
When you reach a rate limit (both daily and monthly), the service will stop responding and
returning the HTTP 429 response status code (Too many requests) for each request with
the following JSON string body text.
"message":"You have exceeded your daily\/monthly API rate limit. Please review and upgrade your subscription plan at https:\/\/apilayer.com\/subscriptions to continue."
A reminder email will be sent to you when your API usage reaches both 80% and 90%, so
that you can take immediate actions such as upgrading your plan in order to prevent your
application using the API from being interrupted.
You can also programmatically check your rate limit yourself. As a result of each request
made to the APILayer, the following 4 fields provide you with all the necessary information
within the HTTP Headers.
x-ratelimit-limit-month: Request limit per month x-ratelimit-remaining-month: Request limit remaining this month x-ratelimit-limit-day: Request limit per day x-ratelimit-remaining-day: Request limit remaining today
You can contact our support unit if you need any
assistance with your application regarding to handle the returned result by looking at
the header information.
APILayer uses standard HTTP response codes to indicate the success or failure
of an API request. In general: Codes in the 2xx range indicate success.
Codes in the 4xx range indicate a clientside error, which means that failed
given the information provided (e.g., a missing parameter, unauthorized access etc.).
Codes in the 5xx range indicate an error with APILayer's servers (normally this
should'nt happen at all).
If the response code is not 200, it means the operation failed somehow and you may
need to take an action accordingly. You can check the response (which will be in JSON format)
for a field called 'message' that briefly explains the error reported.
400 - Bad Request
The request was unacceptable, often due to missing a required parameter.
401 - Unauthorized
No valid API key provided.
404 - Not Found
The requested resource doesn't exist.
429 - Too many requests
API request limit exceeded. See section Rate Limiting for more info.
5xx - Server Error
We have failed to process your request. (You can contact us anytime)
You can always contact for support and ask for more assistance. We'll be glad to assist you
with building your product.