The EODHD Macroeconomic Data API exposes two virtual exchanges through the standard End-of-Day endpoint: GBOND for sovereign bond yields and MONEY for money-market rates and central-bank foreign exchange reference rates. Both share the same request shape as any other EOD ticker on the platform — only the exchange code distinguishes them.
The endpoints are available on Fundamentals Data Feed and All-in-One plans. API call consumption depends on the exchange: GBOND consumes 1 API call per request, MONEY consumes 10 API calls per request, regardless of how many years of history are returned.
Quick jump:
Government Bonds (GBOND)
The GBOND virtual exchange currently covers 117 government bond yield series across 28 countries, with daily values back to 2000 or earlier depending on the country. Each series corresponds to one country/tenor pair (for example, UK10Y.GBOND is the United Kingdom 10-year benchmark yield).
Available tenors across the universe: 1M, 3M, 6M, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 20Y, 30Y. Not every country exposes the full curve — see the symbol list endpoint for the exact set per country.
Covered countries: Australia, Austria, Canada, Chile, China, France, Germany, Greece, India, Indonesia, Italy, Japan, Korea, Malaysia, Mexico, Netherlands, New Zealand, Nigeria, Norway, Portugal, Singapore, Spain, Sweden, Switzerland, Thailand, Turkey, United Kingdom, United States.
Symbol List
To retrieve the full list of available bond tickers, use the Exchange Symbols API with exchange code GBOND:
https://eodhd.com/api/exchange-symbol-list/GBOND?api_token=YOUR_TOKEN&fmt=json
Request Example
https://eodhd.com/api/eod/UK10Y.GBOND?api_token=YOUR_TOKEN&fmt=json
curl --location "https://eodhd.com/api/eod/UK10Y.GBOND?api_token=YOUR_TOKEN&fmt=json"
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://eodhd.com/api/eod/UK10Y.GBOND?api_token=YOUR_TOKEN&fmt=json',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$data = curl_exec($curl);
curl_close($curl);
try {
$data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
var_dump($data);
} catch (Exception $e) {
echo 'Error. '.$e->getMessage();
}
import requests url = f'https://eodhd.com/api/eod/UK10Y.GBOND?api_token=YOUR_TOKEN&fmt=json' data = requests.get(url).json() print(data)
library(httr) library(jsonlite) url <- 'https://eodhd.com/api/eod/UK10Y.GBOND?api_token=YOUR_TOKEN&fmt=json' response <- GET(url) if (http_type(response) == "application/json") { content <- content(response, "text", encoding = "UTF-8") cat(content) } else { cat("Error while receiving data\n") }
Try it now (it's free)!
How to use it (YouTube)
The response format is identical to any other EOD request — see the End-of-Day API documentation for full request parameters (from, to, period, order, fmt) and response fields.
EURIBOR
EURIBOR (Euro Interbank Offered Rate) is the benchmark interest rate at which Eurozone banks lend to one another in euros. Unlike LIBOR, EURIBOR remains active and is published daily by the European Money Markets Institute (EMMI).
EODHD exposes five EURIBOR tenors through the MONEY virtual exchange:
| Ticker | Tenor |
|---|---|
| EURIBOR1W.MONEY | 1 week |
| EURIBOR1M.MONEY | 1 month |
| EURIBOR3M.MONEY | 3 months |
| EURIBOR6M.MONEY | 6 months |
| EURIBOR12M.MONEY | 12 months |
Request Example
https://eodhd.com/api/eod/EURIBOR3M.MONEY?api_token=YOUR_TOKEN&fmt=json
curl --location "https://eodhd.com/api/eod/EURIBOR3M.MONEY?api_token=YOUR_TOKEN&fmt=json"
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://eodhd.com/api/eod/EURIBOR3M.MONEY?api_token=YOUR_TOKEN&fmt=json',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$data = curl_exec($curl);
curl_close($curl);
try {
$data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
var_dump($data);
} catch (Exception $e) {
echo 'Error. '.$e->getMessage();
}
import requests url = f'https://eodhd.com/api/eod/EURIBOR3M.MONEY?api_token=YOUR_TOKEN&fmt=json' data = requests.get(url).json() print(data)
library(httr) library(jsonlite) url <- 'https://eodhd.com/api/eod/EURIBOR3M.MONEY?api_token=YOUR_TOKEN&fmt=json' response <- GET(url) if (http_type(response) == "application/json") { content <- content(response, "text", encoding = "UTF-8") cat(content) } else { cat("Error while receiving data\n") }
Try it now (it's free)!
How to use it (YouTube)
LIBOR (Deprecated)
LIBOR (London Interbank Offered Rate) was the global money-market reference rate from the 1980s until its phased cessation between 2021 and 2024. LIBOR is no longer published in any currency or tenor. All currency panels have been wound down by the ICE Benchmark Administration, including the temporary synthetic-LIBOR settings that were kept alive for legacy contract fallback.
The cessation timeline is as follows:
| Currency | Last published observation in EODHD | Notes |
|---|---|---|
| EUR LIBOR | 2021-12-31 | All tenors ceased end-2021. Use EURIBOR or €STR going forward |
| JPY LIBOR | 2022-12-30 | All tenors ceased end-2022. Use TONA going forward |
| GBP LIBOR | 2023-03-31 | Panel cessation end-2021; synthetic GBP LIBOR for 1M/3M/6M ran through March 2024. Use SONIA going forward |
| USD LIBOR | 2024-09-30 | Panel cessation 30 June 2023; synthetic USD LIBOR ran through September 2024. Use SOFR going forward |
Historical LIBOR data remains accessible through the same ticker pattern that was previously documented (for example, LIBORUSD3M.MONEY, LIBOREUR2M.MONEY), but no new observations will be added. LIBOR tickers are no longer surfaced in the MONEY Exchange Symbols listing — they are kept available for backtests and historical analysis only.
For current money-market reference rates, use the risk-free rates (SOFR, SONIA, €STR, TONA) listed in the Coming Soon section, or the policy rates published directly by the Federal Reserve, ECB, Bank of England, and Bank of Japan.
ECB Exchange Rates
The European Central Bank publishes euro foreign exchange reference rates every working day at around 16:00 CET. The rates are based on a regular daily procedure between central banks across Europe, with the source fixing taking place at 14:15 CET. EODHD ingests the published values and makes them available by 17:00 CET on each working day.
All ECB rates are quoted with the euro as the base currency and follow the ticker pattern ECBEUR<CCY>.MONEY, where <CCY> is the ISO 4217 code of the quote currency. 42 currency pairs are currently exposed, covering major and emerging-market currencies.
Request Example
https://eodhd.com/api/eod/ECBEURUSD.MONEY?api_token=YOUR_TOKEN&fmt=json
curl --location "https://eodhd.com/api/eod/ECBEURUSD.MONEY?api_token=YOUR_TOKEN&fmt=json"
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://eodhd.com/api/eod/ECBEURUSD.MONEY?api_token=YOUR_TOKEN&fmt=json',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$data = curl_exec($curl);
curl_close($curl);
try {
$data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
var_dump($data);
} catch (Exception $e) {
echo 'Error. '.$e->getMessage();
}
import requests url = f'https://eodhd.com/api/eod/ECBEURUSD.MONEY?api_token=YOUR_TOKEN&fmt=json' data = requests.get(url).json() print(data)
library(httr) library(jsonlite) url <- 'https://eodhd.com/api/eod/ECBEURUSD.MONEY?api_token=YOUR_TOKEN&fmt=json' response <- GET(url) if (http_type(response) == "application/json") { content <- content(response, "text", encoding = "UTF-8") cat(content) } else { cat("Error while receiving data\n") }
Try it now (it's free)!
How to use it (YouTube)
The full list of supported currency pairs is available through the Exchange Symbols API with code MONEY — filter for tickers beginning with ECBEUR.
Norges Bank Exchange Rates
Norges Bank, the central bank of Norway, publishes daily middle exchange rates against the Norwegian krone (NOK) — the midpoint between buying and selling rates in the interbank market at a given time. Publication time is approximately 16:00 CET. The rates are intended as indicative reference values and are not binding on Norges Bank or on commercial banks.
All Norges Bank rates use NOK as the quote currency and follow the ticker pattern NORGE<CCY>NOK.MONEY. 38 currency pairs are currently exposed.
Request Example
https://eodhd.com/api/eod/NORGEUSDNOK.MONEY?api_token=YOUR_TOKEN&fmt=json
curl --location "https://eodhd.com/api/eod/NORGEUSDNOK.MONEY?api_token=YOUR_TOKEN&fmt=json"
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://eodhd.com/api/eod/NORGEUSDNOK.MONEY?api_token=YOUR_TOKEN&fmt=json',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
));
$data = curl_exec($curl);
curl_close($curl);
try {
$data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
var_dump($data);
} catch (Exception $e) {
echo 'Error. '.$e->getMessage();
}
import requests url = f'https://eodhd.com/api/eod/NORGEUSDNOK.MONEY?api_token=YOUR_TOKEN&fmt=json' data = requests.get(url).json() print(data)
library(httr) library(jsonlite) url <- 'https://eodhd.com/api/eod/NORGEUSDNOK.MONEY?api_token=YOUR_TOKEN&fmt=json' response <- GET(url) if (http_type(response) == "application/json") { content <- content(response, "text", encoding = "UTF-8") cat(content) } else { cat("Error while receiving data\n") }
Try it now (it's free)!
How to use it (YouTube)
Coming June 2026
The Macroeconomic Data API is being extended with a full set of post-LIBOR risk-free rates and central-bank policy rates, drawn from public central-bank and FRED data feeds. Expected release: June 2026.
Risk-Free Rates (RFR backbone)
Eleven overnight and term-average reference rates covering USD, EUR, and GBP markets. These are the official LIBOR replacements adopted by central banks and trade associations.
| Series | Description | Source |
|---|---|---|
| SOFR | Secured Overnight Financing Rate, USD overnight | NY Fed |
| SOFRINDEX | SOFR compounded index from inception | FRED |
| SOFR30D, SOFR90D, SOFR180D | Official compounded SOFR averages (30 / 90 / 180 days) | FRED |
| EFFR | Effective Federal Funds Rate, USD overnight | NY Fed / FRED |
| OBFR | Overnight Bank Funding Rate, USD | NY Fed |
| TGCR, BGCR | Tri-party and Broad General Collateral repo rates, USD | NY Fed |
| SONIA | Sterling Overnight Index Average, GBP overnight | Bank of England |
| €STR | Euro Short-Term Rate, EUR overnight | European Central Bank |
Central Bank Policy Rates
| Series | Description | Source |
|---|---|---|
| Fed Target Range (Lower, Upper) | Federal Reserve target federal funds range | FRED |
| ECB DFR, MRO, MLF | ECB Deposit Facility Rate, Main Refinancing Operations rate, Marginal Lending Facility rate | European Central Bank |
| BoE Bank Rate | Bank of England policy rate | Bank of England |
Additional Benchmarks
The same release window will add two further benchmark series alongside the RFR and policy-rate sets:
| Series | Description |
|---|---|
| EUR IRS 10Y | Euro Interest Rate Swap, 10-year term benchmark — the most quoted point on the EUR swap curve, used for long-dated EUR funding and hedging |
| Canadian Prime Rate | Reference lending rate published by major Canadian commercial banks, set in line with the Bank of Canada overnight target |
Sovereign CDS Proxies
Sovereign credit risk indicators are planned as a follow-on release. Pure dealer CDS pricing (single-name CDS spreads) is not available through public data feeds; EODHD will publish methodology-driven derivatives instead — bond-spread proxies vs benchmark sovereigns, blended with rating-implied spreads and Damodaran country risk premium anchors. The previous “CDS Coming Soon” placeholder is being replaced by this concrete plan.
Response Format
All Macroeconomic Data API endpoints share the standard EOD response shape — a JSON array of daily observations:
[
{
"date": "2026-05-27",
"open": 4.45,
"high": 4.512,
"low": 4.42,
"close": 4.476,
"adjusted_close": 4.476,
"volume": 0
}
]
| Field | Type | Description |
|---|---|---|
| date | string (date) | Observation date in YYYY-MM-DD format |
| open, high, low, close | number | Yield or rate value. For most series only close is meaningful; open/high/low typically equal close because these series have one published value per day. Currency reference rates may carry distinct OHLC if upstream provides them |
| adjusted_close | number | Equal to close for these series — there are no corporate actions to adjust |
| volume | integer | Trading volume where applicable (futures, repo). Zero for rates and FX reference series |
Known Limitations
- LIBOR is historical-only. All four LIBOR currency panels have ceased. Historical data remains queryable through the legacy ticker pattern, but no new observations are added. Migrate to SOFR / SONIA / €STR / TONA or to EURIBOR for ongoing rate needs.
- OHLC fields on rate series. Most rate series publish a single daily value; the API still returns open/high/low/close fields for schema consistency, but for rates the four values are typically equal. Use the close field as the daily value.
- MONEY exchange API cost. Each MONEY request consumes 10 API calls regardless of the date range. For backtests requiring many tickers, plan the call budget accordingly. GBOND requests cost 1 API call each.
- Currency pair coverage may change. ECB occasionally adds or retires reference currencies (for example, currencies that have joined or left the euro). The Exchange Symbols API reflects the current set; previously published rates remain in the historical record.
- Norges Bank rates are indicative. Per Norges Bank’s own disclaimer, the rates are middle rates from the interbank market and are not binding on Norges Bank or on commercial banks. Do not use for settlement.