Introduction to Fixer.io API
- Fixer.io is a simple and lightweight API for current and historical foreign exchange rates published by the European Central Bank. With Fixer, you can retrieve exchange rate data in real-time and historical formats.
- It offers a Free Plan with limited features, but you can access more endpoints and data sets with the paid subscriptions.
Setting Up Your Environment
- Ensure you have Python installed and an environment setup for your project. A virtual environment is recommended to manage dependencies effectively.
- Install the necessary libraries using pip. You will need the requests library to make HTTP requests to the API. Run the following command in your terminal or command prompt:
pip install requests
Making a Request to Fixer.io API
- To interact with the API, you'll construct a URL for a GET request. The endpoint for the latest rates is
http://data.fixer.io/api/latest
.
- You need to include your access key in the request for authentication. This is done by adding a parameter named
access\_key
to your URL.
import requests
API_KEY = 'YOUR_ACCESS_KEY'
BASE_URL = 'http://data.fixer.io/api/'
def get_latest_rates():
url = BASE_URL + 'latest'
params = {
'access_key': API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Failed to retrieve data: {response.status_code}")
get_latest_rates()
Parsing the API Response
- The API response will be in JSON format. It typically includes a dictionary with keys like 'success', 'timestamp', 'base', 'date', and 'rates'.
- Rates will be another dictionary inside the JSON, containing currency codes as keys and their exchange rates as values.
def parse_exchange_rates(data):
if not data.get('success'):
print("Failed to retrieve rates:", data.get('error'))
return
base_currency = data['base']
rates = data['rates']
for currency, rate in rates.items():
print(f"1 {base_currency} = {rate} {currency}")
response_data = get_latest_rates()
if response_data:
parse_exchange_rates(response_data)
Fetching Historical Exchange Rates
- To retrieve historical rates, adjust the endpoint in your request to
http://data.fixer.io/api/{date}
, where {date}
is in the format YYYY-MM-DD.
- Add the desired date to the URL and make the request similar to how you fetched the latest rates.
def get_historical_rates(date):
url = BASE_URL + date
params = {
'access_key': API_KEY
}
response = requests.get(url, params=params)
if response.status_code == 200:
return response.json()
else:
print(f"Failed to retrieve data: {response.status_code}")
return None
historical_data = get_historical_rates('2023-05-01')
if historical_data:
parse_exchange_rates(historical_data)
Handling Common Issues
- Always check for the
success
key in the response to verify that your request executed correctly.
- Handling exceptions and errors gracefully will ensure your application is robust. Consider implementing retry logic or alternate services in case of API downtime.
- Manage API request limits to stay within your subscription's quota, potentially by batching requests or caching responses.