CDS Spreads
curl --request GET \
--url https://api.example.com/v1/market/cdsimport requests
url = "https://api.example.com/v1/market/cds"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/market/cds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/market/cds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/market/cds"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/market/cds")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/market/cds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyMarket Data
CDS Spreads
CDS spread time series (bond spread-to-treasury proxy)
GET
/
v1
/
market
/
cds
CDS Spreads
curl --request GET \
--url https://api.example.com/v1/market/cdsimport requests
url = "https://api.example.com/v1/market/cds"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/market/cds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/market/cds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/market/cds"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/market/cds")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/market/cds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyOverview
Get CDS spread time series for corporate issuers. Spreads are derived from TRACE bond pricing data using a bond spread-to-treasury methodology, economically equivalent to CDS spreads (CDS-bond basis is typically within 20 bps for investment grade).Request
Company Filters
string
Filter by company ticker(s), comma-separated.Example:
AAPL,MSFTstring
Filter by sector.Example:
TechnologyCDS Filters
string
default:"5Y"
CDS tenor:
1Y, 3Y, 5Y, 7Y, 10Ystring
Data source filter:
bond_spread_proxy, dtcc_sdr, ice_settlementDate Filters
string
Start date (YYYY-MM-DD).
string
End date (YYYY-MM-DD).
Convenience
boolean
default:"false"
Return only the most recent spread per company.
Response Options
string
Comma-separated fields to return.Example:
ticker,spread_date,spread_bps,trade_countstring
default:"-spread_date"
Sort field. Prefix
- for descending.integer
default:"50"
Results per page. Maximum 200.
integer
default:"0"
Pagination offset.
Coverage
- 111 companies with CDS spread data
- ~53,000 records across all tenors and dates
- 598 trading days (March 2023 to present)
- 5 tenors: 1Y, 3Y, 5Y, 7Y, 10Y
- Updated daily at 9:30 PM ET
Methodology
Spreads are computed using a bond spread-to-treasury proxy:- Select fixed-rate senior unsecured bonds with TRACE pricing
- Group by remaining maturity into tenor buckets (1Y / 3Y / 5Y / 7Y / 10Y)
- Apply data quality filters (price >= $60, no estimated pricing, maturity >= 1 year)
- Remove outliers (3-sigma for groups >= 4 bonds, range check for smaller groups)
- Report median spread-to-treasury in basis points
Examples
Get Latest Spreads for a Company
curl "https://api.debtstack.ai/v1/market/cds?ticker=AAPL&latest_only=true" \
-H "X-API-Key: ds_xxxxx"
import requests
response = requests.get(
"https://api.debtstack.ai/v1/market/cds",
params={"ticker": "AAPL", "latest_only": True},
headers={"X-API-Key": "ds_xxxxx"}
)
for s in response.json()["data"]:
print(f"{s['tenor']}: {s['spread_bps']} bps ({s['trade_count']} trades)")
Response
{
"data": [
{
"ticker": "AAPL",
"company_name": "Apple Inc.",
"spread_date": "2026-03-04",
"tenor": "5Y",
"spread_bps": 42.5,
"trade_count": 12,
"bond_count": 8,
"source": "bond_spread_proxy"
}
],
"meta": {
"total": 1,
"limit": 50,
"offset": 0
}
}
More Examples
1-Year Spread History
curl "https://api.debtstack.ai/v1/market/cds?ticker=AAPL&tenor=5Y&from_date=2025-03-01&to_date=2026-03-01" \
-H "X-API-Key: ds_xxxxx"
Compare Spreads Across Companies
curl "https://api.debtstack.ai/v1/market/cds?ticker=AAPL,MSFT,GOOGL&tenor=5Y&latest_only=true" \
-H "X-API-Key: ds_xxxxx"
Short-Term vs Long-Term Spread
# Compare 1Y and 10Y tenors for curve shape analysis
curl "https://api.debtstack.ai/v1/market/cds?ticker=AAL&tenor=1Y&latest_only=true" \
-H "X-API-Key: ds_xxxxx"
curl "https://api.debtstack.ai/v1/market/cds?ticker=AAL&tenor=10Y&latest_only=true" \
-H "X-API-Key: ds_xxxxx"

