Documentation REST API
Our exchange rate API documentation is extensive and you can see below all the available endpoints, currencies and CFDs supported to help you integrate and use our data within your systems and applications. You can run sample API queries from our data documentation page once you login. For more bespoke and detailed query visit our interactive documents page once you have the API Key
Supported Currencies
We support over 1700 currency pairs on our api endpoints. A list of live exchange rates can be accessed by visting our
live currencies list page. We also have CFDs, Visit CFD list page for codes. You can also see below the full CFD list we provide:
Commodities: Copper, OIL (US), UKOIL, NATGAS
Indices: UK100 (FTSE), SPX500, FRA40 (CAC), GER30 (DAX), JPN225 (Nikkei), NAS100 (Nasdaq), USA30 (Dow), HKG33 (Hang Seng), AUS200
Equities: AAPL, FB, AMZN, NFLX, TSLA, GOOGL, BABA, TWTR, BAC, BIDU
Live Currencies List
A list of the available currencies for the /live and the /convert endpoint, can be accessed through requesting the live_currencies_list endpoint. In order to request currency data, add the currencies codes together to form a currency pair. For example EURUSD can be requested by adding EUR and USD together. In order to get the inverse of the same pair, simply reverse the quote to USDEUR.
To access JSON object containing all available currency codes verus USD, Simply append your api_key
to the TraderMade exchange rates API apicurrencies endpoint.
https://marketdata.tradermade.com/api/v1/live_currencies_list?api_key=api_key
{
"available_currencies": {
"AED": "UAE Dirham",
"ARS": "Argentine Peso",
"AUD": "Australian Dollar",
"BRL": "Brazilian Real",
"BTC": "Bitcoin",
"CAD": "Canadian Dollar",
"CHF": "Swiss Franc",
"CLP": "Chilean Peso",
"CNY": "Chinese Yuan",
"COP": "Colombian Peso",
"CZK": "Czech Koruna",
"DKK": "Danish Krone",
"EUR": "Euro",
"GBP": "British Pound Sterling",
"HKD": "Hong Kong Dollar",
"HRK": "Croatian Kuna",
"HUF": "Hungarian Forint",
"IDR": "Indonesian Rupiah",
"ILS": "Israeli New Sheqel",
"INR": "Indian Rupee",
"ISK": "Icelandic Krona",
"JPY": "Japanese Yen",
"KRW": "South Korean Won",
"KWD": "Kuwaiti Dinar",
"MAD": "Moroccan Dirham",
"MXN": "Mexican Peso",
"MYR": "Malaysian Ringgit",
"NOK": "Norwegian Krone",
"NZD": "New Zealand Dollar",
"PEN": "Peruvian Nuevo Sol",
"PHP": "Philippine Peso",
"PLN": "Polish Zloty",
"RON": "Romanian Leu",
"RUB": "Russian Ruble",
"SEK": "Swedish Krona",
"SGD": "Singapore Dollar",
"THB": "Thai Baht",
"TRY": "Turkish Lira",
"TWD": "Taiwanese Dollar",
"USD": "US Dollar",
"XAG": "Silver (troy ounce)",
"XAU": "Gold (troy ounce)",
"ZAR": "South African Rand"
},
"endpoint": "live_currencies"
}
Historical Currencies List
We support over 1600 currency pairs on our historical data endpoints A list of the available currencies for the historical, pandasDF, timeseries,, and the minute_historical endpoints, can be accessed through requesting the historical_currencies_list endpoint or visiting list of historical exchange rates page. Below example is an abbreviated version.
https://marketdata.tradermade.com/api/v1/historical_currencies_list?api_key=api_key
{
"available_currencies": [
"AEDEUR",
....
"EURPHP",
"EURPLN",
"EURRON",
"EURRUB",
"EURSEK",
"EURSGD",
"EURTHB",
"EURTRY",
"EURTWD",
"EURUSD",
"EURXAG",
"EURXAU",
"EURZAR",
"GBPAED",
"GBPAUD",
"GBPBRL",
"GBPCAD",
"GBPCHF",
"GBPCZK",
"GBPDKK",
"GBPEUR",
"GBPHKD",
"GBPHUF",
"GBPINR",
"GBPJPY",
"GBPKRW",
"GBPMXN",
"GBPMYR",
"GBPNOK",
"GBPNZD",
....
"ZARUSD"
],
"endpoint": "historical_currencies"
}
Endpoints
The TraderMade exchange rates API has nine endpoints serving different sets of data. Below has one example for each of the endpoints.
// live endpoint
https://marketdata.tradermade.com/api/v1/live?currency=EURGBP,GBPJPY&api_key=api_key
// historical
https://marketdata.tradermade.com/api/v1/historical?date=2019-10-10&api_key=api_key
// tick_historical
https://marketdata.tradermade.com//api/v1/tick_historical/GBPUSD/2021-01-21 08:30/2021-01-21 09:00?format=json&api_key=api_key
// tick_historical_sample
https://marketdata.tradermade.com//api/v1/tick_historical_sample/GBPUSD/2021-01-21 08:30/2021-01-21 09:00?format=json&api_key=api_key
// minute_historical
https://marketdata.tradermade.com/api/v1/minute_historical?currency=EURUSD&date_time=2019-10-09-13:24&api_key=api_key
// hour_historical
https://marketdata.tradermade.com/api/v1/hour_historical?currency=EURUSD&date_time=2019-10-10-13:00&api_key=api_key
// convert
https://marketdata.tradermade.com/api/v1/convert?api_key=api_key&from=EUR&to=GBP&amount=1000
// timeseries
https://marketdata.tradermade.com/api/v1/timeseries?start_date=2015-01-01&end_date=2015-05-01&api_key=api_key
// pandasDF
https://marketdata.tradermade.com/api/v1/pandasDF?currency=EURUSD&start_date=2015-01-01&end_date=2015-05-01&api_key=api_key
Error Codes
Below are the error codes and responses for all the api endpoints.
Request parameters:
Codes |
HTTP Status |
Message |
401 |
200 - OK |
api key is invalid | your plan doesnt allow access to this dataset |
204 |
200 - OK |
data for the date requested not available | currency pair currently not available |
400 |
400 - BAD REQUEST |
Input payload validation failed (often due to missing parameter or wrong input) example wrong currency code or date format |
403 |
403 - Forbidden |
enddate before start date | no data for weekend | data outside max historical data we provide |
// 400 will return error which includes the details of the error
{
"errors": {
"date": "YYYY-MM-DD time data '2019-10-' does not match format '%Y-%m-%d'"
},
"message": "Input payload validation failed"
}
Live Rates
Request parameters:
Params |
Description |
currency |
EURUSD,GBPUSD,UK100 |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/live?currency=EURUSD,GBPUSD,UK100&api_key=api_key
{
"endpoint": "live",
"quotes": [
{
"ask": 1.18183,
"base_currency": "EUR",
"bid": 1.18181,
"mid": 1.18182,
"quote_currency": "USD"
},
{
"ask": 1.31705,
"base_currency": "GBP",
"bid": 1.31704,
"mid": 1.31705,
"quote_currency": "USD"
},
{
"ask": 6310.5,
"bid": 6309.8,
"instrument": "UK100",
"mid": 6310.1499
}
],
"requested_time": "Fri, 13 Nov 2020 11:42:51 GMT",
"timestamp": 1605267771
}
Historical Rates
The historical endpoint provides daily exchange rate data for the available currency pairs. Our daily bars are 22/22 as is the norm in financial markets. The daily bar finishes at and starts from 22:00 GMT. Our API lets you query any trading day over the past 20+ years (for some exotic currency pairs history may be less). The trading week starts from 22:00 hours on a Sunday and if date is requested for Saturday or Sunday Friday date is returned.
Request parameters:
Params |
Description |
currency |
EURUSD,GBPUSD |
date |
2019-10-09 |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/historical?currency=EURUSD,GBPUSD&date=2019-10-09&api_key=api_key
{
"date": "2019-10-09",
"endpoint": "historical",
"quotes": [
{
"base_currency": "EUR",
"close": 1.09702,
"high": 1.09905,
"low": 1.0952,
"open": 1.09571,
"quote_currency": "USD"
},
{
"base_currency": "GBP",
"close": 1.2206,
"high": 1.22925,
"low": 1.21977,
"open": 1.22188,
"quote_currency": "USD"
}
],
"request_time": "Thu, 31 Oct 2019 14:40:52 GMT"
}
Tick Historical Rates
The Tick historical endpoint provides tick FX rate data for 50+ currency pairs. You can visit full currencies list page for complete list of codes. Historical Tick provides one month of data with each chunk not exceeding 60 minutes. This is only available on Advanced plan and uses 20 API request each time and only can be requested one currency pair per request.
You can't access tick historical without advanced plan but you can request a sample tick (shown below) which will get you to tick data going back 4 working days not including today. A maximum chunk of tick data in one request is 30 minutes and will take 20 requests away. You can only request one currency pair per request.
https://marketdata.tradermade.com/api/v1/tick_historical_sample/GBPUSD/2021-01-21 08:30/2021-01-21 09:00?api_key=api_key&format=json
Request parameters:
Params |
Description |
URL |
/tick_historical/symbol/startdate/enddate |
symbol |
GBPUSD |
startdate |
YYYY-mm-dd HH:MM - (2021-01-21 08:30) |
enddate |
YYYY-mm-dd HH:MM - (2021-01-21 09:00) |
format |
json or csv - default is json |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/tick_historical/GBPUSD/2021-01-21 08:30/2021-01-21 09:00?api_key=api_key&format=json
{
"end_date": "2020-10-13 09:00",
"endpoint": "tick_historical",
"instrument": "GBPUSD",
"quotes": [
{
"ask": 1.30363,
"bid": 1.30359,
"inst": "GBPUSD",
"time": 1602577800339
},
{
"ask": 1.30363,
"bid": 1.30361,
"inst": "GBPUSD",
"time": 1602577800539
},
{
"ask": 1.3036,
"bid": 1.30357,
"inst": "GBPUSD",
"time": 1602577800941
},
{
"ask": 1.30363,
"bid": 1.3036,
"inst": "GBPUSD",
"time": 1602577801739
}
...
],
"start_date": "2020-10-13 08:30"
}
Minute Historical Rates
The API lets you query historical data for any minute for the past 30-years. You can only request one currency pair and one minute of data in one single request.
Request parameters:
Params |
Description |
currency |
EURUSD |
date_time |
YYYY-mm-dd-HH:MM - (2019-10-10-13:24) |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/minute_historical?currency=EURUSD&date_time=2019-10-09-13:24&api_key=api_key
{
"endpoint": "minute_historical",
"currency": "EURUSD",
"date_time": "2019-10-09-13:24",
"close": 1.09802,
"high": 1.09816,
"low": 1.09798,
"open": 1.09807,
"request_time": "Thu, 31 Oct 2019 15:45:43 GMT"
}
Hour Historical Rates
The API provides historical rates (ohlc) for the given hour over the past two-years
Request parameters:
Params |
Description |
currency |
EURUSD |
date_time |
2019-10-10-13:00 |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/hour_historical?currency=EURUSD&api_key=api_key&date_time=2019-10-10-13:00
{
"currency": "EURUSD",
"date_time": "2019-10-10-13:00",
"endpoint": "hour_historical",
"close": 1.10193,
"high": 1.10282,
"low": 1.10158,
"open": 1.10234,
"request_time": "Thu, 31 Oct 2019 15:45:43 GMT"
}
Timeseries
Time series api provides historical currency rates (OHLC) for daily, hourly and granular endpoints. Daily timeseries data is available for upto 15-year (for some exotic currency pairs history may be less) but max request is one-year per request. Hourly data for up to 2-month and less than an hour for upto two days. For example, if you are requesting less than hour data say a minute data on Friday you can only request start date from Thursday 00:00 GMT. Only one currency pair can be requested at a time.
History -
daily - five years | hourly - two months | minute - two days
Request parameters:
Params |
Description |
currency |
EURUSD |
start_date |
daily - 2019-10-01 (YYYY-MM-DD) | hourly / minute - (YYYY-MM-DD-HH:MM) |
end_date |
daily - 2019-10-10 (YYYY-MM-DD) | hourly / minute - (YYYY-MM-DD-HH:MM) |
interval |
daily (other choices are - hourly or minute) |
period |
1, for minute interval, choices are - 5, 10, 15, 30 |
format |
records (other choices are - index , columns, split) |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/timeseries?currency=EURUSD&api_key=api_key&start_date=2019-10-01&end_date=2019-10-10&format=records
https://marketdata.tradermade.com/api/v1/timeseries?currency=EURUSD&api_key=api_key&start_date=2021-01-21-00:00&end_date=2021-01-24-14:56&format=records&interval=hourly
https://marketdata.tradermade.com/api/v1/timeseries?currency=EURUSD&api_key=api_key&start_date=2021-01-21-00:00&end_date=2021-01-24-14:56&format=records&interval=minute&period=15
{
"base_currency": "EUR",
"end_date": "2019-10-10",
"endpoint": "timeseries",
"quote_currency": "USD",
"quotes": [
{
"close": 1.09331,
"date": "2019-10-01",
"high": 1.09437,
"low": 1.0879,
"open": 1.08991
},
{
"close": 1.09591,
"date": "2019-10-02",
"high": 1.09638,
"low": 1.09039,
"open": 1.09331
},
....
{
"close": 1.10055,
"date": "2019-10-10",
"high": 1.10341,
"low": 1.09702,
"open": 1.09711
}
],
"request_time": "Thu, 31 Oct 2019 15:34:09 GMT",
"start_date": "2019-10-01"
}
Pandas Data Frame
PandasDF api endpoint provides daily OHLC data for the currency requested in a pandas Data Frame that makes it really easy for python developers to use historical currency data. Request single currency when field parameter is "ohlc". Can request multiple currency when field is "close". Data is available for upto 15-year (for some exotic currency pairs history may be less) but max request is one-year per request.
Request parameters:
Params |
Description |
currency |
EURUSD |
start_date |
2019-10-01 |
end_date |
2019-10-10 |
format |
records (other choices are - index , columns, split) |
fields |
ohlc (other choice is - close) |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/pandasDF?currency=EURUSD&api_key=api_key&start_date=2019-10-01&end_date=2019-10-10&format=records&fields=ohlc
[
{
"close": 1.09331,
"date": "2019-10-01",
"high": 1.09437,
"low": 1.0879,
"open": 1.08991
},
{
"close": 1.09591,
"date": "2019-10-02",
"high": 1.09638,
"low": 1.09039,
"open": 1.09331
},
....
{
"close": 1.10055,
"date": "2019-10-10",
"high": 1.10341,
"low": 1.09702,
"open": 1.09711
}
]
Convert
The API provides conversion from one currency to another in real-time.
Request parameters:
Params |
Description |
from |
EUR |
to |
GBP |
amount |
1000 |
api_key |
Your API key |
https://marketdata.tradermade.com/api/v1/convert?api_key=api_key&from=EUR&to=GBP&amount=1000
{
"base_currency": "EUR",
"quote": 0.861,
"quote_currency": "GBP",
"requested_time": "Thu, 31 Oct 2019 14:46:35 GMT",
"timestamp": 1572533196,
"total": 861
}
PHP (CURL)
Below is an example for convert exchange rates data using PHP (CURL):
?php
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_PORT => "443",
CURLOPT_URL => "https://marketdata.tradermade.com/api/v1/convert?from=EUR&to=USD&amount=1000&api_key=api_key",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?php
$curl = curl_init();
curl_setopt_array( $curl, array(
CURLOPT_PORT => "443",
CURLOPT_URL => "https://marketdata.tradermade.com/api/v1/convert?from=EUR&to=USD&amount=1000&api_key=api_key",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
Python
Below is an example for live exchange rates data using Python:
import requests
url = "https://marketdata.tradermade.com/api/v1/live"
querystring = {"currency":"USDJPY","api_key":"api_key"}
response = requests.get(url, params=querystring)
print(response.json())
import requests
url = "https://marketdata.tradermade.com/api/v1/live"
querystring = {"currency":"USDJPY","api_key":"api_key"}
response = requests.get(url, params=querystring)
print(response.json())
JavaScript (fetch)
Below is an example for historical exchange rates data using jQuery:
var requestOptions = {
method : 'GET',
redirect : 'follow'
};
fetch( 'https://marketdata.tradermade.com/api/v1/historical?currency=EURUSD%2CGBPUSD&date=2019-10-09&api_key=api_key', requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log( 'error', error));
var requestOptions = {
method : 'GET',
redirect : 'follow'
};
fetch( 'https://marketdata.tradermade.com/api/v1/historical?currency=EURUSD%2CGBPUSD&date=2019-10-09&api_key=api_key', requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log( 'error', error));
JavaScript (jQuery)
Below is an example for historical exchange rates data using jQuery:
var settings = {
"url": "/api/v1/historical?currency=EURUSD%2CGBPUSD&date=2019-10-09&api_key=api_key",
"method": "GET",
"timeout": 0,
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var settings = {
"url": "/api/v1/historical?currency=EURUSD%2CGBPUSD&date=2019-10-09&api_key=api_key",
"method": "GET",
"timeout": 0,
};
$.ajax(settings).done(function (response) {
console.log(response);
});