ECB Deposit Facility (ECB_DEPOSIT) Rate History

ECB Deposit Facility (ECB_DEPOSIT) Rate History

You need to programmatically pull the ECB Deposit Facility rate, track its history, and compute downstream metrics (spreads, interest costs, and loan payments) directly in your app. By the end of this guide, you’ll integrate the ECB_DEPOSIT symbol from the Interest Rates API into your stack, query historical and time-series data, calculate change statistics and OHLC, and turn the rate into concrete finance calculations without guesswork.

What the ECB Deposit Facility (ECB_DEPOSIT) Represents

ECB_DEPOSIT is the European Central Bank’s deposit facility rate: the interest paid by the Eurosystem on overnight deposits held by eligible counterparties. It is a central bank policy rate that anchors short-term euro money market conditions and influences funding costs, loan pricing, and discount curves across the euro area. In the Interest Rates API, ECB_DEPOSIT is delivered as a daily frequency series.

Illustration: ECB Deposit Facility (ECB_DEPOSIT) Rate History

Units: the API returns rates as percentages (e.g., 2.5 means 2.5%). For calculations, convert to decimals by dividing by 100. Effective dates are exposed explicitly alongside values so you can align rate changes to valuation or settlement dates.

Base currency: ECB_DEPOSIT is quoted in EUR. The “currencies” and “base” fields in responses document this explicitly so you can avoid currency mismatches when mixing symbols.

For documentation, examples, and to obtain an API key, visit interestratesapi.com. You can also explore the MCP hub for model and capability references.

How ECB_DEPOSIT is Published and How to Read Effective Dates

Publication frequency: daily. The series updates on relevant business days and on policy change days as announced by the ECB. On weekends and pan-European public holidays, you should expect no new data points. For most use cases, you can cache the latest result for the remainder of the UTC day and refresh after the API’s “date” field changes.

Important response fields you will use:

  • rates: a map from symbol to numeric rate value (percentage).
  • dates: a map from symbol to the effective date associated with each rate.
  • currencies: a map from symbol to the series currency (for ECB_DEPOSIT this is EUR).
  • frequencies: a map that indicates data frequency for each symbol (e.g., daily).
  • For fluctuation: change, change_pct, high, low over the requested window.
  • For OHLC: open, high, low, close, and data_points over requested periodization.

Time zone conventions: Dates are provided in YYYY-MM-DD without time-of-day stamps. Align to your portfolio or treasury system’s valuation convention (e.g., EOD UTC) when snapshotting.

Endpoint 1 — Catalogue of Symbols (filtering to central bank rates)

Use the symbols endpoint to confirm identifiers, categories, and frequencies. This is useful for validating that ECB_DEPOSIT is available and to discover related ECB rate symbols (e.g., ECB_MRO, ECB_MLF) for spreads or research dashboards.

cURL

curl -s "https://interestratesapi.com/api/v1/latest?api_key=YOUR_API_KEY&symbols=ECB_DEPOSIT"

Python (requests)

import requests

resp = requests.get(
"https://interestratesapi.com/api/v1/symbols",
params={"category": "central_bank", "base": "EUR", "api_key": "YOUR_API_KEY"}
)
symbols = resp.json()
print(symbols.get("success"), symbols.get("count"))

JavaScript (fetch)

const r = await fetch(
"https://interestratesapi.com/api/v1/symbols?category=central_bank&base=EUR&api_key=YOUR_API_KEY"
);
const symbols = await r.json();
console.log(symbols.success, symbols.count);

PHP

<?php
$url = "https://interestratesapi.com/api/v1/symbols?category=central_bank&base=EUR&api_key=YOUR_API_KEY";
$response = file_get_contents($url);
$data = json_decode($response, true);
echo $data["success"] ? "OK\n" : "ERR\n";
?>

Sample JSON response

{
"success": true,
"date": "2026-10-09",
"base": "EUR",
"rates": {
"ECB_DEPOSIT": 2.5
},
"dates": {
"ECB_DEPOSIT": "2026-10-09"
},
"currencies": {
"ECB_DEPOSIT": "EUR"
},
"base_filter_note": null
}

