The EODHD Interest Rates API provides post-LIBOR risk-free reference rates and central-bank policy rates for the US dollar, sterling, and euro markets. Seventeen series are drawn directly from official sources — the New York Fed, FRED, the Bank of England, and the European Central Bank — and refreshed every working day on a T+1 basis.

The API is split into two endpoints: reference rates (the market-determined risk-free benchmarks that replaced LIBOR, such as SOFR, SONIA, and the euro short-term rate) and policy rates (the rates central banks set directly, such as the Fed funds target range and the ECB deposit facility rate). Both share the same request shape, authentication, and JSON response envelope.

Risk-Free Reference Rates

The Risk-Free Reference Rates endpoint serves the post-LIBOR benchmark family — overnight risk-free rates and their official compounded derivatives across USD, GBP, and EUR markets. These are the rates adopted by central banks and trade associations to replace LIBOR. Eleven series are exposed, sourced from the New York Fed, FRED, the Bank of England, and the European Central Bank.

API Endpoint

https://eodhd.com/api/rates/reference-rates?api_token=YOUR_TOKEN

Method: GET   Auth: api_token query parameter   Cost: 1 API call per request   Pagination: offset / limit (default 20, max 100)   Response format: JSON envelope with data, meta, and links

Query Parameters

ParameterRequiredDescription
api_tokenYesYour EODHD API token
filter[code]NoRestrict to one or more series codes (see Reference Rate Codes below)
filter[currency]NoRestrict to a single currency: USD, GBP, or EUR
filter[from]NoStart date, YYYY-MM-DD. Inclusive
filter[to]NoEnd date, YYYY-MM-DD. Inclusive. Must be on or after filter[from]
page[limit]NoRows per page, 1 to 100. Default 20
page[offset]NoNumber of rows to skip. Default 0

Reference Rate Codes

CodeDescriptionCurrencySource
SOFRSecured Overnight Financing Rate, overnightUSDNY Fed
EFFREffective Federal Funds Rate, overnightUSDNY Fed
OBFROvernight Bank Funding Rate, overnightUSDNY Fed
TGCRTri-Party General Collateral Rate, overnight repoUSDNY Fed
BGCRBroad General Collateral Rate, overnight repoUSDNY Fed
SOFR30D30-day compounded SOFR averageUSDFRED
SOFR90D90-day compounded SOFR averageUSDFRED
SOFR180D180-day compounded SOFR averageUSDFRED
SOFRINDEXSOFR compounded index from inceptionUSDFRED
SONIASterling Overnight Index Average, overnightGBPBank of England
ESTREuro Short-Term Rate, overnightEUREuropean Central Bank

Request Example

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/rates/reference-rates?api_token=YOUR_TOKEN&filter[code]=SOFR&filter[from]=2025-01-01&filter[to]=2025-06-01
curl --location "https://eodhd.com/api/rates/reference-rates?api_token=YOUR_TOKEN&filter[code]=SOFR&filter[from]=2025-01-01&filter[to]=2025-06-01&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/rates/reference-rates?api_token=YOUR_TOKEN&filter[code]=SOFR&filter[from]=2025-01-01&filter[to]=2025-06-01&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/rates/reference-rates?api_token=YOUR_TOKEN&filter[code]=SOFR&filter[from]=2025-01-01&filter[to]=2025-06-01&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/rates/reference-rates?api_token=YOUR_TOKEN&filter[code]=SOFR&filter[from]=2025-01-01&filter[to]=2025-06-01&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)

Response Format

The response is a JSON object with three top-level keys: data (the array of observations), meta (total row count and the active page window), and links (pagination links). Each observation carries the fields below. Rows sourced from the NY Fed additionally include intraday distribution detail.

{
  "data": [
    {
      "date": "2026-06-08",
      "code": "SOFR",
      "currency": "USD",
      "rate_type": "overnight",
      "rate": 3.63,
      "source": "NY_FED",
      "source_series_id": "secured/sofr",
      "percentiles": { "p1": 3.57, "p25": 3.61, "p75": 3.68, "p99": 3.71 },
      "volume_billion_usd": 3115
    }
  ],
  "meta": { "total": 226, "page": { "offset": 0, "limit": 20 } },
  "links": { "next": "https://eodhd.com/api/rates/reference-rates?page[offset]=20&page[limit]=20" }
}
FieldTypeDescription
datestring (date)Observation date, YYYY-MM-DD
codestringSeries code (see Reference Rate Codes)
currencystringCurrency of the rate: USD, GBP, or EUR
rate_typestringOne of overnight, average, or index
ratenumberRate value in percent
sourcestringUpstream provider: NY_FED, FRED, ECB, or BOE
source_series_idstringIdentifier of the series at the upstream source
percentilesobjectNY Fed rows only. Intraday rate distribution: p1, p25, p75, p99
volume_billion_usdnumberNY Fed rows only. Transaction volume underpinning the rate, in USD billions

Central Bank Policy Rates

