Turkey 10 Year Bond Yield

Turkey 10 Year Bond Yield

You need reliable, machine-readable access to the Turkey 10-year government bond yield (TR 10Y) for dashboards, trading models, or economic research. By the end of this guide you will query, cache, and analyze Turkey’s 10Y yield and related maturities using the Bonds API, compute spreads to benchmarks, pull intraday snapshots, and assemble a full yield curve for Turkey in your own codebase.

What the Turkey 10Y yield is and why it matters for your models

The 10-year Turkish government bond yield is a key reference for long-term local-currency funding costs, inflation expectations, and sovereign risk. It anchors discount rates in valuation models, feeds risk dashboards via spread analysis to benchmarks (for example versus US Treasuries), and serves as a mid-curve point when you construct the sovereign yield curve for Turkey (ISO2: TR).

Illustration: Turkey 10 Year Bond Yield

With bonds-api.com, you can fetch current, historical, and intraday yields as JSON over a REST API. All endpoints use GET and authenticate via an API key header. You can start building in minutes—see the links at the end of this article to register and explore the MCP console.

Data conventions, units, and timestamps

  • Yields are returned in percent (for example 4.52 means 4.52%).
  • Spreads are returned in basis points (bps). 1 basis point = 0.01%.
  • Dates are strings formatted as YYYY-MM-DD (for example 2026-10-10).
  • Timestamps use ISO 8601 in UTC (for example 2026-10-10T12:00:00Z).
  • All requests use GET and the base URL https://bonds-api.com/api/v1/.
  • Authentication: send your API key in the X-API-Key header.

Market data reflect trading days; weekends and Turkish market holidays may have no observations. Time series endpoints will include only dates that have data. In applications, handle gaps and consider caching the latest response during market closures.

Endpoint 1 — Latest: current yields for Turkey

Get the latest available Turkish yields for selected maturities (or all maturities if you omit the maturities parameter). This is the fastest way to load the Turkey 10Y for dashboards.

cURL

curl -s "https://bonds-api.com/api/v1/latest?countries=US&maturities=10Y&api_key=YOUR_API_KEY"

Python (requests)

import requests

resp = requests.get(
"https://bonds-api.com/api/v1/latest",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "TR", "maturities": "2Y,10Y"},
timeout=10
)
data = resp.json()
tr_10y = data["data"]["TR"]["10Y"]["yield"]
as_of = data["data"]["TR"]["10Y"]["date"]
print("TR 10Y:", tr_10y, "as of", as_of)

JavaScript (fetch)

const url = new URL("https://bonds-api.com/api/v1/latest");
url.searchParams.set("countries", "TR");
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 tr10 = json.data.TR["10Y"].yield;
const date = json.data.TR["10Y"].date;
console.log(`TR 10Y: ${tr10}% on ${date}`);
});

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=TR&maturities=2Y,10Y";
$json = file_get_contents($url, false, $context);
$data = json_decode($json, true);
$tr10 = $data["data"]["TR"]["10Y"]["yield"];
$date = $data["data"]["TR"]["10Y"]["date"];
echo "TR 10Y: {$tr10}% on {$date}\n";

JSON response (official sample)

{
"success": true,
"date": "2026-10-09",
"rates": {
"US_10Y": 5.24
},
"dates": {
"US_10Y": "2026-10-09"
},
"currencies": {
"US_10Y": "USD"
},
"meta": {
"request_id": "6f6350e9-967d-4220-8d3b-c5d81c459546",
"timestamp": "2026-10-10T01:05:19+00:00"
}
}

Key fields: data.TR.10Y.yield (percent), data.TR.10Y.date (YYYY-MM-DD), and source ("official" or "market").

Endpoint 2 — Historical: yield on a specific date

Request the Turkey 10Y yield on a particular day (for example to align with portfolio valuation dates).

cURL

Python (requests)

import requests

params = {"country": "TR", "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
)
j = r.json()
print(j["country"], j["maturity"], j["date"], j["yield"])

JavaScript (fetch)

