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.

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

URL
cURL
PHP
Python
R
Chat GPT
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")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

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:

TickerTenor
EURIBOR1W.MONEY1 week
EURIBOR1M.MONEY1 month
EURIBOR3M.MONEY3 months
EURIBOR6M.MONEY6 months
EURIBOR12M.MONEY12 months

Request Example

URL
cURL
PHP
Python
R
Chat GPT
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")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

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:

CurrencyLast published observation in EODHDNotes
EUR LIBOR2021-12-31All tenors ceased end-2021. Use EURIBOR or €STR going forward
JPY LIBOR2022-12-30All tenors ceased end-2022. Use TONA going forward
GBP LIBOR2023-03-31Panel cessation end-2021; synthetic GBP LIBOR for 1M/3M/6M ran through March 2024. Use SONIA going forward
USD LIBOR2024-09-30Panel 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

URL
cURL
PHP
Python
R
Chat GPT
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")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

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

URL
cURL
PHP
Python
R
Chat GPT
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")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

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.

SeriesDescriptionSource
SOFRSecured Overnight Financing Rate, USD overnightNY Fed
SOFRINDEXSOFR compounded index from inceptionFRED
SOFR30D, SOFR90D, SOFR180DOfficial compounded SOFR averages (30 / 90 / 180 days)FRED
EFFREffective Federal Funds Rate, USD overnightNY Fed / FRED
OBFROvernight Bank Funding Rate, USDNY Fed
TGCR, BGCRTri-party and Broad General Collateral repo rates, USDNY Fed
SONIASterling Overnight Index Average, GBP overnightBank of England
€STREuro Short-Term Rate, EUR overnightEuropean Central Bank

Central Bank Policy Rates

SeriesDescriptionSource
Fed Target Range (Lower, Upper)Federal Reserve target federal funds rangeFRED
ECB DFR, MRO, MLFECB Deposit Facility Rate, Main Refinancing Operations rate, Marginal Lending Facility rateEuropean Central Bank
BoE Bank RateBank of England policy rateBank of England

Additional Benchmarks

The same release window will add two further benchmark series alongside the RFR and policy-rate sets:

SeriesDescription
EUR IRS 10YEuro 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 RateReference 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
  }
]
FieldTypeDescription
datestring (date)Observation date in YYYY-MM-DD format
open, high, low, closenumberYield 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_closenumberEqual to close for these series — there are no corporate actions to adjust
volumeintegerTrading 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.

Sign up & Get Data