You need Greece’s 10-year government bond yield inside your models and dashboards, with the ability to fetch the latest print, a specific historical date, analyze intraday snapshots, compute spreads, and assemble the full Greek curve. By the end of this article you will know exactly which Bonds API endpoints to call, how to read the responses, and how to turn them into a Greece 10Y yield series, curve, and spreads you can use in production.
What the API returns and how to interpret it
Bonds-API returns sovereign bond yields as percentages (for example, 4.52 means 4.52%). Spreads are returned in basis points (bps), where 1 bp = 0.01%. Dates are provided as YYYY-MM-DD; intraday timestamps are ISO 8601 in UTC. You will authenticate every request with an API key via the X-API-Key header. All requests are HTTP GET to the base URL https://bonds-api.com/api/v1/.
For Greece (ISO2: GR), you can request the 10-year benchmark by maturity code “10Y”. The API also exposes a country curve across multiple standard tenors (for example 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, 30Y), enabling you to build yield curves, compute forward rates, and analyze slope and curvature factors. See the official documentation at https://bonds-api.com and explore endpoints in the MCP.
Operational details: maturities, updates, business days, and caching
- Maturities: Use the maturity codes shown in the endpoint examples (e.g., 2Y, 10Y). When requesting a curve, the API returns a set of standard points across bills and bonds.
- Business days and holidays: Daily series reflect business days for the country’s government bond market calendar. Non-trading days will not produce new prints; use the last available date as needed.
- Update frequency: Latest yields are updated as the official market data becomes available. Intraday snapshots give multiple observations during the day (UTC timestamps).
- Caching: Cache daily endpoints (latest, historical, timeseries, curve, fluctuation) at the date level. Do not cache intraday snapshots for longer than your refresh requirement.
- Error handling: Handle 401/403 for auth/quota, 404 for missing combinations, 422 for invalid params, 429 for rate limiting, and 500 for transient errors. See the “Common errors” section below.
Latest Greece yields (focus on 10Y)
Use this to fetch the current Greece 10Y, optionally alongside other tenors to inspect slope (e.g., 2Y vs 10Y). Yields are percentages; the date is the market date of the observation.
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-15",
"rates": {
"US_10Y": 5.16
},
"dates": {
"US_10Y": "2026-10-15"
},
"currencies": {
"US_10Y": "USD"
},
"meta": {
"request_id": "751919af-bd22-4222-b593-dfaaf4b574b0",
"timestamp": "2026-10-15T00:06:16+00:00"
}
}
Fields: yield is expressed in percent; date is YYYY-MM-DD; source indicates the data provenance (e.g., “official”).
Python (requests)
import requests
resp = requests.get(
"https://bonds-api.com/api/v1/latest",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "GR", "maturities": "2Y,10Y"}
)
data = resp.json()
gr_10y = data["data"]["GR"]["10Y"]["yield"]
asof = data["data"]["GR"]["10Y"]["date"]
print("GR 10Y:", gr_10y, "as of", asof)
JavaScript (fetch)
const url = new URL("https://bonds-api.com/api/v1/latest");
url.searchParams.set("countries", "GR");
url.searchParams.set("maturities", "2Y,10Y");
fetch(url.toString(), {
method: "GET",
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(json => {
const y = json.data.GR["10Y"].yield;
const d = json.data.GR["10Y"].date;
console.log(`GR 10Y: ${y}% as of ${d}`);
});
PHP (file_get_contents)
<?php
$ctx = stream_context_create([
"http" => [
"method" => "GET",
"header" => "X-API-Key: YOUR_API_KEY\r\n"
]
]);
$url = "https://bonds-api.com/api/v1/latest?countries=GR&maturities=2Y,10Y";
$json = file_get_contents($url, false, $ctx);
$data = json_decode($json, true);
$yield = $data["data"]["GR"]["10Y"]["yield"];
$date = $data["data"]["GR"]["10Y"]["date"];
echo "GR 10Y: {$yield}% as of {$date}\n";
Yield on a specific date (historical)
Fetch the Greece 10Y yield for a precise date to anchor event studies or backtests.
cURL
JSON response
Fields: country is ISO2; maturity is the requested tenor; yield is percent; date is the requested day (YYYY-MM-DD).
Python (requests)
import requests
r = requests.get(
"https://bonds-api.com/api/v1/historical",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "GR", "maturity": "10Y", "date": "2025-06-15"}
)
h = r.json()
print("GR 10Y on", h["date"], "=", h["yield"], "%")
JavaScript (fetch)
const params = new URLSearchParams({
country: "GR",
maturity: "10Y",
date: "2025-06-15"
});
fetch(`https://bonds-api.com/api/v1/historical?${params.toString()}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => console.log(`GR 10Y on ${j.date}: ${j.yield}%`));
PHP (file_get_contents)
<?php
$q = http_build_query(["country" => "GR", "maturity" => "10Y", "date" => "2025-06-15"]);
$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/historical?$q", false, $ctx);
$d = json_decode($json, true);
echo "GR 10Y on {$d['date']}: {$d['yield']}%\n";
Time series for Greece 10Y
Retrieve a daily time series between two dates. Missing non-trading days are naturally absent; index by date.
cURL
JSON response
Fields: series is an array of date/yield pairs. Yields are percentages; dates are YYYY-MM-DD.
Python (requests)
import requests
import pandas as pd
resp = requests.get(
"https://bonds-api.com/api/v1/timeseries",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "GR", "maturity": "10Y", "start": "2025-10-15", "end": "2026-10-15"}
)
ts = resp.json()["series"]
df = pd.DataFrame(ts).set_index("date").sort_index()
print(df.tail())
JavaScript (fetch)
const p = new URLSearchParams({
country: "GR",
maturity: "10Y",
start: "2025-10-15",
end: "2026-10-15"
});
fetch(`https://bonds-api.com/api/v1/timeseries?${p}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
const last = j.series[j.series.length - 1];
console.log(`Observations: ${j.series.length}, last = ${last.date} ${last.yield}%`);
});
PHP (file_get_contents)
<?php
$params = http_build_query([
"country" => "GR",
"maturity" => "10Y",
"start" => "2025-10-15",
"end" => "2026-10-15"
]);
$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);
$data = json_decode($json, true);
echo "First: {$data['series'][0]['date']} {$data['series'][0]['yield']}%\n";
Spread vs benchmark (Greece vs Bunds or Treasuries)
Compute the Greece 10Y spread against a benchmark such as Germany (DE) or the US (US). spread_bps is in basis points.
cURL
JSON response
Fields: spread_bps is the yield difference in basis points: (country_yield − benchmark_yield) × 100. country_yield and benchmark_yield are percentages.
Python (requests)
import requests
r = requests.get(
"https://bonds-api.com/api/v1/spread",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "GR", "benchmark": "US", "maturity": "10Y"}
)
s = r.json()
print(f"GR 10Y vs {s['benchmark']}: {s['spread_bps']} bps (GR={s['country_yield']}%, {s['benchmark_yield']}%)")
JavaScript (fetch)
const params2 = new URLSearchParams({
country: "GR",
benchmark: "US",
maturity: "10Y"
});
fetch(`https://bonds-api.com/api/v1/spread?${params2}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
console.log(`Spread: ${j.spread_bps} bps (GR=${j.country_yield}%, ${j.benchmark}=${j.benchmark_yield}%)`);
});
PHP (file_get_contents)
<?php
$q = http_build_query(["country" => "GR", "benchmark" => "US", "maturity" => "10Y"]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$j = file_get_contents("https://bonds-api.com/api/v1/spread?$q", false, $ctx);
$d = json_decode($j, true);
echo "GR 10Y spread vs {$d['benchmark']}: {$d['spread_bps']} bps\n";
Full Greece yield curve
Request the curve to get multiple maturities on a single date, enabling you to visualize the term structure and derive carry/roll metrics. inverted indicates whether shorter maturities yield above longer ones.
cURL
JSON response
Fields: curve is a mapping from maturity code to yield in percent; date is the curve’s as-of date; inverted is a boolean derived from the curve’s slope characteristics.
Python (requests)
import requests
r = requests.get(
"https://bonds-api.com/api/v1/curve",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "GR"}
)
c = r.json()
tenors = ["1M","3M","6M","1Y","2Y","5Y","10Y","30Y"]
points = [(t, c["curve"].get(t)) for t in tenors]
print("Curve date:", c["date"], "inverted:", c["inverted"])
for t, y in points:
if y is not None:
print(t, y)
JavaScript (fetch)
fetch("https://bonds-api.com/api/v1/curve?country=GR", {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
console.log(`Curve as of ${j.date}, inverted=${j.inverted}`);
Object.entries(j.curve).forEach(([tenor, y]) => console.log(tenor, y));
});
PHP (file_get_contents)
<?php
$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/curve?country=GR", false, $ctx);
$curve = json_decode($json, true);
echo "As of {$curve['date']} inverted=" . ($curve['inverted'] ? "true" : "false") . "\n";
foreach ($curve["curve"] as $tenor => $y) {
echo "$tenor $y%\n";
}
Intraday snapshots for Greece 10Y
Use intraday when you need multiple same-day snapshots (for example, to compute rolling betas or to monitor moves around ECB announcements). fetched_at is an ISO 8601 UTC timestamp.
cURL
JSON response
Fields: snapshots is an array of yield (percent) with fetched_at timestamps (UTC). count is the number of snapshots; meta.timezone confirms UTC.
Python (requests)
import requests
from datetime import datetime
r = requests.get(
"https://bonds-api.com/api/v1/intraday",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "GR", "maturity": "10Y", "date": "2026-10-15"}
)
d = r.json()
for s in d["snapshots"]:
ts = datetime.fromisoformat(s["fetched_at"].replace("Z","+00:00"))
print(ts.isoformat(), s["yield"])
JavaScript (fetch)
const qp = new URLSearchParams({ country: "GR", maturity: "10Y", date: "2026-10-15" });
fetch(`https://bonds-api.com/api/v1/intraday?${qp}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
j.snapshots.forEach(s => console.log(`${s.fetched_at} ${s.yield}%`));
});
PHP (file_get_contents)
<?php
$q = http_build_query(["country" => "GR", "maturity" => "10Y", "date" => "2026-10-15"]);
$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/intraday?$q", false, $ctx);
$d = json_decode($json, true);
foreach ($d["snapshots"] as $s) {
echo $s["fetched_at"] . " " . $s["yield"] . "%\n";
}
Fluctuation over a period (change, min, max)
Summarize Greece 10Y movement over a date range, including start and end yields, absolute change (percentage points), and min/max in the interval.
cURL
JSON response
Fields: change is end_yield − start_yield in percentage points; min and max are the extremes in the range, also in percent.
Python (requests)
import requests
r = requests.get(
"https://bonds-api.com/api/v1/fluctuation",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "GR", "maturity": "10Y", "start": "2025-10-15", "end": "2026-10-15"}
)
f = r.json()["data"]["GR"]
print(f"Δ={f['change']}pp (min={f['min']}%, max={f['max']}%)")
JavaScript (fetch)
const q = new URLSearchParams({
countries: "GR",
maturity: "10Y",
start: "2025-10-15",
end: "2026-10-15"
});
fetch(`https://bonds-api.com/api/v1/fluctuation?${q}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
const g = j.data.GR;
console.log(`Start=${g.start_yield}% End=${g.end_yield}% Change=${g.change}pp`);
});
PHP (file_get_contents)
<?php
$params = http_build_query([
"countries" => "GR",
"maturity" => "10Y",
"start" => "2025-10-15",
"end" => "2026-10-15"
]);
$ctx = stream_context_create(["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$j = file_get_contents("https://bonds-api.com/api/v1/fluctuation?$params", false, $ctx);
$d = json_decode($j, true)["data"]["GR"];
echo "Change: {$d['change']}pp, Range: {$d['min']}%-{$d['max']}%\n";
Building the Greece 10Y view: curve, level, and spreads
For a robust 10Y dashboard:
- Use /latest to display the current GR 10Y level and optionally 2Y and 30Y for slope.
- Use /curve to plot the cross-section across bills to long bonds as of the latest date.
- Use /timeseries for historical backfills and rolling windows (e.g., 1y, 3y).
- Use /spread to show GR vs DE or GR vs US spreads in bps alongside levels.
- Use /intraday for event-day monitoring and short-term volatility metrics.
- Use /fluctuation to summarize monthly/quarterly moves for reporting.
Because daily data is date-stamped, you can safely cache by date to avoid recomputation, then refresh when the next official day is published. For intraday, set a refresh interval aligned with your UI needs, and always interpret timestamps in UTC.
Explore more capabilities at bonds-api.com. When you are ready to integrate, use the Register link to obtain an API key and start calling the endpoints shown here.
Common errors and reliability tips
- 401 Missing or invalid X-API-Key: Ensure the header is set exactly as X-API-Key: YOUR_API_KEY.
- 403 Account quota exceeded: Back off and retry after resolving quota.
- 404 No data for requested combination: Verify ISO2 code (GR), maturity (e.g., 10Y), and date.
- 422 Invalid parameter: Check date format (YYYY-MM-DD), maturity code, and ranges (end ≥ start).
- 429 Rate limit exceeded: Respect Retry-After if provided; implement exponential backoff.
- 500 Server error: Retry with jitter; keep idempotent GETs safe with retries.
Production tip: Normalize yields to floats in percent and store dates as UTC dates. For spreads, persist both legs’ yields to enable recomputation and diagnostics.
Note on official sample block (verbatim)
The following official sample is reproduced verbatim. It demonstrates a latest request for a US 10Y symbol; fields differ from the Greece-specific endpoints shown above. Treat it as a reference sample and follow the Greece examples for GR usage and the X-API-Key header authentication pattern outlined earlier.
Sovereign bond fundamentals in one paragraph
Sovereign bonds finance governments, and their yields reflect expectations for policy rates, inflation, term premium, and credit risk. The 10-year point is a widely used benchmark that anchors discount rates and macro expectations. Developers and analysts use the 10Y to price cash flows, run sensitivity analyses (DV01), and monitor risk via spreads versus core benchmarks.
Real-world use cases for the Greece 10Y
- Financial dashboards: Show GR 10Y level, daily change, and a mini 1M sparkline using /latest and /timeseries.
- Risk tools: Compute key rate exposures around 10Y and report GR vs DE spreads via /spread.
- Macro research: Compare curve slope (2s10s) and inversion signals using /curve.
- Event analysis: Track intraday moves around ECB or local auctions with /intraday snapshots.
- Periodic summaries: Use /fluctuation to report month-to-date or quarter-to-date range and change.
Build, test, and iterate with the endpoint explorer at the MCP, and refer to bonds-api.com for documentation updates.
FAQ
What unit are yields and spreads returned in?
Yields are percentages (e.g., 4.52 means 4.52%). Spreads are in basis points (bps), where 100 bps = 1 percentage point.
How are dates and timestamps formatted?
Daily endpoints use YYYY-MM-DD. Intraday fetched_at values are ISO 8601 in UTC (e.g., 2026-10-15T12:00:00Z).
How should I handle non-trading days?
There will be no new data for holidays/weekends. Use the last available date until the next business day; avoid forward-filling beyond your tolerance.
Can I request multiple maturities for Greece at once?
Yes, with /latest pass maturities (e.g., 2Y,10Y). To get a standardized cross-section, use /curve for the full set of supported tenors.
What is the recommended authentication method?
Use the X-API-Key header in every request. All endpoints are GET-only under the base URL https://bonds-api.com/api/v1/.
Ready to pull the Greece 10-year yield into your stack? Get your API key here: Register. Then explore and test endpoints in the MCP and start building.