const params = new URLSearchParams({
country: "TR",
maturity: "10Y",
date: "2025-06-15"
});
fetch(`https://bonds-api.com/api/v1/historical?${params.toString()}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(res => res.json())
.then(j => console.log(j.country, j.maturity, j.date, j.yield));

PHP (file_get_contents)

<?php
$ctx = stream_context_create(["http" => ["header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$url = "https://bonds-api.com/api/v1/historical?country=TR&maturity=10Y&date=2025-06-15";
$res = json_decode(file_get_contents($url, false, $ctx), true);
echo $res["country"] . " " . $res["maturity"] . " " . $res["date"] . " " . $res["yield"] . "\n";

JSON response (official sample)

Fields: yield is percent; date is YYYY-MM-DD for the trading day. If the requested day is a non-business day, you may receive a 404; query the nearest trading day as needed.

Endpoint 3 — Time series: Turkey 10Y between two dates

Pull a continuous series of Turkey’s 10Y yield to compute returns, run regressions, or chart rolling metrics.

cURL

Python (requests)

import requests, pandas as pd

params = {"country": "TR", "maturity": "10Y", "start": "2025-10-10", "end": "2026-10-10"}
r = requests.get("https://bonds-api.com/api/v1/timeseries",
headers={"X-API-Key": "YOUR_API_KEY"}, params=params)
series = r.json()["series"]
df = pd.DataFrame(series).set_index("date").astype(float)
print(df.head())

JavaScript (fetch)

const qs = new URLSearchParams({
country: "TR",
maturity: "10Y",
start: "2025-10-10",
end: "2026-10-10"
});
fetch(`https://bonds-api.com/api/v1/timeseries?${qs.toString()}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
j.series.forEach(pt => {
console.log(pt.date, pt.yield); // yield in percent
});
});

PHP (file_get_contents)

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

JSON response (official sample)

Each series element has date (YYYY-MM-DD) and yield (percent). Expect only trading days in the range.

Endpoint 4 — Spread: Turkey vs benchmark at a given maturity

Compute the Turkey 10Y spread relative to a benchmark sovereign such as the US. This is critical for cross-market risk and relative-value screens.

cURL

Python (requests)

import requests
r = requests.get(
"https://bonds-api.com/api/v1/spread",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "TR", "benchmark": "US", "maturity": "10Y"}
)
s = r.json()
print("Spread (bps):", s["spread_bps"], "TR:", s["country_yield"], "US:", s["benchmark_yield"])

JavaScript (fetch)

fetch("https://bonds-api.com/api/v1/spread?country=TR&benchmark=US&maturity=10Y", {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
console.log(`TR- US 10Y spread: ${j.spread_bps} bps`);
});

PHP (file_get_contents)

