Skip to main content
GET
https://api.debtstack.ai
/
v1
/
pricing
Bond Pricing
curl --request GET \
  --url https://api.debtstack.ai/v1/pricing
{
  "data": [
    {
      "cusip": "<string>",
      "bond_name": "<string>",
      "last_price": 123,
      "last_trade_date": "<string>",
      "ytm": 123,
      "spread": 123,
      "staleness_days": 123
    }
  ]
}

Overview

Retrieve bond pricing data including last trade price, yield to maturity (YTM), and spread to treasury. Pricing data is sourced from FINRA TRACE.
Bond pricing is available on Pro tier and above. Free tier users can access pricing through the /v1/bonds endpoint with has_pricing=true.

Request

ticker
string
Comma-separated company tickers.Example: RIG,VAL
cusip
string
Comma-separated CUSIPs.Example: 893830AK8,89157VAG8
date
string
Pricing as of date (YYYY-MM-DD).
date_from
string
Historical pricing start date.
date_to
string
Historical pricing end date.
aggregation
string
default:"latest"
Aggregation mode: latest, daily, weekly
min_ytm
number
Minimum YTM (%).
max_ytm
number
Maximum YTM (%).
min_spread
integer
Minimum spread (bps).
fields
string
Fields to return.
sort
string
Sort field.Example: -ytm
limit
integer
default:"50"
Results per page.

Response

data
array
Array of pricing objects.

Examples

Current Pricing for Company

curl "https://api.debtstack.ai/v1/pricing?ticker=RIG&aggregation=latest&fields=cusip,bond_name,last_price,ytm,spread,staleness_days" \
  -H "X-API-Key: ds_xxxxx"

Response

{
  "data": [
    {
      "cusip": "893830AK8",
      "bond_name": "8.00% Senior Notes due 2027",
      "last_price": 94.25,
      "ytm": 9.42,
      "spread": 512,
      "staleness_days": 1
    },
    {
      "cusip": "893830AL6",
      "bond_name": "7.50% Senior Notes due 2031",
      "last_price": 87.50,
      "ytm": 9.85,
      "spread": 548,
      "staleness_days": 2
    }
  ],
  "meta": {
    "total": 8,
    "priced_count": 6,
    "stale_count": 2,
    "as_of": "2026-01-23T16:00:00Z"
  }
}

Historical Pricing

curl "https://api.debtstack.ai/v1/pricing?cusip=893830AK8&date_from=2026-01-01&date_to=2026-01-15&aggregation=daily" \
  -H "X-API-Key: ds_xxxxx"
Response:
{
  "data": [
    {
      "date": "2026-01-15",
      "cusip": "893830AK8",
      "last_price": 94.25,
      "ytm": 9.42,
      "spread": 512
    },
    {
      "date": "2026-01-14",
      "cusip": "893830AK8",
      "last_price": 94.50,
      "ytm": 9.38,
      "spread": 508
    },
    {
      "date": "2026-01-13",
      "cusip": "893830AK8",
      "last_price": 95.00,
      "ytm": 9.28,
      "spread": 498
    }
  ],
  "meta": {
    "total": 11
  }
}

High-Yield Screen

Find bonds with YTM > 10%:
curl "https://api.debtstack.ai/v1/pricing?min_ytm=10.0&sort=-ytm&limit=20" \
  -H "X-API-Key: ds_xxxxx"

Use Cases

Compare Bond Yields

# Get pricing for multiple bonds
response = requests.get(
    f"{BASE_URL}/pricing",
    params={
        "cusip": "893830AK8,893830AL6",
        "fields": "cusip,bond_name,ytm,spread,maturity_date"
    },
    headers={"X-API-Key": API_KEY}
)

bonds = sorted(response.json()["data"], key=lambda x: x["ytm"])
print("Bonds by YTM (ascending):")
for bond in bonds:
    print(f"  {bond['bond_name']}: {bond['ytm']:.2f}% ({bond['spread']}bps spread)")

Track Price Changes

# Get 2-week price history
response = requests.get(
    f"{BASE_URL}/pricing",
    params={
        "cusip": "893830AK8",
        "date_from": "2026-01-09",
        "date_to": "2026-01-23",
        "aggregation": "daily"
    },
    headers={"X-API-Key": API_KEY}
)

history = response.json()["data"]
if len(history) >= 2:
    first = history[-1]["last_price"]
    last = history[0]["last_price"]
    change = last - first
    print(f"2-week price change: {change:+.2f} ({first:.2f} -> {last:.2f})")

Notes

  • Pricing data is from FINRA TRACE
  • staleness_days indicates how fresh the pricing is
  • Bonds without recent trades may not have pricing
  • YTM calculations assume hold to maturity
  • Spread is calculated against the interpolated treasury curve