US Treasury Yields — Par & Real Yield Curves, T-Bills, Spreads
Pricing
from $0.70 / 1,000 result items
US Treasury Yields — Par & Real Yield Curves, T-Bills, Spreads
Official US Treasury rates for macro, trading and finance agents: daily par yield curve 1M–30Y with 2s10s/3m10y spreads, inversion flags and breakeven inflation, real (TIPS) curve, T-bill rates with CUSIPs, long-term rates, average interest on the debt and debt-to-the-penny.
Pricing
from $0.70 / 1,000 result items
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Official US Treasury interest-rate data as clean JSON for macro, trading, treasury and research agents: the daily par yield curve (1 month – 30 years) with 2s10s / 3m10y spreads, inversion flags and curve shape, the real (TIPS) curve and breakeven inflation, T-bill rates with CUSIPs and maturities, long-term rates, plus average interest rates on the federal debt and debt to the penny from the Treasury Fiscal Data API. Any month or date range back to 1990. No API key, no proxy, no browser.
Use cases
- Recession / curve monitoring — daily run with
latestOnly+includeChanges; alert wheninverted2s10sflips or the 10Y moves more than 10 bps. - Discount rates for valuation models — pull the 10Y/20Y/30Y par yields for a valuation date (
startDate/endDate). - Cash management — compare 4- to 52-week bill coupon-equivalent yields with your bank's offer; get CUSIPs and maturity dates for orders.
- Inflation expectations —
includeBreakevensgives 5Y/10Y/30Y breakevens (nominal − TIPS) per day. - Backtests & research — multi-year daily history in one run (one request per year), oldest-first, only the fields you need.
- Sovereign-debt dashboards — monthly average interest rate by security type and daily total public debt outstanding.
Input
| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
series | string | parYield | parYield, realYield, billRates, longTermRates, realLongTerm, avgInterestRates, debtToPenny |
months | string[] | current month | YYYYMM values from 199001, e.g. ["202608","202609"]; ignored when a date range is set |
startDate | string | — | YYYY-MM-DD; with endDate selects a range (one request per calendar year); a start before 1990 is moved to 1990-01-01 |
endDate | string | today | YYYY-MM-DD, inclusive |
latestOnly | boolean | false | Only the newest day in the window, whatever sortOrder says (avgInterestRates: every security type of the newest month) |
includeSpreads | boolean | true | parYield: spreads, …Bps, inverted2s10s, inverted3m10y, curveShape |
includeBreakevens | boolean | false | parYield: adds real curve fetch and breakeven5y/7y/10y/20y/30y |
includeChanges | boolean | false | <field>ChangeBps vs the previous business day for the key fields of the series — also on the first day of a month or year (the run reads the month before when needed); not for avgInterestRates/debtToPenny |
securities | string[] | all | avgInterestRates filter — names from Reference; case does not matter, short forms T-Bills, T-Notes, T-Bonds, TIPS, FRN, FFB, SLGS, GAS work; an unknown name stops the run before any row is billed, with a "did you mean" |
fields | string[] | all | Output columns in your order; id, series, date, sourceUrl, fetchedAt are always kept and come first unless you list them. Case does not matter; a column the series does not have is skipped with a warning; a list with no usable column stops the run before any row is billed |
sortOrder | string | desc | desc (newest first) or asc (oldest first); only these two values are accepted |
maxItems | integer | 500 | 1 – 20 000; keeps the first rows in sortOrder (newest with desc, oldest with asc) |
Reference
Series
series | Source | One row = | Key fields | History from |
|---|---|---|---|---|
parYield | treasury.gov Daily Treasury Par Yield Curve Rates | business day | m1 m1_5 m2 m3 m4 m6 y1 y2 y3 y5 y7 y10 y20 y30 (% p.a.) | 1990 (short tenors added later: 1M 2001, 2M 2018, 4M 2022, 1.5M 2025) |
realYield | Daily Treasury Par Real Yield Curve Rates | business day | r5 r7 r10 r20 r30 | 2003 |
billRates | Daily Treasury Bill Rates | business day | w4/w6/w8/w13/w17/w26/w52 × BankDiscount, CouponEquivalent, Maturity, Cusip | 2001 |
longTermRates | Daily Treasury Long-Term Rates | business day | lt20yConstantMaturity, ltAverageOver10y, ltRealRate, extrapolationFactor | 2000 |
realLongTerm | Daily Treasury Real Long-Term Rate Averages | business day | realLongTermAverage | 2000 |
avgInterestRates | Fiscal Data Average Interest Rates on U.S. Treasury Securities | month × security type | securityType, security, avgInterestRate, fiscalYear, fiscalQuarter | 2001 |
debtToPenny | Fiscal Data Debt to the Penny | business day | debtHeldByPublic, intragovernmentalHoldings, totalPublicDebtOutstanding (USD) | 1993 |
Computed fields (parYield)
| Field | Formula |
|---|---|
spread2s10s / spread2s10sBps | y10 − y2 (pp / bps) |
spread3m10y | y10 − m3 |
spread5s30s, spread2s30s, spread1y10y | y30 − y5, y30 − y2, y10 − y1 |
inverted2s10s, inverted3m10y | spread < 0 |
curveShape | inverted if either spread < 0, flat if |2s10s| < 0.10 pp, else normal |
breakevenNy | yN − rN (requires includeBreakevens) |
<field>ChangeBps | (day − previous business day) × 100 (requires includeChanges); the previous business day may lie before the window |
securities values (avgInterestRates)
Marketable: Treasury Bills, Treasury Notes, Treasury Bonds, Treasury Inflation-Protected Securities (TIPS), Treasury Floating Rate Notes (FRN), Federal Financing Bank, Total Marketable.
Non-marketable: Domestic Series, Special Purpose Vehicle, State and Local Government Series, United States Savings Securities, United States Savings Inflation Securities, Government Account Series, Government Account Series Inflation Securities, Total Non-marketable.
Total: Total Interest-bearing Debt.
Used in earlier years (still matched): Treasury Inflation-Indexed Notes and Treasury Inflation-Indexed Bonds (the TIPS lines before 2005), Foreign Series (to 2025), R.E.A. Series (to 2011), Hope Bonds (2009–2016).
series and sortOrder are lists: Apify refuses any other value before the run starts.
Examples
Daily curve alert (latest day, changes and breakevens)
{ "series": "parYield", "latestOnly": true, "includeChanges": true, "includeBreakevens": true }
Two years of 2Y/10Y history for a backtest, oldest first
{ "startDate": "2024-06-01", "endDate": "2025-06-30", "fields": ["y2", "y10", "spread2s10s", "inverted2s10s"], "sortOrder": "asc", "maxItems": 1000 }
T-bill ladder shopping list
{ "series": "billRates", "latestOnly": true }
Real yields for August 2026
{ "series": "realYield", "months": ["202608"] }
What does the government pay on its debt? (year to date, bills vs total)
{ "series": "avgInterestRates", "startDate": "2026-01-01", "securities": ["Treasury Bills", "Total Marketable", "Total Interest-bearing Debt"] }
Output
Par-curve row (trimmed):
{"id": "parYield:2026-09-11","series": "parYield","date": "2026-09-11","m1": 3.93, "m3": 4.07, "m6": 4.12, "y1": 4.35, "y2": 4.63, "y5": 4.78, "y10": 4.96, "y20": 5.38, "y30": 5.35,"spread2s10s": 0.33, "spread2s10sBps": 33, "spread3m10y": 0.89, "spread5s30s": 0.57,"inverted2s10s": false, "inverted3m10y": false, "curveShape": "normal","breakeven5y": 2.4, "breakeven10y": 2.36, "breakeven30y": 2.28,"y10ChangeBps": 1, "spread2s10sChangeBps": -6,"sourceUrl": "https://home.treasury.gov/resource-center/data-chart-center/interest-rates/pages/xml?data=daily_treasury_yield_curve&field_tdr_date_value_month=202609","fetchedAt": "2026-09-12T23:37:42.109Z"}
| Field | Type | Description |
|---|---|---|
id | string | <series>:<date> (avgInterestRates: ` |
series | string | Input series |
date | string | Business day (YYYY-MM-DD) |
| tenor fields | number | null | Percent per annum; null when Treasury did not publish that tenor on that day |
| spreads / flags / breakevens / changes | number | boolean | null | See Computed fields |
sourceUrl | string | The exact treasury.gov feed or Fiscal Data API request the row was read from |
fetchedAt | string | ISO timestamp |
Every column has a title, a description and an example in the dataset schema, so agents can see the shape before a run. The key-value store record SUMMARY holds the window, the row count (items, delivered), every request URL, the newest row, warnings, failed requests and, when a run was cut short, why (stoppedBy) — handy for one-call agents.
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~us-treasury-yields/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'content-type: application/json' -d '{"latestOnly":true,"includeChanges":true}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/us-treasury-yields').call({ startDate: '2025-01-01', fields: ['y2', 'y10', 'spread2s10s'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/us-treasury-yields").call(run_input={"series": "billRates", "latestOnly": True})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: connect your agent to https://mcp.apify.com and call the yadroo/us-treasury-yields tool with the same JSON.
Pricing
Pay per event: $0.001 per run start + $0.001 per row. Latest day ≈ $0.002; one month (~21 rows) ≈ $0.022; a full year of daily curves (~250 rows) ≈ $0.25; ten years ≈ $2.5. Store discounts: Bronze −10 %, Silver −20 %, Gold and above −30 % on the row price; the start event is the same on every plan; platform usage is included. Your maximum cost per run is respected: the run writes only the rows it pays for and ends with "Stopped at your spending limit: N rows delivered".
Limits & FAQ
- Freshness — treasury.gov posts each day's rates after the close (~4:30–6 pm ET); weekends and federal holidays have no rows.
avgInterestRatesis monthly (published a few days after month end);debtToPennydaily with a one-day lag. - Turn of the month — with the default window (current month) nothing is published yet on the 1st until the close, and
avgInterestRateslags by days. Such a run steps back up to two months, so you always get the latest available rows; the window used is in the log, the run status andSUMMARY. A window you set yourself (months,startDate/endDate) is never widened — an empty month stays empty. - Speed — treasury.gov XML is slow (5–30 s per request); a month is one request, a date range is one request per calendar year, breakevens double it, and
includeChangesmay add one month request. Rows are written page by page as they arrive. 1990→today is ~37 year requests: allow 15–35 minutes, or split the range. Retries with back-off on 429/5xx (honouring Retry-After); a 4xx answer is not retried. Malformed dates, reversed ranges, unknown securities or unusablefieldsstop the run at once with a clear message. - Timeout — a run close to its timeout stops starting new requests, keeps every row it has written and ends SUCCEEDED with "Stopped before the run timeout: N rows saved". Raise the run timeout (default 900 s) or split the date range for more.
- Failures — if a page cannot be read after the retries, the other pages are still written and the status names the page that failed; a run that could read nothing fails with Treasury's error.
- Missing tenors — older years lack short tenors (
m1before 2001,m2before 2018,m4before 2022,m1_5before 2025): they arenull, spreads that need them arenulltoo. - Are these "risk-free rates"? — They are Treasury's official constant-maturity par yields (the same numbers as the Daily Treasury Par Yield Curve page); TIPS real yields come from the real curve feed.
- Roadmap — FRED-style monthly averages and a "curve on date X vs date Y" diff mode on request.
Made by Yadroo — see also fx-rates, world-bank-indicators, sec-company-financials, sec-edgar-filings, kalshi-markets.