Free Treasury Auction Results API
US Treasury auctions from TreasuryDirect: the announced calendar, then the results the afternoon of the auction. High yield, bid-to-cover, and how much went to indirect bidders (foreign and domestic institutions bidding through dealers), direct bidders and primary dealers. History starts in 2010; the free API returns the last six months. Coupon auctions also appear on the economic calendar with the high yield as the actual.
Endpoints
/api/markets/treasury-auctions?type=Note&term=10-Year&from=YYYY-MM-DD&limit=5000, or ?upcoming=1Newest first. Default: coupon auctions (notes, bonds, TIPS, FRNs), 100 rows. type selects Bill, CMB, Note, Bond, TIPS, FRN or all; term one maturity (2-Year, 10-Year, 29-Year 11-Month for a reopening); from and to a window; limit up to 5,000. upcoming=1 returns announced auctions that have not run yet, soonest first.
/api/markets/treasury-auctions/csvCoupon auctions as CSV, newest first; ?type=all includes bills.
Example
import requests
r = requests.get("https://xoomar.com/api/markets/treasury-auctions", params={"term": "10-Year", "limit": 12})
for a in r.json()["data"]:
print(a["auctionDate"], a["highYield"], "bid-to-cover", a["bidToCover"], "indirect", a["indirectShare"])Response shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs, license, attribution, meta }. In meta, source names who publishes the data and sourceAttribution is the credit line to show with it. The data field is an array of records with these fields:
| Field | Type | Description |
|---|---|---|
| cusip | string | Security CUSIP; a reopening shares the original's CUSIP |
| auctionDate | string (date) | Auction date |
| securityType | string | Bill, CMB (cash management bill), Note, Bond, TIPS or FRN |
| securityTerm | string | Term as announced: 4-Week, 2-Year, 10-Year, 9-Year 10-Month (reopening) |
| issueDate | string (date) | null | Settlement date |
| maturityDate | string (date) | null | Maturity |
| reopening | boolean | null | True when the auction adds to an existing issue |
| offeringAmount | number | null | Announced size, USD |
| totalAccepted | number | null | Accepted, USD (null until results) |
| totalTendered | number | null | Bids received, USD |
| highYield | number | null | Stop-out yield, percent (notes, bonds, TIPS) |
| highRate | number | null | High discount rate (bills) or high discount margin (FRNs), percent |
| interestRate | number | null | Coupon set at auction, percent |
| bidToCover | number | null | Tendered divided by accepted |
| indirectAccepted | number | null | Accepted from indirect bidders, USD |
| directAccepted | number | null | Accepted from direct bidders, USD |
| dealerAccepted | number | null | Accepted by primary dealers, USD |
| indirectShare | number | null | Indirect share of accepted, 0 to 1 |
| directShare | number | null | Direct share of accepted, 0 to 1 |
| dealerShare | number | null | Dealer share of accepted, 0 to 1 |
Results appear within the hour of the auction close (about 13:00 ET for coupons, 11:30 ET for bills). Announced auctions carry the size and dates only until then.
Numeric fields typed string in the table carry exact decimals; parse them with your language's decimal type. No key needed to start: 10 requests a minute per IP without a key and 30 a minute with a free account key, with at least six months of history. A 429 response carries a Retry-After header in seconds. Credit XOOMAR with a link to the dataset page when you republish the data; the data terms are on the terms page.
A free account key raises the limit; send it in an X-API-Key header.
Frequently Asked Questions
Where does the data come from?
What do indirect, direct and dealer mean?
What is a tail?
What are the rate limits?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.