Field notes: symbol is the code to query, frequency tells you how often it updates, and currency_code lets you reconcile base currency across your analytics. For ECB_DEPOSIT, use the exact symbol ECB_DEPOSIT as provided in the available symbols list.

Endpoint 2 — Latest ECB_DEPOSIT Value

Pull the latest available ECB_DEPOSIT rate with explicit date and currency maps. Copy and run the official sample below.

cURL (official sample)

Official JSON (copy verbatim)

How to read it: rates.ECB_DEPOSIT is 2.5 (percent). dates.ECB_DEPOSIT is the effective date (2026-10-09). currencies.ECB_DEPOSIT confirms the series currency is EUR. base is EUR for this response.

Python (requests)

import requests

resp = requests.get(
"https://interestratesapi.com/api/v1/latest",
params={"symbols": "ECB_DEPOSIT", "api_key": "YOUR_API_KEY"}
)
data = resp.json()
rate_pct = data["rates"]["ECB_DEPOSIT"]
effective_date = data["dates"]["ECB_DEPOSIT"]
ccy = data["currencies"]["ECB_DEPOSIT"]
print(f"ECB_DEPOSIT {rate_pct}% on {effective_date} ({ccy})")

JavaScript (fetch)

const response = await fetch(
"https://interestratesapi.com/api/v1/latest?symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY"
);
const data = await response.json();
const ratePct = data.rates.ECB_DEPOSIT;
const eff = data.dates.ECB_DEPOSIT;
console.log(`ECB_DEPOSIT ${ratePct}% effective ${eff}`);

PHP

<?php
$url = "https://interestratesapi.com/api/v1/latest?symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY";
$data = json_decode(file_get_contents($url), true);
$rate = $data["rates"]["ECB_DEPOSIT"];
$date = $data["dates"]["ECB_DEPOSIT"];
echo "ECB_DEPOSIT {$rate}% on {$date}\n";
?>

Endpoint 3 — Historical Value on a Specific Date

When you need the ECB_DEPOSIT rate as of a valuation or accrual date, query the historical endpoint with date=YYYY-MM-DD.

cURL

Python (requests)

import requests

resp = requests.get(
"https://interestratesapi.com/api/v1/historical",
params={"date": "2025-06-15", "symbols": "ECB_DEPOSIT", "api_key": "YOUR_API_KEY"}
)
h = resp.json()
print(h["date"], h["rates"]["ECB_DEPOSIT"], h["currencies"]["ECB_DEPOSIT"])

JavaScript (fetch)

const r = await fetch(
"https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY"
);
const h = await r.json();
console.log(h.date, h.rates.ECB_DEPOSIT, h.currencies.ECB_DEPOSIT);

PHP

<?php
$q = "https://interestratesapi.com/api/v1/historical?date=2025-06-15&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY";
$h = json_decode(file_get_contents($q), true);
echo "{$h["date"]} => {$h["rates"]["ECB_DEPOSIT"]}% ({$h["currencies"]["ECB_DEPOSIT"]})\n";
?>

Sample JSON response

Note: For monthly symbols, the API returns the last day with data within that month. ECB_DEPOSIT is daily, so the value reflects the closest business day with data on or prior to the requested date.

Endpoint 4 — Time Series (start to end)

Use the timeseries endpoint for charts, regressions, and backtests. Provide start, end, and symbols.

cURL

Python (requests)

import requests

resp = requests.get(
"https://interestratesapi.com/api/v1/timeseries",
params={
"start": "2025-10-10",
"end": "2026-10-10",
"symbols": "ECB_DEPOSIT",
"api_key": "YOUR_API_KEY"
}
)
ts = resp.json()
series = ts["rates"]["ECB_DEPOSIT"]
for d, v in series.items():
print(d, v)

JavaScript (fetch)

const r = await fetch(
"https://interestratesapi.com/api/v1/timeseries?start=2025-10-10&end=2026-10-10&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY"
);
const ts = await r.json();
const series = ts.rates.ECB_DEPOSIT;
Object.keys(series).forEach(d => console.log(d, series[d]));

PHP

