curl --request GET \
--url 'https://api.benzinga.com/api/v1/consensus-ratings?token=' \
--header 'accept: <accept>'import requests
url = "https://api.benzinga.com/api/v1/consensus-ratings?token="
headers = {"accept": "<accept>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {accept: '<accept>'}};
fetch('https://api.benzinga.com/api/v1/consensus-ratings?token=', 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.benzinga.com/api/v1/consensus-ratings?token=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: <accept>"
],
]);
$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.benzinga.com/api/v1/consensus-ratings?token="
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("accept", "<accept>")
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.benzinga.com/api/v1/consensus-ratings?token=")
.header("accept", "<accept>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.benzinga.com/api/v1/consensus-ratings?token=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["accept"] = '<accept>'
response = http.request(request)
puts response.read_body{
"aggregate_ratings": {
"strong_buy": 7,
"buy": 12,
"hold": 5,
"sell": 2
},
"aggregate_type": "number",
"low_price_target": 200,
"high_price_target": 350,
"consensus_price_target": 293.69192307692305,
"consensus_rating_val": 3.923076923076923,
"consensus_rating": "BUY",
"updated_at": "2026-01-05T19:42:36Z",
"total_analyst_count": 50,
"unique_analyst_count": 26
}
{
"ok": false,
"errors": [
{
"code": "auth_failed",
"id": "unauthorized",
"value": "Invalid or missing authentication token"
}
]
}
{
"ok": false,
"errors": [
{
"code": "no_data_found",
"id": "not_found",
"value": "No data found for the specified parameters"
}
]
}
{
"ok": false,
"errors": [
{
"code": "internal_server_error",
"id": "server_error",
"value": "An unexpected error occurred while processing your request"
}
]
}
Consensus Ratings
Returns aggregated consensus analyst ratings data for a given ticker symbol. This endpoint provides consensus price targets, aggregate ratings distribution, and analyst counts based on recent analyst ratings.
curl --request GET \
--url 'https://api.benzinga.com/api/v1/consensus-ratings?token=' \
--header 'accept: <accept>'import requests
url = "https://api.benzinga.com/api/v1/consensus-ratings?token="
headers = {"accept": "<accept>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {accept: '<accept>'}};
fetch('https://api.benzinga.com/api/v1/consensus-ratings?token=', 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.benzinga.com/api/v1/consensus-ratings?token=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: <accept>"
],
]);
$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.benzinga.com/api/v1/consensus-ratings?token="
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("accept", "<accept>")
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.benzinga.com/api/v1/consensus-ratings?token=")
.header("accept", "<accept>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.benzinga.com/api/v1/consensus-ratings?token=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["accept"] = '<accept>'
response = http.request(request)
puts response.read_body{
"aggregate_ratings": {
"strong_buy": 7,
"buy": 12,
"hold": 5,
"sell": 2
},
"aggregate_type": "number",
"low_price_target": 200,
"high_price_target": 350,
"consensus_price_target": 293.69192307692305,
"consensus_rating_val": 3.923076923076923,
"consensus_rating": "BUY",
"updated_at": "2026-01-05T19:42:36Z",
"total_analyst_count": 50,
"unique_analyst_count": 26
}
{
"ok": false,
"errors": [
{
"code": "auth_failed",
"id": "unauthorized",
"value": "Invalid or missing authentication token"
}
]
}
{
"ok": false,
"errors": [
{
"code": "no_data_found",
"id": "not_found",
"value": "No data found for the specified parameters"
}
]
}
{
"ok": false,
"errors": [
{
"code": "internal_server_error",
"id": "server_error",
"value": "An unexpected error occurred while processing your request"
}
]
}
{
"aggregate_ratings": {
"strong_buy": 7,
"buy": 12,
"hold": 5,
"sell": 2
},
"aggregate_type": "number",
"low_price_target": 200,
"high_price_target": 350,
"consensus_price_target": 293.69192307692305,
"consensus_rating_val": 3.923076923076923,
"consensus_rating": "BUY",
"updated_at": "2026-01-05T19:42:36Z",
"total_analyst_count": 50,
"unique_analyst_count": 26
}
{
"ok": false,
"errors": [
{
"code": "auth_failed",
"id": "unauthorized",
"value": "Invalid or missing authentication token"
}
]
}
{
"ok": false,
"errors": [
{
"code": "no_data_found",
"id": "not_found",
"value": "No data found for the specified parameters"
}
]
}
{
"ok": false,
"errors": [
{
"code": "internal_server_error",
"id": "server_error",
"value": "An unexpected error occurred while processing your request"
}
]
}
Authorizations
Headers
Specifies return format. Query parameters work the same for both formats
application/json Query Parameters
Number of results returned. Limit 1000
Date to query from point in time
Date to query to point in time
One ticker symbol to query the aggregate for. Maximum 1 ticker
To simplify the aggregate ratings to only BUY, SELL, HOLD, default will return all ratings (STRONG_BUY, BUY, HOLD, SELL, STRONG_SELL)
To aggregate the ratings by either number or percentage
number, percentage Response
success
Aggregate rating counts by category
Show child attributes
Show child attributes
Time period for aggregation (30D, 90D, 1Y)
"90D"
Consensus (average) price target
195.5
Consensus rating (Strong Buy, Buy, Hold, Sell, Strong Sell)
"Buy"
Numerical consensus rating value (1-5 scale)
4.2
Highest analyst price target
225
Lowest analyst price target
150
Total number of analysts providing ratings
19
Number of unique analysts (excluding duplicates)
15
Timestamp when consensus was last updated
"2024-01-09T16:00:00Z"
Was this page helpful?