Free Treasury Auction Results API
Every US Treasury auction since January 2010 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. 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=2020-01-01&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 }. 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 values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication or API key needed. Credit XOOMAR with a link to the dataset page when you republish the data; the terms have the licence.
Need more headroom? A free account raises your limit to 120 requests a minute with 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.