<?php
$url = "https://interestratesapi.com/api/v1/timeseries?start=2025-10-10&end=2026-10-10&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY";
$ts = json_decode(file_get_contents($url), true);
foreach ($ts["rates"]["ECB_DEPOSIT"] as $date => $value) {
echo "$date $value\n";
}
?>

Sample JSON response

Field notes: The nested map under rates.ECB_DEPOSIT is date → value. Use frequencies to validate series granularity. Use start_date and end_date to confirm the response aligns with your query window.

Endpoint 5 — Fluctuation (change stats over a window)

Fluctuation aggregates the start and end values and computes change, change_pct, and the high/low across your date window. This is ideal for dashboard summaries and alerts.

cURL

Python (requests)

import requests

r = requests.get(
"https://interestratesapi.com/api/v1/fluctuation",
params={"start": "2025-10-10", "end": "2026-10-10", "symbols": "ECB_DEPOSIT", "api_key": "YOUR_API_KEY"}
)
fl = r.json()["rates"]["ECB_DEPOSIT"]
print(fl["start_date"], fl["start_value"], "→", fl["end_date"], fl["end_value"])
print("Δ", fl["change"], "(", fl["change_pct"], "% )", "range:", fl["low"], "-", fl["high"])

JavaScript (fetch)

const r = await fetch(
"https://interestratesapi.com/api/v1/fluctuation?start=2025-10-10&end=2026-10-10&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY"
);
const fl = (await r.json()).rates.ECB_DEPOSIT;
console.log(`${fl.start_date} ${fl.start_value} → ${fl.end_date} ${fl.end_value}`);
console.log(`Δ ${fl.change} (${fl.change_pct}%) range ${fl.low}-${fl.high}`);

PHP

<?php
$url = "https://interestratesapi.com/api/v1/fluctuation?start=2025-10-10&end=2026-10-10&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY";
$fl = json_decode(file_get_contents($url), true)["rates"]["ECB_DEPOSIT"];
echo "{$fl["start_date"]} {$fl["start_value"]} - {$fl["end_date"]} {$fl["end_value"]}\n";
echo "Change {$fl["change"]} ({$fl["change_pct"]}%) High {$fl["high"]} Low {$fl["low"]}\n";
?>

Sample JSON response

Field notes: change_pct is null if start_value is zero. Use start_date and end_date for display and audit trails. These values are illustrative samples from the documentation.

Endpoint 6 — OHLC (open-high-low-close aggregates)

For charts and analytics that benefit from candlestick-style aggregation, request OHLC with a period (weekly, monthly, or quarterly). These are computed from the daily series on-the-fly.

cURL

Python (requests)

import requests

resp = requests.get(
"https://interestratesapi.com/api/v1/ohlc",
params={
"symbols": "ECB_DEPOSIT",
"period": "monthly",
"start": "2025-10-10",
"end": "2026-10-10",
"api_key": "YOUR_API_KEY"
}
)
ohlc = resp.json()["rates"]["ECB_DEPOSIT"]
for bar in ohlc:
print(bar["period"], bar["open"], bar["high"], bar["low"], bar["close"], bar["data_points"])

JavaScript (fetch)

const r = await fetch(
"https://interestratesapi.com/api/v1/ohlc?symbols=ECB_DEPOSIT&period=monthly&start=2025-10-10&end=2026-10-10&api_key=YOUR_API_KEY"
);
const o = (await r.json()).rates.ECB_DEPOSIT;
o.forEach(b => console.log(b.period, b.open, b.high, b.low, b.close, b.data_points));

PHP

<?php
$url = "https://interestratesapi.com/api/v1/ohlc?symbols=ECB_DEPOSIT&period=monthly&start=2025-10-10&end=2026-10-10&api_key=YOUR_API_KEY";
$data = json_decode(file_get_contents($url), true)["rates"]["ECB_DEPOSIT"];
foreach ($data as $bar) {
echo "{$bar["period"]} O{$bar["open"]} H{$bar["high"]} L{$bar["low"]} C{$bar["close"]} n={$bar["data_points"]}\n";
}
?>

Sample JSON response

