Back to blog
methodology

Where to get free Treasury yield curve data

30 September 2026 5 min read

Quick answer

The two best free sources of US Treasury yield curve data are the Treasury's own daily par yield curve, downloadable as a CSV per year with no key, and FRED's constant-maturity series such as DGS10, which carry the same numbers through the Federal Reserve's H.15 release. Use the Treasury file when you want every tenor for a date, and FRED when you want a long history of one tenor or a JSON API. Both are par yields, not spot rates.

There are two free, official sources for US Treasury yields, and for the tenors they share they carry the same numbers. The Treasury Department publishes the daily par yield curve itself, as a CSV per year with no key or sign-up. FRED, the St. Louis Fed's database, republishes each tenor as its own series (DGS10 for the 10-year) from the Federal Reserve's H.15 release.

On 28 September 2026 both showed the 10-year at 5.24%. The difference is shape and timing, not substance. On the morning of 30 September the Treasury file already had 29 September (5.26%) while FRED's latest observation was still 28 September.

Most of the pages ranking for this question are third-party API wrappers. You do not need one. You need to know which of the two free sources fits the chart, and the four quirks in the Treasury file that break a first attempt.

Source 1: the Treasury's daily par yield curve

The Treasury publishes the curve in the interest rate data section of its site, with a CSV export per calendar year. The CSV for 2026 comes from this address, and changing the year in both places gives you other years (the archive we checked goes back to 1990):

https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/2026/all?type=daily_treasury_yield_curve&field_tdr_date_value=2026&page&_format=csv

Each row is one business day and each column is one tenor, from 1 month out to 30 years. That is the right shape for a yield curve chart: pick a row and plot it across the columns.

In Python:

import io, requests, pandas as pd

url = "https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/2026/all?type=daily_treasury_yield_curve&field_tdr_date_value=2026&page&_format=csv"

df = pd.read_csv(io.StringIO(requests.get(url, timeout=30).text), parse_dates=["Date"]).sort_values("Date")

That sort at the end is not decoration, which brings us to the quirks.

Four quirks in the Treasury file

Rows run newest first. The 2026 file opens with 29 September and ends with 2 January. Plot it unsorted and a time-series library will either draw the line backwards or complain. Sort by date before anything else.

The columns change from year to year. The Treasury has added tenors over time, and the older files simply do not have them. We checked the files directly: the 4-month column has its first value on 19 October 2022, the 1.5-month column first appears with a value on 18 February 2025, the 2003 file has no 30-year column at all, and the 1990 file has neither a 1-month nor a 20-year column. Code that stacks yearly files by position rather than by column name will silently put yields under the wrong tenor.

The header names are not consistent. Most tenors are labeled like "1 Mo" and "10 Yr", but the newest one is "1.5 Month". If your code builds column names from a pattern, that one will not match. Read the header from the file.

Missing values are empty fields. A tenor that did not exist yet, or was not published that day, is simply blank. Make sure your chart shows a gap there rather than reading the blank as zero, which would plot a yield collapse that never happened.

Source 2: FRED's constant-maturity series

FRED stores each tenor as its own series: DGS1MO, DGS3MO, DGS6MO, DGS1, DGS2, DGS5, DGS10 and DGS30 among them. Each series page offers a data download without an account. For code, FRED's API returns observations as JSON, XML, Excel or zipped CSV, and it needs a free API key: its documentation describes a 32-character key as required.

FRED is the better source when the chart is one tenor over a long period, or a spread between two tenors, such as the 10-year minus the 2-year, one of the standard ways to visualise a curve inversion. You pull two series and subtract, with no reshaping of a wide file. It also sits alongside a large library of other economic series, so a yield next to inflation or unemployment is one more request.

The trade-off is timing. FRED picks the numbers up from the H.15 release, which in our check left it a day behind the Treasury file. For a chart of last week's curve that does not matter. For a chart that should show today's close, go to the Treasury.

Which one to use

If you want the whole curve on a given date, or a curve animated day by day, use the Treasury CSV. If you want a decades-long line for one or two tenors, or you want to combine yields with other economic data, use FRED. If you want both, the numbers will agree, so you can mix them as long as you respect the one-day lag.

Par yields are not spot rates

Both sources publish par yields: the coupon rate at which a bond with that maturity would price at par. That is the right number for a yield curve chart. It is the wrong input for discounting a cash flow, which needs zero-coupon spot rates. To get those you bootstrap the par curve, and the Z-spread walkthrough does exactly that with the Treasury file from 22 September 2026. The same point matters for duration and convexity charts, where the pricing function should discount at spot rates.

If you are pulling options data rather than rates, the companion piece is where to get free options chain data. The rates side is easier: both sources here are official and free.

[QUADESTO-EMBED: US Treasury par yield curve for 29 Sep 2026 against 2 Jan 2026, 1-month to 30-year, from the Treasury daily CSV, with the 10y FRED DGS10 value overlaid as a check]

Where Quadesto fits

Drop either file into Quadesto to chart it as a curve or a time series, then embed the result on your site or newsletter, with a "Made with Quadesto" credit on the free tier and your own branding on Pro.

Ready to try Quadesto?

Connect your data. AI builds the charts. Embed anywhere.

Get Started Free
treasury yieldsfredyield curvedata sourcespython