Poland 10 Year Bond Yield

Poland 10 Year Bond Yield

You need reliable, programmatic access to the Poland 10-year government bond yield to drive dashboards, risk models, or research notebooks. By the end of this guide, you will be able to pull the latest PL 10Y yield, query historical and intraday snapshots, compute spread vs. benchmarks, and fetch the full Polish yield curve using Bonds API, all via simple GET requests and JSON.

What the Poland 10-Year Yield Represents and How Bonds API Delivers It

The 10-year government bond yield for Poland (ISO2: PL) is a key reference rate for PLN discount curves, macro research, and cross-market spread analysis. Bonds API provides this yield as a floating-point percentage (e.g., 4.52 means 4.52%) via a REST interface. All endpoints are GET-only and authenticated with an X-API-Key header. Dates are ISO8601 (Y-m-d), and intraday timestamps are UTC ISO8601.

Illustration: Poland 10 Year Bond Yield

Data typically updates on business days; weekend/holiday dates will surface the latest available business-day observations. For intraday, multiple snapshots per day are available where supported. You can learn more and obtain an API key at https://bonds-api.com and explore the API surfaces via the MCP.

Quick Catalog Sanity Check (Official Sample)

The following official sample must be preserved exactly as provided. It uses a US example and a query parameter key to illustrate the response shape:

curl -s "https://bonds-api.com/api/v1/latest?countries=US&maturities=10Y&api_key=YOUR_API_KEY"
{
"success": true,
"date": "2026-10-09",
"rates": {
"US_10Y": 5.24
},
"dates": {
"US_10Y": "2026-10-09"
},
"currencies": {
"US_10Y": "USD"
},
"meta": {
"request_id": "bf94f7f9-26f1-4ea9-a28a-9bf80d94f732",
"timestamp": "2026-10-12T00:06:28+00:00"
}
}

In practice for Poland you will authenticate with the X-API-Key header and the endpoints below. The yield values are percentages; the date is the observation date; and meta.timestamp is an ISO8601 UTC timestamp.

Endpoint 1: Latest — Current Yields for Poland

Use this to fetch the most recent PL yields by maturity. Omit maturities to retrieve all available points; include a comma-separated list (e.g., 2Y,10Y) to build a quick partial curve or a single node.

cURL

Python (requests)

import requests

resp = requests.get(
"https://bonds-api.com/api/v1/latest",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "PL", "maturities": "2Y,10Y"}
)
data = resp.json()
# Access: data["data"]["PL"]["10Y"]["yield"] (percentage)
# data["data"]["PL"]["10Y"]["date"] (Y-m-d)
print(data)

JavaScript (fetch)

const url = new URL("https://bonds-api.com/api/v1/latest");
url.searchParams.set("countries", "PL");
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 pl10 = json.data.PL["10Y"].yield; // percent
console.log("PL 10Y:", pl10);
});

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=PL&maturities=2Y,10Y";
$json = file_get_contents($url, false, $context);
$data = json_decode($json, true);
// $data["data"]["PL"]["10Y"]["yield"] is a percentage
echo $json;
?>

JSON Response (official example)

Fields: yield is a percent (not basis points). date is Y-m-d observation date. source indicates the origin (e.g., official). When building a PL 10Y tile, cache for several minutes intra-day, and refresh after the local market close to capture final official values.

Endpoint 2: Historical — Yield on a Specific Date

Use this when you need a single-day snapshot for Poland’s 10Y on a known calendar date, for example to reprice a portfolio at month-end or to backfill a dataframe.

cURL

Python (requests)

import requests