Field notes: period is a YYYY-MM string for monthly aggregation. data_points tells you the count of daily observations included in that bucket — useful for validating gaps due to holidays.

Endpoint 7 — Convert (interest cost comparison using latest rates)

Use convert to compare simple-loan interest cost between two benchmarks at their latest values. For spreads or relative pricing, ECB_DEPOSIT vs ECB_MRO is a common pairing.

cURL

Python (requests)

import requests

params = {
"from": "ECB_DEPOSIT",
"to": "ECB_MRO",
"amount": 100000,
"term_months": 12,
"api_key": "YOUR_API_KEY"
}
r = requests.get("https://interestratesapi.com/api/v1/convert", params=params)
comp = r.json()
spread = comp["difference"]["rate_spread"]
print(f"Spread: {spread}%, interest saved: {comp['difference']['interest_saved']}")

JavaScript (fetch)

const url = "https://interestratesapi.com/api/v1/convert?from=ECB_DEPOSIT&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
const data = await fetch(url).then(r => r.json());
console.log("Rate spread:", data.difference.rate_spread, "Interest saved:", data.difference.interest_saved);

PHP

<?php
$q = "https://interestratesapi.com/api/v1/convert?from=ECB_DEPOSIT&to=ECB_MRO&amount=100000&term_months=12&api_key=YOUR_API_KEY";
$d = json_decode(file_get_contents($q), true);
echo "Spread: {$d["difference"]["rate_spread"]}% Saved: {$d["difference"]["interest_saved"]}\n";
?>

Sample JSON response

Field notes: difference.rate_spread is the to-vs-from absolute spread in percentage points; interest_saved quantifies the cost delta over the provided term for the amount. Values shown are sample documentation values.

Practical Integration Details That Save Time

Authentication and HTTP method

  • All endpoints are GET only.
  • Authenticate with the api_key query parameter: ?api_key=YOUR_API_KEY. Do not place the key in headers.
  • Base URL for all requests: https://interestratesapi.com/api/v1/

Error handling and rate limits

  • 401: Missing or invalid api_key.
  • 403: Account not active.
  • 404: No symbols matched, or no data for requested date/range (may include details with available ranges).
  • 422: Validation errors like wrong date format or invalid symbol.
  • 429: Quota exhausted. Inspect Retry-After and X-RateLimit-* headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) and back off.

Business days and caching

  • ECB_DEPOSIT is daily; expect gaps on weekends and public holidays. When backfilling, step through business days or use the API’s provided dates for accuracy.
  • Cache the latest response per UTC day if your use case is end-of-day. For intraday checks, revalidate after known policy decision windows or when the “date” field changes.
  • If building dashboards, couple /latest with /fluctuation or /ohlc for near-instant summaries without scanning the entire time series on every refresh.

Units and conversions in code

  • API returns percentage values (e.g., 2.5 for 2.5%). For calculations, convert to decimals via r = rate_pct / 100.
  • Monthly compounding factor for a nominal annual rate: i = r / 12.

Computing spreads and monthly payments

  • Spread between two symbols (e.g., ECB_MRO and ECB_DEPOSIT): spread_pp = rate_mro_pct - rate_deposit_pct (percentage points). Use /latest for both symbols in one call via symbols=ECB_DEPOSIT,ECB_MRO.
  • Simple-loan monthly payment from a nominal annual rate R%:
    • i = (R / 100) / 12
    • payment = P * i / (1 - (1 + i)^(-n)), where P is principal and n is term_months
  • For total interest over the term: total_interest = payment * n - P.
  • Alternatively, use /convert to compare interest costs driven by latest benchmark levels without implementing the math yourself.

Data modeling tips

  • Persist the dates map alongside values to avoid ambiguity when two symbols have different effective dates within the same response.
  • Use timeseries for regression inputs and OHLC for rollup visualization layers; avoid recomputing aggregates on the client when the server can provide them.
  • Check frequencies to prevent accidentally mixing daily series with lower-frequency benchmarks in the same panel.

For more on endpoints and supported symbols, browse interestratesapi.com. To start integrating today, use the Register link to get an API key.

