image

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

Analyst Ratings Documentation

Price Targets Documentation


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 the consensusOverview, 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

How to Get a Property Estimate Using SteadyAPI Oct 14, 2026

How to Get a Property Estimate Using SteadyAPI

Current and historical value for one property id. The optional bounds are calendar dates, not year counts.

How to List MLB Teams Using SteadyAPI Oct 13, 2026

How to List MLB Teams Using SteadyAPI

List MLB clubs and store the numeric id. The roster call takes that id as teamIds.

How to Get an AliExpress Description Using SteadyAPI Oct 12, 2026

How to Get an AliExpress Description Using SteadyAPI

Turn a product-detail description token into ordered text modules. The product id alone is not enough.

How to Find Vehicles for Sale Using SteadyAPI Oct 11, 2026

How to Find Vehicles for Sale Using SteadyAPI

Search vehicle listings by make, model, and ZIP. Price and mileage on each row are numbers.