<?php
$ctx = stream_context_create(["http" => ["header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$url = "https://bonds-api.com/api/v1/spread?country=TR&benchmark=US&maturity=10Y";
$res = json_decode(file_get_contents($url, false, $ctx), true);
echo "Spread (bps): " . $res["spread_bps"] . "\n";

JSON response (official sample)

spread_bps is in basis points (for example 215 bps = 2.15%). country_yield and benchmark_yield are in percent.

Endpoint 5 — Curve: full Turkish yield curve for one date

Fetch the full curve for Turkey on the latest day (or a specified date). Use this to bootstrap discount factors or visualize curve shifts.

cURL

Python (requests)

import requests
j = requests.get(
"https://bonds-api.com/api/v1/curve",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "TR"}
).json()
curve = j["curve"] # dict of {maturity: yield%}
print("Curve date:", j["date"], "Inverted:", j["inverted"])
print(curve)

JavaScript (fetch)

fetch("https://bonds-api.com/api/v1/curve?country=TR", {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => {
console.log(`Curve date ${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" => ["header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$res = json_decode(file_get_contents("https://bonds-api.com/api/v1/curve?country=TR", false, $ctx), true);
echo "Date: " . $res["date"] . " Inverted: " . ($res["inverted"] ? "yes" : "no") . "\n";
foreach ($res["curve"] as $tenor => $y) {
echo $tenor . ": " . $y . "%\n";
}

JSON response (official sample)

curve is a mapping of standard maturities to yields in percent. inverted indicates whether shorter maturities yield more than longer ones, a classic recession signal in developed markets and a risk marker in emerging markets.

Endpoint 6 — Intraday: snapshots for the Turkey 10Y

Load intraday snapshots for the TR 10Y on a specific date to power streaming widgets or end-of-day summaries. Snapshots include UTC timestamps in fetched_at.

cURL

Python (requests)

import requests, statistics

r = requests.get(
"https://bonds-api.com/api/v1/intraday",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"country": "TR", "maturity": "10Y", "date": "2026-10-10"}
)
j = r.json()
yields = [snap["yield"] for snap in j["snapshots"]]
print("Count:", j["count"], "VWAP proxy (mean):", statistics.mean(yields))

JavaScript (fetch)

const q = new URLSearchParams({ country: "TR", maturity: "10Y", date: "2026-10-10" });
fetch(`https://bonds-api.com/api/v1/intraday?${q}`, {
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
$ctx = stream_context_create(["http" => ["header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$url = "https://bonds-api.com/api/v1/intraday?country=TR&maturity=10Y&date=2026-10-10";
$j = json_decode(file_get_contents($url, false, $ctx), true);
foreach ($j["snapshots"] as $s) {
echo $s["fetched_at"] . " " . $s["yield"] . "\n";
}

JSON response (official sample)

Use snapshots[].fetched_at (UTC) to order points and snapshots[].yield for the intraday trace. meta.timezone clarifies the timestamp basis.

Endpoint 7 — Fluctuation: change, min, max over a period

Summarize Turkey’s 10Y over a horizon to monitor moves and risk limits. This is handy for alerting and daily summary emails.

cURL

Python (requests)

import requests
r = requests.get(
"https://bonds-api.com/api/v1/fluctuation",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"countries": "TR", "maturity": "10Y", "start": "2025-10-10", "end": "2026-10-10"}
)
f = r.json()["data"]["TR"]
print(f"Start {f['start_yield']} End {f['end_yield']} Δ {f['change']} Min {f['min']} Max {f['max']}")

JavaScript (fetch)

const p = new URLSearchParams({
countries: "TR",
maturity: "10Y",
start: "2025-10-10",
end: "2026-10-10"
});
fetch(`https://bonds-api.com/api/v1/fluctuation?${p.toString()}`, {
headers: { "X-API-Key": "YOUR_API_KEY" }
})
.then(r => r.json())
.then(j => console.log(j.data.TR));

PHP (file_get_contents)

<?php
$ctx = stream_context_create(["http" => ["header" => "X-API-Key: YOUR_API_KEY\r\n"]]);
$url = "https://bonds-api.com/api/v1/fluctuation?countries=TR&maturity=10Y&start=2025-10-10&end=2026-10-10";
$j = json_decode(file_get_contents($url, false, $ctx), true);
print_r($j["data"]["TR"]);

JSON response (official sample)

All yields are in percent. change is the arithmetic difference in percentage points between end_yield and start_yield.

How to build and use the Turkey yield curve

When you need a curve, prefer the /curve endpoint for a complete, synchronized snapshot. If you must compose a curve manually (for example, for only a subset of tenors), query /latest with maturities set to a comma-separated list such as 1Y,2Y,5Y,10Y,30Y.

To bootstrap discount factors:

  • Fetch /api/v1/curve?country=TR (or /latest for selected tenors).
  • Convert percent yields to decimals (for example 4.52% → 0.0452).
  • Apply a compounding convention consistent with your valuation model (for example simple vs. continuous). Bonds API provides raw yields; compounding is model-specific.
  • Interpolate missing points only within tenor neighbors and document the method (linear in yield or spline on zero rates).

For change attribution, pair two curve snapshots by date and compute tenor-level deltas. Use /fluctuation for top-level bounds, then drill down with /timeseries per tenor.

Business days, market holidays, updates, and caching

  • Trading days: Weekends and Turkish market holidays will not have new daily observations. Time series will skip those dates.
  • Update cadence: Latest daily yields typically reflect the most recent market or official close. Intraday snapshots provide multiple observations during the trading day with UTC timestamps.
  • Caching: Cache /latest and /curve for the trading day to reduce duplicate requests; invalidate on a new date or at a scheduled time aligned with market close.
  • Error handling: Check success in the JSON response. Handle HTTP errors including 401 (missing/invalid key), 403 (quota exceeded), 404 (no data for requested combination), 422 (invalid parameters), 429 (rate limit), and 500 (server error). Implement backoff and, for 404 on non-business days, adjust to the nearest prior trading day.

Real-world use cases

  • Financial dashboards: Display TR 10Y alongside 2Y and 5Y with a color-coded curve inversion flag from /curve.inverted.
  • Portfolio risk tools: Monitor TR- US 10Y spreads via /spread and alert when spread_bps jumps beyond a threshold.
  • Economic research: Run regressions on TR 10Y /timeseries against macro variables and track /fluctuation windows for policy event windows.
  • Trading apps: Stream intraday /intraday snapshots for TR 10Y tiles and calculate rolling averages and realized volatility.

Explore the endpoints interactively in the Bonds API MCP, and see production docs at bonds-api.com.

Compatibility note: official sample block

The following official sample cURL and JSON block is provided as-is for reference and should be copied verbatim when you need to reproduce the exact sample. It returns US 10Y with a different response shape:

Fields: rates contains yields in percent; dates provides per-symbol dates; currencies lists quote currencies; meta.timestamp is an ISO 8601 UTC timestamp. For Turkey-specific work, use the TR examples above.

Error responses: what to expect and how to recover

All endpoints share a common error shape with success=false and an error message. Typical HTTP statuses include:

  • 401: Missing or invalid X-API-Key.
  • 403: Account quota exceeded — halt and alert.
  • 404: No data for requested country/maturity/date combination — adjust date or maturity.
  • 422: Invalid parameter (check ISO2 code, date format YYYY-MM-DD, or maturity string like 10Y).
  • 429: Rate limit exceeded — implement retry with backoff.
  • 500: Server error — retry with exponential backoff and circuit breaker.

Putting it all together: building a Turkey 10Y module

Here is a checklist to ship a reliable Turkey 10Y integration:

  • Use /latest for top-of-book TR 10Y on load, backed by a same-day cache.
  • For charts, request /timeseries for 10Y and store locally for fast rendering.
  • Provide a toggle to compare to benchmarks with /spread; store spread_bps and component yields.
  • Offer a curve view via /curve for Turkey with /inverted flag and a hover table of tenors and yields.
  • During trading hours, refresh /intraday periodically and merge into your chart stream.
  • Run nightly jobs that calculate /fluctuation metrics for daily and monthly windows.

For development and testing, visit bonds-api.com and the managed console at MCP.

FAQ

Q: What units are yields and spreads in?
A: Yields are returned as percentages (for example 4.52 = 4.52%). Spreads from /spread are in basis points (for example 215 = 2.15%).

Q: How do I handle non-trading days for Turkey?
A: If a date has no data (weekends or Turkish holidays), /historical may return 404. Query the nearest prior trading day or use /timeseries for a range and select the last available observation before your target date.

Q: What time zone are intraday timestamps in?
A: Intraday fetched_at timestamps are in UTC and formatted as ISO 8601 (for example 2026-10-10T12:00:00Z). The response includes meta.timezone to confirm UTC.

Q: Can I request multiple maturities at once?
A: Yes, use /latest with maturities as a comma-separated list (for example 2Y,5Y,10Y) or use /curve to get a synchronized full curve snapshot for Turkey.

Q: How should I cache results?
A: Cache /latest and /curve per trading day. For /intraday, cache short-lived snapshots and expire them on a schedule appropriate to your UI refresh rate. Always validate success and handle HTTP error codes with retries and backoff.

Ready to integrate Turkey’s 10-year yield into your stack? Register for an API key, explore requests in the MCP, and start building with the endpoints demonstrated above. For quick links: Register for Bonds API and Get started with Bonds API. You can always return to Bonds API MCP to inspect responses interactively.

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.