You need reliable, machine-readable access to the Austria 10-year government bond yield (AT 10Y) so you can power dashboards, risk models, or research notebooks. By the end of this article, you will be able to query the latest Austria 10Y yield, pull historical and intraday data, compute fluctuations and spreads, and assemble a full Austrian yield curve via the Bonds API REST endpoints.
What you get from Bonds API for Austria 10Y
Bonds API provides sovereign bond yields as JSON over HTTPS with a consistent schema across countries and maturities. For Austria (ISO2: AT), you can request:
- Latest yields for one or multiple maturities (including 10Y)
- Historical yields on a specific date
- Daily time series between two dates
- Intraday snapshots for the requested date
- Yield fluctuations (change, min, max) over a period
- Spreads versus a benchmark country (e.g., Germany DE or the US)
- The full Austrian yield curve for a given date
All endpoints use GET and are authenticated using the X-API-Key header. Base URL: https://bonds-api.com/api/v1/
Helpful links to explore and register:
Data model, units, and timestamps
- Yield values are expressed as percentages (for example, 4.52 means 4.52%).
- Spread values are expressed in basis points (bps). For example, 215 means 2.15%.
- Dates are in Y-m-d format (e.g., 2026-10-14). Timestamps in intraday responses are ISO 8601 in UTC.
- Sources: Responses may include a source field (e.g., "official" or "market") that describes the origin of the data point.
Austria trades on European business days. Expect no new data on weekends or Austrian market holidays. For production systems, cache latest results during market-close windows and revalidate around your chosen update cadence to control quota usage and rate limits.
Available maturities for Austria
You can query specific maturities via the maturities parameter or retrieve the full curve. The curve example below shows common maturities:
| Maturity | Example |
|---|---|
| 1M, 3M, 6M | Money-market tenors |
| 1Y, 2Y, 5Y | Short-to-intermediate |
| 10Y | Benchmark long-term tenor |
| 30Y | Long-end |
Latest Austria 10Y yield
Use the /latest endpoint to request the current yield for Austria 10Y. You can include multiple maturities to build a curve snapshot or a subset curve. The request below asks for 2Y and 10Y as an example, and the JSON illustrates structure and fields you will parse.
cURL
curl -s "https://bonds-api.com/api/v1/latest?countries=US&maturities=10Y&api_key=YOUR_API_KEY"
JSON response example
{
"success": true,
"date": "2026-10-14",
"rates": {
"US_10Y": 5.213
},
"dates": {
"US_10Y": "2026-10-14"
},
"currencies": {
"US_10Y": "USD"
},
"meta": {
"request_id": "c5dab9f2-0729-41da-9560-fb39deca104f",
"timestamp": "2026-10-14T00:06:39+00:00"
}
}
How to read it:
- success: true indicates a valid response.
- data.AT.10Y.yield is the Austria 10-year yield in percent.
- data.AT.10Y.date is the observation date (Y-m-d). Market holidays and weekends will return the most recent business date.
- source describes origin: "official" indicates an official source for end-of-day publishing.
Python (requests)
import requests
resp = requests.get(
"https://bonds-api.com/api/v1/latest",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "AT", "maturities": "10Y"}
)
resp.raise_for_status()
data = resp.json()
at_10y = data["data"]["AT"]["10Y"]["yield"]
as_of = data["data"]["AT"]["10Y"]["date"]
print(f"AT 10Y = {at_10y}% as of {as_of}")
JavaScript (fetch)
async function fetchAT10Y() {
const url = new URL("https://bonds-api.com/api/v1/latest");
url.searchParams.set("countries", "AT");
url.searchParams.set("maturities", "10Y");
const res = await fetch(url, {
method: "GET",
headers: { "X-API-Key": "YOUR_API_KEY" }
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const json = await res.json();
const node = json.data.AT["10Y"];
return { yield: node.yield, date: node.date, source: node.source };
}
fetchAT10Y().then(console.log).catch(console.error);
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=AT&maturities=10Y";
$json = file_get_contents($url, false, $context);
if ($json === false) {
throw new Exception("Request failed");
}
$data = json_decode($json, true);
$at10y = $data["data"]["AT"]["10Y"]["yield"];
$date = $data["data"]["AT"]["10Y"]["date"];
echo "AT 10Y = ".$at10y."% as of ".$date.PHP_EOL;
Official sample (verbatim)
The following sample is provided verbatim from the official materials. It uses a sibling instrument and a different response shape. Copying it here may help if you are validating connectivity at the edge.
Historical Austria 10Y yield on a specific date
Use /historical to fetch the Austria 10Y yield for a given business date (Y-m-d). If the requested date is a non-business day, no data is returned for that date; handle 404s accordingly.
cURL
JSON response example
Fields:
- yield is a percentage value.
- date is the observation calendar date you requested, in Y-m-d.
- source is typically "official" for end-of-day values.
Python (requests)
import requests
params = {"country": "AT", "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()
payload = r.json()
print(payload["yield"], payload["date"])
JavaScript (fetch)
async function historicalAT10Y(date) {
const url = new URL("https://bonds-api.com/api/v1/historical");
url.searchParams.set("country", "AT");
url.searchParams.set("maturity", "10Y");
url.searchParams.set("date", date);
const res = await fetch(url, { headers: { "X-API-Key": "YOUR_API_KEY" } });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
}
historicalAT10Y("2025-06-15").then(console.log);
PHP (file_get_contents)
<?php
$context = stream_context_create([
"http" => [
"method" => "GET",
"header" => "X-API-Key: YOUR_API_KEY\r\n"
]
]);
$u = "https://bonds-api.com/api/v1/historical?country=AT&maturity=10Y&date=2025-06-15";
$body = file_get_contents($u, false, $context);
$data = json_decode($body, true);
echo $data["yield"]."% on ".$data["date"].PHP_EOL;
Time series for Austria 10Y
Use /timeseries to retrieve daily yields between two dates (inclusive). The series returns business-day observations for the requested tenor.
cURL
JSON response example
Each element includes date (Y-m-d) and yield (percent). If you graph the series, ensure weekends/holidays are handled as gaps rather than zeros.
Python (requests)
import requests
params = {"country": "AT", "maturity": "10Y", "start": "2025-10-14", "end": "2026-10-14"}
res = requests.get("https://bonds-api.com/api/v1/timeseries", headers={"X-API-Key": "YOUR_API_KEY"}, params=params)
res.raise_for_status()
ts = res.json()["series"]
print(f"Points: {len(ts)}; first: {ts[0] if ts else None}")
JavaScript (fetch)
async function timeseriesAT10Y(start, end) {
const url = new URL("https://bonds-api.com/api/v1/timeseries");
url.searchParams.set("country", "AT");
url.searchParams.set("maturity", "10Y");
url.searchParams.set("start", start);
url.searchParams.set("end", end);
const res = await fetch(url, { headers: { "X-API-Key": "YOUR_API_KEY" } });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
}
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/timeseries?country=AT&maturity=10Y&start=2025-10-14&end=2026-10-14";
$json = file_get_contents($url, false, $ctx);
$payload = json_decode($json, true);
foreach ($payload["series"] as $pt) {
echo $pt["date"].": ".$pt["yield"]."%" . PHP_EOL;
}
Intraday Austria 10Y snapshots
Use /intraday for multiple yield snapshots during a given UTC date. This is useful for trading dashboards and monitoring intraday moves. Timestamps are in UTC.
cURL
JSON response example
Fields:
- snapshots is an array of yield (percent) observed at fetched_at (UTC).
- count is the number of snapshots returned.
- meta.timezone confirms timestamps are in UTC.
Python (requests)
import requests
q = {"country": "AT", "maturity": "10Y", "date": "2026-10-14"}
r = requests.get("https://bonds-api.com/api/v1/intraday", headers={"X-API-Key": "YOUR_API_KEY"}, params=q)
r.raise_for_status()
data = r.json()
for s in data["snapshots"]:
print(s["fetched_at"], s["yield"])
JavaScript (fetch)
async function intradayAT10Y(date) {
const url = new URL("https://bonds-api.com/api/v1/intraday");
url.searchParams.set("country", "AT");
url.searchParams.set("maturity", "10Y");
url.searchParams.set("date", date);
const res = await fetch(url, { headers: { "X-API-Key": "YOUR_API_KEY" } });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const json = await res.json();
return json.snapshots.map(s => ({ t: s.fetched_at, y: s.yield }));
}
PHP (file_get_contents)
<?php
$ctx = stream_context_create([ "http" => [ "method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n" ] ]);
$u = "https://bonds-api.com/api/v1/intraday?country=AT&maturity=10Y&date=2026-10-14";
$js = file_get_contents($u, false, $ctx);
$pl = json_decode($js, true);
foreach ($pl["snapshots"] as $s) {
echo $s["fetched_at"]." ".$s["yield"]."%" . PHP_EOL;
}
Compute Austria 10Y fluctuations over a period
Use /fluctuation to obtain start/end yields, absolute change, and the min/max within the interval. This is convenient for performance and risk summaries.
cURL
JSON response example
Fields are in percent; change = end_yield - start_yield. You can compute duration-weighted impacts downstream using these figures.
Python (requests)
import requests
p = {"countries": "AT", "maturity": "10Y", "start": "2025-10-14", "end": "2026-10-14"}
rs = requests.get("https://bonds-api.com/api/v1/fluctuation", headers={"X-API-Key": "YOUR_API_KEY"}, params=p)
rs.raise_for_status()
fx = rs.json()["data"]["AT"]
print(f"Δ = {fx['change']}pp, min={fx['min']}%, max={fx['max']}%")
JavaScript (fetch)
async function fluctuationAT10Y(start, end) {
const url = new URL("https://bonds-api.com/api/v1/fluctuation");
url.searchParams.set("countries", "AT");
url.searchParams.set("maturity", "10Y");
url.searchParams.set("start", start);
url.searchParams.set("end", end);
const r = await fetch(url, { headers: { "X-API-Key": "YOUR_API_KEY" } });
if (!r.ok) throw new Error(`HTTP ${r.status}`);
const j = await r.json();
return j.data.AT;
}
PHP (file_get_contents)
<?php
$ctx = stream_context_create([ "http" => [ "method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n" ] ]);
$u = "https://bonds-api.com/api/v1/fluctuation?countries=AT&maturity=10Y&start=2025-10-14&end=2026-10-14";
$js = file_get_contents($u, false, $ctx);
$d = json_decode($js, true)["data"]["AT"];
echo "Start: ".$d["start_yield"]."% End: ".$d["end_yield"]."% Change: ".$d["change"]."pp".PHP_EOL;
Spreads: Austria 10Y vs benchmark
Use /spread to compare Austria to a benchmark (for example, Germany DE or the US) at a specified maturity (default 10Y). The response returns spread in basis points and each country’s yield.
cURL
JSON response example
Interpretation:
- spread_bps: Austria 10Y yield minus US 10Y yield, in basis points.
- country_yield, benchmark_yield: percent values for each leg.
Python (requests)
import requests
args = {"country": "AT", "benchmark": "US", "maturity": "10Y"}
sp = requests.get("https://bonds-api.com/api/v1/spread", headers={"X-API-Key": "YOUR_API_KEY"}, params=args).json()
print(f"AT-{sp['benchmark']} 10Y spread = {sp['spread_bps']} bps")
JavaScript (fetch)
async function spreadATvs(benchmark) {
const url = new URL("https://bonds-api.com/api/v1/spread");
url.searchParams.set("country", "AT");
url.searchParams.set("benchmark", benchmark);
url.searchParams.set("maturity", "10Y");
const res = await fetch(url, { headers: { "X-API-Key": "YOUR_API_KEY" } });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
}
PHP (file_get_contents)
<?php
$ctx = stream_context_create([ "http" => [ "method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n" ] ]);
$u = "https://bonds-api.com/api/v1/spread?country=AT&benchmark=US&maturity=10Y";
$js = file_get_contents($u, false, $ctx);
$sp = json_decode($js, true);
echo "Spread: ".$sp["spread_bps"]." bps vs ".$sp["benchmark"].PHP_EOL;
The Austria yield curve
Use /curve to get a full cross-section of Austrian yields for the latest available day (or a chosen date). This is the fast path to render a curve plot or price a portfolio using tenor-mapped factors.
cURL
JSON response example
Fields:
- curve is a mapping from maturity to yield (percent).
- inverted indicates whether short maturities exceed long maturities based on curve shape detection.
- date is the observation date in Y-m-d.
To compute a par curve or smooth the curve, you can spline or fit using the discrete points. If you need a subset (e.g., only 2Y–30Y), you can instead call /latest with maturities=2Y,5Y,10Y,30Y and the same country.
Python (requests)
import requests
resp = requests.get("https://bonds-api.com/api/v1/curve",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "AT"})
curve = resp.json()
yc = curve["curve"]
tenors = ["1M","3M","6M","1Y","2Y","5Y","10Y","30Y"]
points = [ (t, yc.get(t)) for t in tenors if t in yc ]
print(points)
JavaScript (fetch)
async function curveAT() {
const url = new URL("https://bonds-api.com/api/v1/curve");
url.searchParams.set("country", "AT");
const res = await fetch(url, { headers: { "X-API-Key": "YOUR_API_KEY" } });
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return res.json();
}
PHP (file_get_contents)
<?php
$ctx = stream_context_create([ "http" => [ "method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n" ] ]);
$u = "https://bonds-api.com/api/v1/curve?country=AT";
$js = file_get_contents($u, false, $ctx);
$pl = json_decode($js, true);
foreach ($pl["curve"] as $tenor => $y) {
echo $tenor.": ".$y."%".PHP_EOL;
}
Building a yield curve and related analytics
Two common approaches:
- Call /curve to get the full cross-section for the latest date. Use inverted to flag curve inversions on your dashboard.
- Call /latest with maturities=2Y,5Y,10Y,30Y (and any others you need) to build a custom slice that you can cache more aggressively during live trading.
To compute 2s10s or 10s30s spreads, subtract tenor yields (percent) and multiply by 100 to get basis points. For example, (AT 10Y − AT 2Y) × 100 yields 2s10s in bps.
Operational considerations: business days, updates, caching
- Business days and holidays: Austrian government bond yields generally update on European business days; weekends and Austrian holidays have no new observations.
- Update frequency: End-of-day “official” yields are typically published after market close; “market” intraday snapshots arrive throughout the UTC trading day.
- Caching: Cache /latest and /curve for the trading session if your application can tolerate slight staleness. For high-frequency UIs, poll /intraday at a cadence aligned to your chart resolution.
- Error handling: Handle JSON errors with success=false and check HTTP status. Common statuses include 401 (invalid key), 404 (no data for requested combination), and 429 (rate limit exceeded). Implement backoff for 429 and retry idempotent GETs on 500.
Explore endpoint details anytime on bonds-api.com or interactively via the MCP.
Use cases for the Austria 10Y and curve
- Portfolio risk: Feed Austria 10Y changes and curve shifts into your duration and key-rate DV01 reports.
- Relative value: Monitor AT 10Y vs DE 10Y or US 10Y using /spread and intraday snapshots to track dislocations.
- Macro research: Pull /timeseries for regression models or event studies around ECB decisions and Austrian macro releases.
- Pricing and curves: Use /curve to seed discounting or scenario tools, and use maturities filtering on /latest for faster partial updates.
Complete endpoint reference and language patterns
All endpoints are GET with X-API-Key in the header:
- Base: https://bonds-api.com/api/v1/
- Header: X-API-Key: YOUR_API_KEY
Language patterns used above generalize to every endpoint. Python uses requests.get with headers and params. JavaScript uses fetch with headers and URLSearchParams. PHP examples demonstrate file_get_contents with a stream context and query parameters in the URL.
If you are ready to integrate, you can Register for an API key and start making calls in minutes. You can also browse the API surface interactively from the MCP.
FAQ
Q: What units are yields and spreads in?
A: Yields are in percent (for example, 4.52). Spreads from /spread are in basis points (e.g., 215 bps = 2.15%).
Q: How should I handle weekends and holidays?
A: For /latest and /curve, you will receive the most recent available business date. For /historical, requesting a non-business date returns no data for that date (check for 404). For /timeseries, only business dates appear.
Q: What timezone are intraday timestamps in?
A: /intraday uses ISO 8601 timestamps in UTC. Use meta.timezone to confirm.
Q: Can I request multiple maturities for Austria in one call?
A: Yes. Use /latest with maturities=2Y,5Y,10Y,30Y (comma-separated) to retrieve a custom slice of the curve in a single response.
Q: How can I minimize API calls in production?
A: Cache /latest and /curve responses within your update cadence, and use conditional polling of /intraday for UIs requiring finer granularity. Handle 429 with exponential backoff.
Ready to pull Austria 10Y into your stack? Get an API key and start integrating today. For quick exploration, visit bonds-api.com and the Bonds API MCP.