In the world of algorithmic trading and financial data analysis, "Smart Money" refers to the capital controlled by institutional investors and market experts.
While retail sentiment can be volatile and reactive, professional analyst ratings and price targets offer a quantified view of institutional research. For developers building trading bots, dashboards, or analytical tools, integrating this data provides a critical layer of validation for market strategies.
To access these endpoints, you must obtain an API key:
Get your API key
By programmatically aggregating analyst consensus, you can determine if a stock's current price movement aligns with the expectations of major financial firms. This guide explains how to use SteadyAPI to retrieve specific price projections and buy, sell, and hold consensus ratios to build robust sentiment indicators.
The Endpoints
To construct a complete picture of professional sentiment, we will utilize two complementary endpoints.
Endpoint 1: GET /v1/markets/stock/analyst-ratings
This endpoint focuses on the raw numerical price expectations set by analysts. It provides the high, low, and mean price estimates, which are essential for calculating potential upside or downside percentage from the current price.
Endpoint 2: GET /v2/markets/stock/price-targets
This endpoint offers a broader consensus overview. In addition to price targets, it returns the specific count of analysts recommending a Buy, Sell, or Hold. This voting ratio is crucial for determining the strength of the conviction behind the price target.
Documentation Links
Detailed Parameter Analysis
Both endpoints rely on a primary identifier to locate the specific asset.
Parameter: symbol (or ticker)
This is the standard stock ticker symbol (e.g., NVDA, AAPL, TSLA) for the company you wish to analyze. The API is case-insensitive, but using uppercase is a standard convention. When making your request, this is passed as a query parameter.
Python Example
The following script demonstrates how to fetch data from both endpoints simultaneously to generate a Smart Money report. This script requires the requests library.
import requests
def get_smart_money_data(ticker, api_key):
# Configuration
base_url = "https://api.steadyapi.com"
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}
# 1. Fetch Analyst Ratings (High/Low/Mean Estimates)
ratings_url = f"{base_url}/v1/markets/stock/analyst-ratings"
ratings_params = {"ticker": ticker}
# 2. Fetch Price Targets (Consensus Buy/Sell Counts)
targets_url = f"{base_url}/v2/markets/stock/price-targets"
targets_params = {"symbol": ticker}
try:
# Execute Requests
ratings_response = requests.get(ratings_url, headers=headers, params=ratings_params)
targets_response = requests.get(targets_url, headers=headers, params=targets_params)
# Parse JSON
ratings_data = ratings_response.json()
targets_data = targets_response.json()
print(f"--- Analyst Report for {ticker} ---")
# Process Ratings Data
if 'body' in ratings_data and len(ratings_data['body']) > 0:
r_body = ratings_data['body'][0]
print(f"Mean Price Target: ${r_body.get('meanTargetEstimate')}")
print(f"High Price Target: ${r_body.get('highTargetEstimate')}")
print(f"Low Price Target: ${r_body.get('lowTargetEstimate')}")
else:
print("No Analyst Ratings found.")
# Process Consensus Data
if 'body' in targets_data and 'consensusOverview' in targets_data['body']:
c_data = targets_data['body']['consensusOverview']
buy = c_data.get('buy', 0)
hold = c_data.get('hold', 0)
sell = c_data.get('sell', 0)
total = buy + hold + sell
print(f"\n--- Consensus Overview ---")
print(f"Sentiment: {buy} Buy / {hold} Hold / {sell} Sell")
if total > 0:
print(f"Bullish Consensus: {round((buy/total)*100, 1)}%")
else:
print("No Consensus Data found.")
except Exception as e:
print(f"Error fetching data: {e}")
# Usage
get_smart_money_data("NVDA", "YOUR_ACCESS_TOKEN")
Understanding the Response
To parse the data effectively, it is important to understand the JSON structure returned by the API.
Response: Analyst Ratings (v1)
{
"body": [
{
"symbol": "NVDA",
"meanTargetEstimate": "825.38",
"highTargetEstimate": "1,200.00",
"lowTargetEstimate": "475.00"
}
]
}
Response: Price Targets (v2)
{
"body": {
"symbol": "aapl",
"consensusOverview": {
"lowPriceTarget": 158,
"highPriceTarget": 250,
"priceTarget": 205.33,
"buy": 19,
"sell": 1,
"hold": 8
}
}
}
Key Fields
- meanTargetEstimate / priceTarget
These fields represent the average expected price. Comparing this value to the current market price helps calculate the implied upside. If the meanTargetEstimate is significantly higher than the current trading price, the stock is theoretically undervalued by institutional standards. - highTargetEstimate / lowTargetEstimate
These define the range of professional expectations. The highTargetEstimate is useful for setting profit-taking zones, while the lowTargetEstimate can serve as a validation level for stop-losses. If price falls below the lowest analyst target, sentiment has likely shifted drastically. - buy / sell / hold
Found in theconsensusOverview, these integers are the raw votes. A high ratio of Buy versus Sell indicates strong institutional backing. For example, a stock with 19 Buys and 1 Sell is a stronger candidate for a long position than a stock with 10 Buys and 10 Sells, even if they share similar price targets.
Practical Use Cases
Automated Sentiment Analysis
You can build a screener that filters stocks based on the Buy to Total ratio. For instance, a script could filter for tickers where the Buy count represents over 80 percent of the total analyst ratings, isolating assets with high institutional conviction.
Validating Breakout Setups
When a technical indicator (like an RSI crossover or MACD signal) suggests a trade entry, you can query these endpoints to validate the setup. If a stock is breaking out technically, but the meanTargetEstimate is below the current price and the consensus is Hold or Sell, the breakout may lack the fundamental support required to sustain momentum.
Learn more or explore other endpoints:
SteadyAPI Stock and Options Data API