You need reliable, machine-readable access to the Ireland 10-year government bond yield, plus the tools to compute curves and spreads and to embed that data into risk, research, or trading dashboards. By the end of this article, you will be able to query the Ireland 10Y yield via the Bonds API, fetch historical and intraday snapshots, build a full Irish curve, compute spreads to benchmarks, and handle edge cases like holidays and caching.
What the Ireland 10Y yield represents and how Bonds API returns it
The Ireland 10-year bond yield reflects the market’s required return to lend to the Irish government for a decade. For fixed-income analytics, the 10Y point anchors duration, curve shape, term premium, and cross-country spread analysis. Bonds API provides this data via REST, with yields expressed as percentages (for example 4.52 means 4.52% per annum). Spreads are returned in basis points (bps), where 1 bp = 0.01%.
All endpoints are HTTP GET under https://bonds-api.com/api/v1/ and authenticate with the X-API-Key header. Dates are ISO 8601 (Y-m-d) and timestamps are UTC. Market data generally updates on business days; official sources do not publish on weekends or market holidays. If a requested date is non-trading, the response will return the closest available business day depending on the endpoint and availability. See bonds-api.com for coverage details. To provision an API key, use Register and explore models via the MCP.
Authentication, date conventions, and caching
Authentication uses the X-API-Key header. Do not pass keys as query parameters. Example header: X-API-Key: YOUR_API_KEY. All endpoints are GET and idempotent.
Time and date: All date strings are YYYY-MM-DD. Intraday timestamps use UTC with a Z suffix (for example 2026-10-09T12:00:00Z). Store and compare dates in UTC to avoid DST issues. For static research workloads, you can safely cache daily endpoints until the next business day; for intraday monitoring, cache for minutes and re-poll if you need near-real-time snapshots.
Holidays and weekends: If a given date is a holiday for Irish markets, daily endpoints will return the latest available official day’s data where applicable. Intraday requires an active trading date (you must supply a valid date with intraday snapshots).
Yields and units: All yields are percentages. The spread endpoint returns spread_bps, which is an integer or decimal in basis points (e.g., 215 bps equals 2.15%).
Fetch the latest Ireland 10Y yield
Use the latest endpoint to pull the most recent daily close for IE across specific maturities. You can pass multiple maturities to compose a partial curve or focus on the 10Y anchor.
cURL
curl -s "https://bonds-api.com/api/v1/latest?countries=US&maturities=10Y&api_key=YOUR_API_KEY"
JSON response
{
"success": true,
"date": "2026-10-09",
"rates": {
"US_10Y": 5.234
},
"dates": {
"US_10Y": "2026-10-09"
},
"currencies": {
"US_10Y": "USD"
},
"meta": {
"request_id": "e8dd8752-9be1-4689-be63-abe0c6426f15",
"timestamp": "2026-10-09T00:04:43+00:00"
}
}
Fields you will use: data.IE.10Y.yield is the latest daily yield in percent. data.IE.10Y.date is the official date (Y-m-d). source signals provenance (for example “official”).
Python (requests)
import requests
resp = requests.get(
"https://bonds-api.com/api/v1/latest",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "IE", "maturities": "2Y,10Y"}
)
resp.raise_for_status()
latest = resp.json()
ie_10y = latest["data"]["IE"]["10Y"]["yield"]
ie_10y_date = latest["data"]["IE"]["10Y"]["date"]
print("IE 10Y:", ie_10y, "as of", ie_10y_date)
JavaScript (fetch)
const url = new URL("https://bonds-api.com/api/v1/latest");
url.search = new URLSearchParams({ countries: "IE", maturities: "2Y,10Y" }).toString();
fetch(url.toString(), {
method: "GET",
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(json => {
const y = json.data.IE["10Y"].yield;
const d = json.data.IE["10Y"].date;
console.log(`IE 10Y ${y}% on ${d}`);
});
PHP (file_get_contents)
<?php
$context = stream_context_create([
"http" => [
"method" => "GET",
"header" => "X-API-Key: YOUR_API_KEY\r\n"
]
]);
$url = "https://bonds-api.com/api/v1/latest?countries=IE&maturities=2Y,10Y";
$json = file_get_contents($url, false, $context);
$data = json_decode($json, true);
$yield = $data["data"]["IE"]["10Y"]["yield"];
$date = $data["data"]["IE"]["10Y"]["date"];
echo "IE 10Y $yield% on $date\n";
Query the Ireland 10Y on a specific date
Use the historical endpoint when you need a single daily data point for an exact date, for example to reproduce end-of-month analytics or backtest a signal.
cURL
JSON response
yield is the 10Y rate in percent for the specified date. If the market was closed on that date, expect the closest available business day depending on data availability and conventions.
Python
import requests
params = {"country": "IE", "maturity": "10Y", "date": "2025-06-15"}
r = requests.get("https://bonds-api.com/api/v1/historical",
headers={"X-API-Key": "YOUR_API_KEY"},
params=params)
r.raise_for_status()
point = r.json()
print(point["country"], point["maturity"], point["date"], point["yield"])
JavaScript
const url = new URL("https://bonds-api.com/api/v1/historical");
url.search = new URLSearchParams({ country: "IE", maturity: "10Y", date: "2025-06-15" });
fetch(url.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(j => console.log(j.country, j.maturity, j.date, j.yield));
PHP
<?php
$q = http_build_query(["country" => "IE", "maturity" => "10Y", "date" => "2025-06-15"]);
$opts = ["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]];
$ctx = stream_context_create($opts);
$res = file_get_contents("https://bonds-api.com/api/v1/historical?$q", false, $ctx);
echo $res;
Retrieve a time series of Ireland 10Y yields
Use the timeseries endpoint to power charts, factor regressions, and rolling risk models. You provide start and end dates to receive a list of daily observations.
cURL
JSON response
series is an array of daily points. Each yield is in percent on the given date. You can compute daily changes, rolling volatility, or month-end composites directly from these values.
Python
import requests
import pandas as pd
params = {"country": "IE", "maturity": "10Y", "start": "2025-10-09", "end": "2026-10-09"}
r = requests.get("https://bonds-api.com/api/v1/timeseries",
headers={"X-API-Key": "YOUR_API_KEY"},
params=params)
r.raise_for_status()
j = r.json()
df = pd.DataFrame(j["series"]).assign(date=lambda d: pd.to_datetime(d["date"]))
df = df.sort_values("date")
print(df.head())
JavaScript
const p = { country: "IE", maturity: "10Y", start: "2025-10-09", end: "2026-10-09" };
const u = new URL("https://bonds-api.com/api/v1/timeseries"); u.search = new URLSearchParams(p);
fetch(u.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(j => {
const series = j.series.map(pt => ({ t: new Date(pt.date + "T00:00:00Z"), y: pt.yield }));
console.log(series.length, "points");
});
PHP
<?php
$params = http_build_query(["country" => "IE", "maturity" => "10Y", "start" => "2025-10-09", "end" => "2026-10-09"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$json = file_get_contents("https://bonds-api.com/api/v1/timeseries?$params", false, $ctx);
echo $json;
Compute the Ireland 10Y spread vs a benchmark
Use the spread endpoint to compare the Irish 10Y against a benchmark such as the US 10Y or German Bund. The response includes spread_bps along with each yield.
cURL
JSON response
spread_bps is Ireland minus benchmark in basis points. country_yield and benchmark_yield are each in percent. Use this to monitor risk premia and convergence trades.
Python
import requests
r = requests.get(
"https://bonds-api.com/api/v1/spread",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "IE", "benchmark": "US", "maturity": "10Y"}
)
j = r.json()
print(f"IE vs {j['benchmark']} 10Y spread: {j['spread_bps']} bps")
JavaScript
const u = new URL("https://bonds-api.com/api/v1/spread");
u.search = new URLSearchParams({ country: "IE", benchmark: "US", maturity: "10Y" });
fetch(u.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(j => console.log(`Spread: ${j.spread_bps} bps (IE ${j.country_yield}% vs ${j.benchmark_yield}%)`));
PHP
<?php
$q = http_build_query(["country" => "IE", "benchmark" => "US", "maturity" => "10Y"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$res = file_get_contents("https://bonds-api.com/api/v1/spread?$q", false, $ctx);
echo $res;
Build the full Ireland yield curve
To construct a complete curve (from bills to the long end), call the curve endpoint. This is ideal for fitting spline curves, computing key rate durations, or pricing curve-dependent instruments.
cURL
JSON response
curve is a map of maturity codes to yields in percent. inverted is a boolean flag indicating whether the curve is inverted on that date. Use these maturities to plot term structures and compute spreads between points (e.g., 2s10s or 10s30s).
Python
import requests
r = requests.get("https://bonds-api.com/api/v1/curve",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "IE"})
curve = r.json()
pts = curve["curve"]
twos_tens = pts["10Y"] - pts["2Y"]
print("2s10s (IE):", round(twos_tens, 2), "pp")
JavaScript
const u = new URL("https://bonds-api.com/api/v1/curve");
u.search = new URLSearchParams({ country: "IE" });
fetch(u.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(j => {
const c = j.curve;
const s = (c["10Y"] - c["2Y"]).toFixed(2);
console.log(`IE 2s10s: ${s} percentage points`);
});
PHP
<?php
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$res = file_get_contents("https://bonds-api.com/api/v1/curve?country=IE", false, $ctx);
echo $res;
Intraday snapshots for the Ireland 10Y
If you need multiple observations within a day—for example, to track yield moves around macro releases—use the intraday endpoint on a trading date.
cURL
JSON response
Each snapshot’s yield is percent; fetched_at is a UTC timestamp. count is the number of snapshots returned. Use meta.timezone to align your display logic.
Python
import requests
from datetime import datetime
p = {"country": "IE", "maturity": "10Y", "date": "2026-10-09"}
r = requests.get("https://bonds-api.com/api/v1/intraday",
headers={"X-API-Key": "YOUR_API_KEY"},
params=p)
j = r.json()
snaps = [(datetime.fromisoformat(s["fetched_at"].replace("Z","+00:00")), s["yield"]) for s in j["snapshots"]]
print(snaps)
JavaScript
const params = { country: "IE", maturity: "10Y", date: "2026-10-09" };
const url = new URL("https://bonds-api.com/api/v1/intraday"); url.search = new URLSearchParams(params);
fetch(url.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(j => j.snapshots.forEach(s => console.log(new Date(s.fetched_at), s.yield)));
PHP
<?php
$q = http_build_query(["country" => "IE", "maturity" => "10Y", "date" => "2026-10-09"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
echo file_get_contents("https://bonds-api.com/api/v1/intraday?$q", false, $ctx);
Fluctuation: change, min, and max for the Ireland 10Y
To summarize performance over a period—start value, end value, change, and range—use the fluctuation endpoint. This is useful for risk reports and KPI tiles.
cURL
JSON response
change is the absolute difference in percentage points between start and end. min and max are extremes over the period, in percent. This compact summary is ideal for dashboards.
Python
import requests
p = {"countries": "IE", "maturity": "10Y", "start": "2025-10-09", "end": "2026-10-09"}
r = requests.get("https://bonds-api.com/api/v1/fluctuation",
headers={"X-API-Key": "YOUR_API_KEY"},
params=p)
j = r.json()
f = j["data"]["IE"]
print(f"Start {f['start_yield']} End {f['end_yield']} Δ {f['change']} (min {f['min']} max {f['max']})")
JavaScript
const q = { countries: "IE", maturity: "10Y", start: "2025-10-09", end: "2026-10-09" };
const u = new URL("https://bonds-api.com/api/v1/fluctuation"); u.search = new URLSearchParams(q);
fetch(u.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(j => {
const f = j.data.IE;
console.log(`Δ ${f.change}pp, range [${f.min}, ${f.max}]%`);
});
PHP
<?php
$q = http_build_query(["countries" => "IE", "maturity" => "10Y", "start" => "2025-10-09", "end" => "2026-10-09"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
echo file_get_contents("https://bonds-api.com/api/v1/fluctuation?$q", false, $ctx);
Official sample block (verbatim)
The following official sample demonstrates a request and response format that you may encounter. It is shown here verbatim for reference.
In this sample, yields are still percentages (for example 5.234 means 5.234%). The date and timestamp are ISO 8601. When integrating programmatically for Ireland, use the endpoints and authentication pattern documented in this article and on bonds-api.com.
Practical build notes: yield curves, spreads, caching, and holidays
- Curve construction: If you only need a few points, call /latest with multiple maturities (e.g., 2Y,5Y,10Y,30Y). For a comprehensive set or a specific as-of date, use /curve.
- Spreads: For cross-country comparison, use /spread to avoid manual alignment. For intra-country curve spreads (e.g., 2s10s), subtract yields from /curve.
- Update frequency: Daily endpoints typically refresh on business days after official publication. Intraday snapshots update multiple times per day as data is fetched; use the timestamps provided.
- Caching: Cache daily responses until the next business day or until your ETL refresh. For intraday, choose a cache duration aligned to your latency target (for example 1–5 minutes).
- Non-trading days: If you query a weekend or holiday, expect the latest available official value for daily endpoints. For intraday, supply an active trading date.
- Error handling: Expect JSON error shapes with success=false and an error message. Handle 401 (invalid key), 403 (quota), 404 (no data for that country/maturity/date), 422 (invalid params), 429 (rate limit), 500 (server error). Implement exponential backoff for 429/500.
Use cases for developers and quants
- Risk dashboards: Pin IE 10Y to a header tile and show day-over-day change using /fluctuation, with a sparkline from /timeseries.
- Curve analytics: Fit a spline to /curve outputs and compute key rate DV01s for 2Y, 5Y, 10Y, 30Y points.
- Macro research: Pull IE 10Y /timeseries and regress against growth/inflation proxies; overlay policy meeting dates using intraday snapshots for event studies.
- Cross-market spread trades: Monitor IE versus US or DE via /spread, with alerts when spread_bps crosses thresholds.
Maturity codes and how to read them
Maturity identifiers are compact strings such as 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, 30Y. In responses, each key maps to a yield in percent. When comparing multiple maturities, consider displaying a table or a curve chart. All fields are in local currency terms (implicit for sovereign yields) unless otherwise noted; spreads are unitless in basis points.
End-to-end example: build an IE 10Y tile with fallback
For a production tile:
- Call /latest with IE 10Y as the primary source.
- If 404 for that day (holiday), show the previous business day’s date and yield. Indicate the as-of date explicitly.
- Optionally, compute day-over-day change from /fluctuation start=end-1 business day.
- For intraday context, pull the latest snapshot from /intraday and display the last fetched_at and yield.
Links and next steps
Explore the endpoints and response fields on bonds-api.com, obtain an API key via Register for Bonds API, and view models and capabilities on the Bonds API MCP. When you are ready to build, you can also Get started with Bonds API in minutes.
FAQ
How are yields and spreads represented?
Yields are decimal percentages (for example 4.52 means 4.52%). Spreads from /spread are in basis points (for example 215 means 2.15%).
What time zone are dates and timestamps?
Dates are Y-m-d (no time zone component). Intraday fetched_at timestamps are UTC (Z). Align your UI and storage to UTC to avoid daylight-saving issues.
How often should I refresh?
Daily endpoints: once per business day after the official publication window. Intraday: based on your latency target (e.g., 1–5 minutes). Implement conditional requests or short caching to reduce load.
What happens on holidays?
Daily queries will return the latest available official value if the market is closed. Intraday requires a valid trading date; otherwise, no snapshots are returned.
How do I handle errors programmatically?
Check HTTP status and parse the JSON body for success=false and an error message string. Handle 401/403 for auth/quota, 404 for unavailable combinations, 422 for invalid params, 429 with backoff, and 500 with retries.
Build your Ireland 10-year yield integrations now. Generate an API key with the Register link and explore the API in the MCP. Then plug the endpoints above into your analytics pipeline and ship your fixed-income dashboards.