params = {"country": "PL", "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)
hist = r.json()
# hist["yield"] is percent at the requested date (or nearest business day per data source)
print(hist)

JavaScript (fetch)

const u = new URL("https://bonds-api.com/api/v1/historical");
u.searchParams.set("country", "PL");
u.searchParams.set("maturity", "10Y");
u.searchParams.set("date", "2025-06-15");

fetch(u.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(json => console.log(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/historical?country=PL&maturity=10Y&date=2025-06-15";
echo file_get_contents($url, false, $ctx);
?>

JSON Response (official example)

Use the yield field (percent) and date for your records. If the specified day is a non-business day, the API provides the observation aligned with data availability per the underlying source.

Endpoint 3: Timeseries — Daily Series Between Two Dates

Fetch a continuous daily series for the PL 10Y to build charts, regressions, or compute rolling risk metrics. The series uses business-day steps where available.

cURL

Python (requests)

import requests

p = {"country": "PL", "maturity": "10Y", "start": "2025-10-12", "end": "2026-10-12"}
resp = requests.get("https://bonds-api.com/api/v1/timeseries",
headers={"X-API-Key": "YOUR_API_KEY"},
params=p)
ts = resp.json()["series"]
# ts is a list of {"date": "Y-m-d", "yield": float} in percent
print(len(ts), "points")

JavaScript (fetch)

const tsUrl = new URL("https://bonds-api.com/api/v1/timeseries");
tsUrl.searchParams.set("country", "PL");
tsUrl.searchParams.set("maturity", "10Y");
tsUrl.searchParams.set("start", "2025-10-12");
tsUrl.searchParams.set("end", "2026-10-12");
fetch(tsUrl.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(json => {
json.series.forEach(pt => {
// pt.yield is a percent, pt.date is Y-m-d
});
});

PHP (file_get_contents)

<?php
$h = ["http" => ["method" => "GET", "header" => "X-API-Key: YOUR_API_KEY\r\n"]];
$ctx = stream_context_create($h);
$u = "https://bonds-api.com/api/v1/timeseries?country=PL&maturity=10Y&start=2025-10-12&end=2026-10-12";
$data = json_decode(file_get_contents($u, false, $ctx), true);
foreach ($data["series"] as $row) {
// $row["date"], $row["yield"]
}
echo json_encode($data, JSON_PRETTY_PRINT);
?>

JSON Response (official example)

Each yield is a percentage; dates are business days. Cache the resulting array for repeated visualizations. Handle gaps gracefully if your chart expects calendar days.

Endpoint 4: Spread — Poland vs. Benchmark in Basis Points

Compute the spread between Poland and a benchmark (e.g., US or DE) at a given maturity. The spread_bps field is returned in basis points; yields are in percent.

cURL

Python (requests)

import requests

q = {"country": "PL", "benchmark": "US", "maturity": "10Y"}
j = requests.get("https://bonds-api.com/api/v1/spread",
headers={"X-API-Key": "YOUR_API_KEY"},
params=q).json()
# j["spread_bps"] is the PL minus benchmark spread in basis points
print(j)

JavaScript (fetch)

const s = new URL("https://bonds-api.com/api/v1/spread");
s.searchParams.set("country", "PL");
s.searchParams.set("benchmark", "US");
s.searchParams.set("maturity", "10Y");
fetch(s.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(json => {
// json.spread_bps is an integer/float in basis points
// json.country_yield and json.benchmark_yield are percentages
console.log(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/spread?country=PL&benchmark=US&maturity=10Y";
echo file_get_contents($url, false, $ctx);
?>

JSON Response (official example)

Use spread_bps directly for display (e.g., +215 bps). For cross-market signals or hedging ratios, pull multiple maturities and track their basis point deltas over time.

Endpoint 5: Curve — Full Poland Yield Curve

Get a snapshot of Poland’s curve across short bills to long bonds. This is the fastest way to build a curve visualization or bootstrap a PLN discount structure. If date is omitted, you receive the latest available business day’s curve.

cURL

Python (requests)

import requests

cur = requests.get(
"https://bonds-api.com/api/v1/curve",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "PL"}
).json()
# cur["curve"] is a dict keyed by maturity (e.g., "1M","3M","10Y") with percent yields
print(cur)

JavaScript (fetch)

const c = new URL("https://bonds-api.com/api/v1/curve");
c.searchParams.set("country", "PL");
fetch(c.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(json => {
// json.curve holds maturities as keys, yields as percentages
console.log(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=PL";
echo file_get_contents($u, false, $ctx);
?>

JSON Response (official example)

The inverted flag lets you detect curve shape quickly. All curve values are percentages. If you need consistent input for pricing engines, cache the curve by date and time-stamp your usage.

Poland Curve Snapshot (Maturities and Yields)

Maturity Yield (%)
1M5.31
3M5.27
6M5.18
1Y4.98
2Y4.25
5Y4.39
10Y4.52
30Y4.71

Endpoint 6: Intraday — Poland 10Y Snapshots on a Given Date

For active monitoring (in trading hours), query intraday snapshots of the PL 10Y yield. Each record includes fetched_at in UTC. This is useful for minute-to-minute drift monitoring and alerting.

cURL

Python (requests)

import requests

params = {"country": "PL", "maturity": "10Y", "date": "2026-10-12"}
intraday = requests.get("https://bonds-api.com/api/v1/intraday",
headers={"X-API-Key": "YOUR_API_KEY"},
params=params).json()
# intraday["snapshots"] is a list with "yield" (percent) and "fetched_at" (UTC ISO8601)
print(intraday)

JavaScript (fetch)

const i = new URL("https://bonds-api.com/api/v1/intraday");
i.searchParams.set("country", "PL");
i.searchParams.set("maturity", "10Y");
i.searchParams.set("date", "2026-10-12");
fetch(i.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(json => {
json.snapshots.forEach(s => {
// s.yield: percent, s.fetched_at: UTC ISO8601
});
});

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/intraday?country=PL&maturity=10Y&date=2026-10-12";
echo file_get_contents($url, false, $ctx);
?>

JSON Response (official example)

Use fetched_at to sequence points and compute intraday changes. Cache aggressively if you poll frequently to avoid rate caps; consider diff-based alerts.

Endpoint 7: Fluctuation — Change, Min, Max Over a Period

Summarize market regimes by pulling the start, end, change, and range for Poland’s 10Y over any window. This is ideal for performance commentary or risk limit checks.

cURL

Python (requests)

import requests

fl = requests.get(
"https://bonds-api.com/api/v1/fluctuation",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "PL", "maturity": "10Y", "start": "2025-10-12", "end": "2026-10-12"}
).json()
# Access PL stats under fl["data"]["PL"] with percent yields and absolute change in percent
print(fl)

JavaScript (fetch)

const f = new URL("https://bonds-api.com/api/v1/fluctuation");
f.searchParams.set("countries", "PL");
f.searchParams.set("maturity", "10Y");
f.searchParams.set("start", "2025-10-12");
f.searchParams.set("end", "2026-10-12");
fetch(f.toString(), { headers: { "X-API-Key": "YOUR_API_KEY" } })
.then(r => r.json())
.then(json => {
const pl = json.data.PL;
// pl.start_yield, pl.end_yield, pl.change, pl.min, pl.max (all in percent)
console.log(pl);
});

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=PL&maturity=10Y&start=2025-10-12&end=2026-10-12";
echo file_get_contents($u, false, $ctx);
?>

JSON Response (official example)

All numeric fields are in percent, not basis points. Use change to describe absolute move (e.g., +0.31% = +31 bps). To compute pure bps, multiply percent differences by 100.

Building a Poland Yield Curve and Reading the PL 10Y

There are two primary ways to source the Poland 10-year yield:

  • Directly from /latest with maturities=10Y for the current value.
  • From /curve by reading the 10Y node (plus other nodes for the full curve).

When constructing a curve chart, prefer /curve for a time-consistent snapshot across maturities. For blended views across multiple days (e.g., an animated curve), iterate /curve by date. For historical curves, pair /timeseries across multiple maturities, but be mindful of alignment and holidays; /curve on a specified date can save effort.

Business Days, Holidays, Update Frequency, and Caching

Government bond markets observe national holidays and weekends; yields generally update on business days. If your request includes a non-business date, fall back to the latest available date returned by the API (visible in date fields or per endpoint semantics). Intraday data provides UTC-stamped snapshots during the trading day where supported.

  • Timezone: Intraday timestamps are UTC (see meta.timezone or fetched_at “Z”).
  • Caching: For /latest and /curve, consider a 1–5 minute cache during market hours; extend to an hour off-hours. For /timeseries and /historical, cache by requested parameters indefinitely.
  • Error handling: Check success; on errors, inspect error strings. Common HTTP statuses include 401 (invalid key), 404 (no data for combination), 422 (invalid parameter), 429 (rate limit), and 500.

Use Cases for PL 10Y in Fixed-Income Workflows

  • Trading dashboards: Display the PL 10Y tile with intraday sparkline from /intraday, and daily change from /fluctuation.
  • Risk and ALM: Drive duration/convexity scenarios with /curve and /timeseries for historical shocks and bootstrapping.
  • Macro research: Track the PL vs. US 10Y spread using /spread, log to a time series, and annotate with policy decisions.
  • Backtesting: Use /historical for point-in-time values to avoid look-ahead bias in strategy research.

Putting It All Together: Minimal Flow to Track PL 10Y

  1. Fetch current value: /latest with countries=PL and maturities=10Y.
  2. Show daily chart: /timeseries for the last n months.
  3. Add intraday sparkline: /intraday for the current date (poll periodically with caching).
  4. Contextualize: /spread vs. US or DE for a bps differential.
  5. Expand analytics: /curve for shaping and /fluctuation for regime summaries.

Explore and test endpoints interactively in the MCP, and find documentation and examples at bonds-api.com.

Developer Notes: Parameters, Units, and Field Semantics

  • Authentication: Provide your API key via X-API-Key in the request header.
  • Dates: Always Y-m-d. Intraday timestamps are ISO8601 UTC (e.g., 2026-10-12T12:00:00Z).
  • Units: yield values are percentages (e.g., 4.52 = 4.52%). spread_bps is basis points.
  • Maturities: Use standard codes: e.g., 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, 30Y, etc.
  • Error responses: success=false with an error string; respect HTTP status for retry/backoff logic.

Full Reference: All Seven Endpoints Recap

  • /api/v1/latest — most recent yields (supports multiple maturities for curve stubs).
  • /api/v1/historical — single date yield for one maturity.
  • /api/v1/timeseries — date range series for a maturity.
  • /api/v1/spread — basis point spread vs. a benchmark, default 10Y unless specified.
  • /api/v1/curve — cross-section of maturities for a given date (or latest).
  • /api/v1/intraday — multiple snapshots within a day (UTC timestamps).
  • /api/v1/fluctuation — period summary: start, end, change, min, max.

All are GET-only, and all accept ISO2 country codes (PL for Poland). For reference implementations and schema nuances, see bonds-api.com.

FAQ

Q: Are yields in percent or basis points?
A: All yield values are percentages (e.g., 4.52). Only spread_bps is returned in basis points.

Q: What timezone are timestamps in?
A: Dates are local business days in Y-m-d; intraday fetched_at timestamps are UTC ISO8601 (Z suffix). The intraday meta.timezone confirms UTC.

Q: How should I handle non-business days?
A: Expect no new observations on weekends/holidays. For historical queries that land on non-business days, use the date field returned by the API to align to the actual observation day. For continuous charts, display gaps or forward-fill per your analytics standard.

Q: How often should I refresh /latest and /curve?
A: During trading hours, a 1–5 minute refresh interval with caching is typical. Off-hours, hourly or on-demand is sufficient. Intraday endpoints can be polled more often but should respect backoff on 429 responses.

Q: Can I request multiple maturities at once for Poland?
A: Yes. Use /latest with maturities=1Y,2Y,5Y,10Y,30Y to assemble a quick curve; for a canonical cross-section and inverted flag, prefer /curve.

Ship your Poland 10-year yield integration now. Get an API key with this one-minute step: Register. You can also navigate to bonds-api.com for more examples and, when you’re ready, Get started with Bonds API.

Start building with bond data today

Get your API key and access sovereign bond yields across 60+ countries. 7-day free trial, no credit card required.