The Central Bank Policy Rates endpoint serves the official rates set by major central banks — the rates the monetary authority controls directly, as distinct from the market-determined reference rates above. Six series are exposed across the Federal Reserve, the European Central Bank, and the Bank of England. It shares the same request shape, authentication, and response envelope as the reference rates endpoint.

API Endpoint

https://eodhd.com/api/rates/policy-rates?api_token=YOUR_TOKEN

Method: GET   Auth: api_token query parameter   Cost: 1 API call per request   Pagination: offset / limit (default 20, max 100)   Response format: JSON envelope with data, meta, and links

Query Parameters

ParameterRequiredDescription
api_tokenYesYour EODHD API token
filter[code]NoRestrict to one or more policy rate codes (see Policy Rate Codes below)
filter[country]NoRestrict to a single jurisdiction: US, EU, or GB
filter[central_bank]NoRestrict to a single central bank: FED, ECB, or BOE
filter[from]NoStart date, YYYY-MM-DD. Inclusive
filter[to]NoEnd date, YYYY-MM-DD. Inclusive. Must be on or after filter[from]
page[limit]NoRows per page, 1 to 100. Default 20
page[offset]NoNumber of rows to skip. Default 0

Policy Rate Codes

CodeDescriptionCentral BankSource
FED_TARGET_LOWERFederal funds target range, lower boundFEDFRED
FED_TARGET_UPPERFederal funds target range, upper boundFEDFRED
ECB_DFRECB Deposit Facility RateECBEuropean Central Bank
ECB_MROECB Main Refinancing Operations rateECBEuropean Central Bank
ECB_MLFECB Marginal Lending Facility rateECBEuropean Central Bank
BOE_BANK_RATEBank of England official Bank RateBOEBank of England

Request Example

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/rates/policy-rates?api_token=YOUR_TOKEN&filter[central_bank]=ECB&filter[from]=2025-01-01
curl --location "https://eodhd.com/api/rates/policy-rates?api_token=YOUR_TOKEN&filter[central_bank]=ECB&filter[from]=2025-01-01&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/rates/policy-rates?api_token=YOUR_TOKEN&filter[central_bank]=ECB&filter[from]=2025-01-01&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/rates/policy-rates?api_token=YOUR_TOKEN&filter[central_bank]=ECB&filter[from]=2025-01-01&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/rates/policy-rates?api_token=YOUR_TOKEN&filter[central_bank]=ECB&filter[from]=2025-01-01&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)

Response Format

The response uses the same data / meta / links envelope as the reference rates endpoint. Each observation carries the fields below.

{
  "data": [
    {
      "date": "2026-06-10",
      "code": "ECB_DFR",
      "country": "EU",
      "central_bank": "ECB",
      "rate": 2.0,
      "source": "ECB",
      "source_series_id": "FM/D.U2.EUR.4F.KR.DFR.LEV"
    }
  ],
  "meta": { "total": 226, "page": { "offset": 0, "limit": 20 } },
  "links": { "next": "https://eodhd.com/api/rates/policy-rates?page[offset]=20&page[limit]=20" }
}
FieldTypeDescription
datestring (date)Observation date, YYYY-MM-DD
codestringPolicy rate code (see Policy Rate Codes)
countrystringJurisdiction: US, EU, or GB
central_bankstringCentral bank: FED, ECB, or BOE
ratenumberPolicy rate value in percent
sourcestringUpstream provider: FRED, ECB, or BOE
source_series_idstringIdentifier of the series at the upstream source

Response Codes

Both endpoints return the same set of HTTP status codes.

CodeMeaning
200Success. Response body carries data, meta, and links
401Missing or invalid api_token
403Token is valid but the plan does not include access to the rates endpoints
422Invalid parameter — malformed date, page[limit] above 100, end date before start date, or a filter key that does not belong to the endpoint

Notes and Limitations

  • Dedicated endpoints, not EOD tickers. These rates are served through filter and page query parameters and return a data / meta / links envelope. They are not part of the End-of-Day ticker universe and have no .MONEY or .GBOND ticker.
  • Pagination. Use page[offset] and page[limit] to page through results, or follow the links.next URL. meta.total reports the full row count for the current filter. The maximum page size is 100 rows.
  • NY Fed distribution fields. The percentiles and volume_billion_usd fields are present only on rows sourced from the New York Fed (SOFR, EFFR, OBFR, TGCR, BGCR). Rows from FRED, the ECB, and the Bank of England omit these fields rather than returning null.
  • Filter keys are endpoint-specific. currency applies to reference rates only; country and central_bank apply to policy rates only. Passing a filter key that does not belong to the endpoint returns 422.
  • Daily refresh, T+1. New observations land one business day after the source publishes. Publication windows differ by source (Bank of England and ECB in the European morning, NY Fed and FRED after the New York Fed release).

For EURIBOR, historical LIBOR, government bond yields, and central-bank FX reference rates, see the Macroeconomic Data API. For the US Treasury constant-maturity, bill, and yield curve series, see the US Treasury Interest Rates API.

Sign up & Get Data