Search Ratings
curl --request GET \
--url https://api.example.com/v1/ratingsimport requests
url = "https://api.example.com/v1/ratings"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/ratings', 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/ratings",
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/ratings"
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/ratings")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/ratings")
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_bodyRatings
Search Ratings
Search credit rating history from S&P, Moody’s, and Fitch
GET
/
v1
/
ratings
Search Ratings
curl --request GET \
--url https://api.example.com/v1/ratingsimport requests
url = "https://api.example.com/v1/ratings"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/ratings', 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/ratings",
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/ratings"
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/ratings")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/ratings")
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
Search credit rating history across 253 companies. Returns issuer-level and instrument-level ratings from S&P, Moody’s, and Fitch, sourced from SEC Rule 17g-7(b) NRSRO disclosures and LLM extraction from SEC filings.Request
Company Filters
string
Filter by company ticker(s), comma-separated.Example:
AAPL,MSFT,GOOGLstring
Filter by sector.Example:
TechnologyRating Filters
string
Filter by rating bucket:
IG, HY-BB, HY-B, HY-CCC, NRstring
Filter by S&P rating (e.g.,
BB+, BBB-)string
Filter by Moody’s rating (e.g.,
Ba1, Baa3)string
Filter by rating type:
issuer, senior_secured, senior_unsecured, subordinated, corporate_familystring
Filter by instrument CUSIP for instrument-level ratings.
boolean
default:"false"
Show only issuer-level ratings (exclude instrument-level).
Date Filters
string
Start date (YYYY-MM-DD).
string
End date (YYYY-MM-DD).
Convenience
boolean
default:"false"
Return only the most recent rating per company/agency.
Response Options
string
Comma-separated fields to return.Example:
ticker,agency,rating,effective_datestring
default:"-effective_date"
Sort field. Prefix
- for descending.integer
default:"50"
Results per page. Maximum 200.
integer
default:"0"
Pagination offset.
Coverage
- 253 companies with at least one rating
- 607 total ratings across S&P, Moody’s, and Fitch
- Rating types: issuer, senior_secured, senior_unsecured, subordinated, corporate_family
- Sources: SEC Rule 17g-7(b) NRSRO disclosures (Fitch, Moody’s) + LLM extraction from SEC filings (S&P)
- Refresh: Monthly (1st Sunday, 2 AM ET)
Examples
Get Latest Ratings for a Company
curl "https://api.debtstack.ai/v1/ratings?ticker=AAPL&latest=true" \
-H "X-API-Key: ds_xxxxx"
import requests
response = requests.get(
"https://api.debtstack.ai/v1/ratings",
params={"ticker": "AAPL", "latest": True},
headers={"X-API-Key": "ds_xxxxx"}
)
for r in response.json()["ratings"]:
print(f"{r['agency']}: {r['rating']} ({r['rating_type']})")
Response
{
"ratings": [
{
"ticker": "AAPL",
"company_name": "Apple Inc.",
"agency": "sp",
"rating": "AA+",
"rating_type": "issuer",
"outlook": "stable",
"effective_date": "2024-08-15",
"rating_bucket": "IG",
"source_section_type": "llm_extraction"
},
{
"ticker": "AAPL",
"company_name": "Apple Inc.",
"agency": "moodys",
"rating": "Aaa",
"rating_type": "issuer",
"outlook": "stable",
"effective_date": "2024-06-20",
"rating_bucket": "IG",
"source_section_type": "nrsro_17g7"
},
{
"ticker": "AAPL",
"company_name": "Apple Inc.",
"agency": "fitch",
"rating": "AA+",
"rating_type": "issuer",
"outlook": "stable",
"effective_date": "2024-05-10",
"rating_bucket": "IG",
"source_section_type": "nrsro_17g7"
}
],
"meta": {
"total": 3,
"limit": 50,
"offset": 0
}
}
More Examples
Screen for Investment Grade Companies
curl "https://api.debtstack.ai/v1/ratings?rating_bucket=IG&latest=true&issuer_only=true" \
-H "X-API-Key: ds_xxxxx"
Find High-Yield Ratings
curl "https://api.debtstack.ai/v1/ratings?rating_bucket=HY-BB&latest=true" \
-H "X-API-Key: ds_xxxxx"
Compare Ratings Across MAG7
curl "https://api.debtstack.ai/v1/ratings?ticker=AAPL,MSFT,GOOGL,AMZN,NVDA,META,TSLA&latest=true&issuer_only=true" \
-H "X-API-Key: ds_xxxxx"