End-to-End Example: ECB_DEPOSIT Dashboard Snippet

This is a minimal flow you can adapt into your platform:

  1. Call /latest for ECB_DEPOSIT to display the current level and effective date.
  2. Call /timeseries for the last year to populate a chart.
  3. Call /fluctuation for YTD or rolling 3-month stats.
  4. Optionally, compare with ECB_MRO via /convert or fetch both in /latest to compute a spread.

JavaScript mini-flow

// 1) Latest
const latest = await fetch(
"https://interestratesapi.com/api/v1/latest?symbols=ECB_DEPOSIT,ECB_MRO&api_key=YOUR_API_KEY"
).then(r => r.json());

const dep = latest.rates.ECB_DEPOSIT;
const depDate = latest.dates.ECB_DEPOSIT;
const mro = latest.rates.ECB_MRO;
const spreadPP = mro - dep; // percentage points

// 2) Time series (last 365 days)
const end = new Date();
const start = new Date(end.getTime() - 365*24*3600*1000);
const fmt = d => d.toISOString().slice(0,10);
const ts = await fetch(
`https://interestratesapi.com/api/v1/timeseries?start=${fmt(start)}&end=${fmt(end)}&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY`
).then(r => r.json());

// 3) Fluctuation over same window
const fl = await fetch(
`https://interestratesapi.com/api/v1/fluctuation?start=${fmt(start)}&end=${fmt(end)}&symbols=ECB_DEPOSIT&api_key=YOUR_API_KEY`
).then(r => r.json());

// Now bind dep, depDate, spreadPP, ts.rates.ECB_DEPOSIT, and fl.rates.ECB_DEPOSIT.* into your UI

Use Cases for ECB_DEPOSIT in Production

  • Loan pricing and treasury dashboards: Show the latest ECB_DEPOSIT and ECB_MRO, their spreads, and rolling-window changes using /latest and /fluctuation.
  • Risk and ALM: Drive scenario matrices with /timeseries to measure sensitivity of funding costs to ECB deposit facility moves.
  • Macro research: Use /ohlc for monthly bars and /timeseries for event studies around Governing Council dates.
  • Fintech apps: Integrate /convert for quick interest cost comparisons between euro benchmarks.

Developer Notes on Robustness

  • Validation: Use the /symbols endpoint at startup to validate that ECB_DEPOSIT is available and to enumerate related symbols for your environment configuration.
  • Resilience: Handle 404s gracefully by showing “no data for date” messages and fall back to the nearest prior business day if your policy allows.
  • Monitoring: Alert on unexpected gaps by checking data_points in /ohlc or counting dates in /timeseries.
  • Security: Keep api_key in server-side code where possible; if calling from the browser, proxy through your backend.

For additional guidance and model-context integration, see the MCP page. General docs and examples live at interestratesapi.com.

FAQs

Q1: Are the ECB_DEPOSIT values percentages or decimals?
A: Percentages. For example, 2.5 means 2.5%. Convert to decimals by dividing by 100 before using the rate in formulas.

Q2: How do I know which date the latest value applies to?
A: Use the dates map in the /latest response. For ECB_DEPOSIT, dates.ECB_DEPOSIT returns the effective date string in YYYY-MM-DD.

Q3: What happens on weekends and holidays?
A: There are no new daily observations on non-business days. When requesting historical or timeseries windows, expect gaps on such days. Use the provided dates in responses to align your accrual or valuation logic.

Q4: How can I compute a loan payment from ECB_DEPOSIT?
A: Convert the latest rate R% to a monthly rate i = (R/100)/12, then payment = P * i / (1 - (1 + i)^(-n)), where P is principal and n is term_months. To compare interest costs between benchmarks, use /convert.

Q5: How should I handle rate limits?
A: On HTTP 429, read Retry-After and the X-RateLimit-* headers to schedule retries. Cache results per business day when feasible to minimize duplicate calls.

Ready to integrate the ECB Deposit Facility rate into your app? Get your API key and start building: Register. You can also continue exploring endpoints and schema references at interestratesapi.com.

Ready to get started?

Get your API key and start validating bank data in minutes.

Get API Key

Related posts