Intro
If you want a free exchange rates API with no API key requirement for a small project then this is what you're looking for!
This open access API is subject to our Terms and requires attribution. You're welcome to cache the data we respond with and to use it for either personal or commercial currency conversion purposes. You are, however, not allowed to re-distribute it.
Differences Between Open / Free / Pro
Free API
- API Key Required
- No Attribution
- Updates Once Per Day
- 1.5k Requests p/m
- Self Service
🚀 Pro API
- Only $10/mo!
- No Attribution
- Updates Every 60 Minutes
- 30k Requests p/m
- Prompt Support
Rate Limiting
We've been providing free versions of our currency conversion API for over 10 years now and have experienced the inevitable DDoS attacks & broken while(1){}
loops during this time. As such our open access free exchange rate API has to be rate limited.
• If you only request once every 24 hours you won't need to read any more of this section. Easy!
• If you can't keep a cached response for that long, you could still request once every hour and never get rate limited.
These suggestions are quite reasonable because:
• The data only refreshes once every 24 hours anyway.
• Included in the response is the specific time of the next data update.
• Our Terms permit caching of the data.
Don't panic if you send too many requests due to a bug and get rate limited. Rate limited IP's will receive HTTP code 429 responses. After 20 minutes the rate limit will finish and new requests will be allowed through.
Attribution
We require attribution on the pages you're using these rates with the link below:
<a href="https://www.exchangerate-api.com">Rates By Exchange Rate API</a>
Why bother? Well, the more popular our service gets the better we can make this free & open access version and the longer we'll maintain it! We've been empowering developers with free data since 2010 and each year the positive feedback and developers doing fair attribution outweigh the people trying to abuse & DDoS the endpoint. Let's keep this convenient service going for another 10 years!
You're also welcome to make the attribution link discreet and in keeping with how the rest of your application looks - we leave this up to you.
Request Format Documentation
We use ISO 4217 Three Letter Currency Codes - e.g. USD for US Dollars, EUR for Euro etc. Here's the list of currency codes we support.
Just switch the USD currency code in the below request with the code for the currency you'd like to get data for.
GET https://open.er-api.com/v6/latest/USD
This will return the exchange rates from USD to all the other currencies we support:
{
"result": "success",
"provider": "https://www.exchangerate-api.com",
"documentation": "https://www.exchangerate-api.com/docs/free",
"terms_of_use": "https://www.exchangerate-api.com/terms",
"time_last_update_unix": 1585872397,
"time_last_update_utc": "Fri, 02 Apr 2020 00:06:37 +0000",
"time_next_update_unix": 1585959987,
"time_next_update_utc": "Sat, 03 Apr 2020 00:26:27 +0000",
"time_eol_unix": 0,
"base_code": "USD",
"rates": {
"USD": 1,
"AED": 3.67,
"ARS": 64.51,
"AUD": 1.65,
"CAD": 1.42,
"CHF": 0.97,
"CLP": 864.53,
"CNY": 7.1,
"EUR": 0.919,
"GBP": 0.806,
"HKD": 7.75,
"...": 7.85,
"...": 1.31,
"...": 7.47, etc. etc.
}
}
Uptime
You can view the uptime record for this endpoint, as monitored by Pingdom, here: Open Access Endpoint Uptime.
Note on EOL field
Over time we inevitably have to stop supporting certain endpoints or infrastructure and we can't predict when this will be. A lot of free services don't worry about this and just come and go - leaving users in trouble when they suddenly close down.
So whenever the time comes that we need to stop supporting this endpoint the `time_eol`
field will start showing the unix time of expected deprecation. This way you can set appropriate alerting in your code and have some time to make a new plan.
Error Responses
Successful responses will show success
for the result
field. In the event that there is an error in serving the response this field will state error
and another field called error-type
with further information will be returned.