from finance_dev import FinanceDev, models
with FinanceDev(
security=models.Security(
client_id="<YOUR_CLIENT_ID_HERE>",
client_secret="<YOUR_CLIENT_SECRET_HERE>",
),
) as fd_client:
res = fd_client.alternative_data.get_earnings_quality_score(symbol="AAPL", freq=models.ReportingFrequency.QUARTERLY)
assert res.earnings_quality_score_response is not None
# Handle response
print(res.earnings_quality_score_response)curl --request GET \
--url https://api.aries.com/v1/stock/earnings-quality-score \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aries.com/v1/stock/earnings-quality-score', 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.aries.com/v1/stock/earnings-quality-score",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.aries.com/v1/stock/earnings-quality-score"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.aries.com/v1/stock/earnings-quality-score")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aries.com/v1/stock/earnings-quality-score")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"cashGenerationCapitalAllocation": 43.21394,
"growth": 92.320305,
"letterScore": "A",
"leverage": 100,
"period": "2025-12-31",
"profitability": 76.634964,
"score": 78.042305
}
],
"freq": "quarterly",
"symbol": "F"
}Earnings Quality Score
Retrieve company earnings quality score. Higher score indicates higher earnings quality. Supports annual and quarterly frequency.
Use Case: Rank or filter stocks by earnings quality for fundamental screening.
from finance_dev import FinanceDev, models
with FinanceDev(
security=models.Security(
client_id="<YOUR_CLIENT_ID_HERE>",
client_secret="<YOUR_CLIENT_SECRET_HERE>",
),
) as fd_client:
res = fd_client.alternative_data.get_earnings_quality_score(symbol="AAPL", freq=models.ReportingFrequency.QUARTERLY)
assert res.earnings_quality_score_response is not None
# Handle response
print(res.earnings_quality_score_response)curl --request GET \
--url https://api.aries.com/v1/stock/earnings-quality-score \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aries.com/v1/stock/earnings-quality-score', 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.aries.com/v1/stock/earnings-quality-score",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.aries.com/v1/stock/earnings-quality-score"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.aries.com/v1/stock/earnings-quality-score")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aries.com/v1/stock/earnings-quality-score")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"cashGenerationCapitalAllocation": 43.21394,
"growth": 92.320305,
"letterScore": "A",
"leverage": 100,
"period": "2025-12-31",
"profitability": 76.634964,
"score": 78.042305
}
],
"freq": "quarterly",
"symbol": "F"
}Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | Stock ticker symbol (e.g. AAPL). |
freq | string | Yes | Frequency: annual or quarterly. |
Response
Success returns200 OK with a JSON object containing earnings quality data (e.g. data array with period, score, letterScore, profitability, growth, cashGenerationCapitalAllocation, leverage), freq, and symbol.
Errors: 400 when symbol or freq is missing or invalid, 401 unauthorized, 404 when no data found, 500 server error.Authorizations
OAuth2 Bearer token: obtain an access token from the token endpoint and send it in the Authorization header.
Query Parameters
Stock ticker to query. Send the plain uppercase symbol exactly as you'd type it on a brokerage screen, e.g. AAPL, MSFT.
"AAPL"
How often the score is computed. Allowed values:
annual— one score per fiscal year (broad trends).quarterly— one score per quarter (closer to recent reporting). How often the underlying data is reported:annual— once per fiscal year (10-K, full-year statements).quarterly— once per fiscal quarter (10-Q, quarterly statements).
annual, quarterly "quarterly"
Response
Earnings quality score data.
Earnings quality score history for a company, as provided by Finnhub.
Earnings quality scores, one entry per reporting period.
Show child attributes
Show child attributes
How often the underlying data is reported:
annual— once per fiscal year (10-K, full-year statements).quarterly— once per fiscal quarter (10-Q, quarterly statements).
annual, quarterly "quarterly"
Company ticker symbol.
Was this page helpful?