How to Use an Analyst Ratings API for Buy, Sell, and Hold Recommendation Data

By Intrinio
October 2, 2026

Analyst ratings are one of the most requested elements on any equity screen. Users expect to see whether Wall Street likes a stock, and they expect it next to the price. It looks like a simple feature.

It is not. Every covering firm uses its own vocabulary, ratings change without announcement, and the difference between "what analysts think today" and "what analysts thought on the day I am backtesting" is the difference between a working model and a broken one. An analyst ratings API is how you get recommendation data in a form that survives contact with a production application.

What Is Analyst Ratings Data?

Sell-side analysts at covering firms publish opinions on the securities they follow. Each opinion carries a recommendation, usually some flavor of buy, hold, or sell, and often a price target and an earnings estimate alongside it. Stock analyst ratings data is the machine-readable record of those opinions.

It arrives in two distinct shapes, and the distinction matters enough that it gets its own section below. Consensus data aggregates every analyst covering a security into counts and an average. Individual analyst data keeps each opinion separate, attributed to the analyst and the firm that issued it.

Intrinio serves both. Consensus recommendation data comes through the Zacks analyst ratings endpoints. Individual analyst-level data, including target prices per analyst, firm attribution, and historical accuracy, comes through the Analyst Estimates feed, which carries more than 20 years of history on a GAAP basis.

What Do Buy, Sell, and Hold Ratings Represent?

Recommendations normalize onto a five-point scale: strong buy, buy, hold, sell, strong sell. Alongside the counts in each bucket, the data carries a numeric mean.

The mean runs from 1 to 5, where 1 is strong buy and 5 is strong sell. Lower is more bullish. This trips up almost everyone building against ratings data for the first time, because the instinct is to treat a higher number as a better score. A screen written the wrong way round returns exactly the stocks analysts like least, and it returns them silently.

Three things are worth understanding about what the labels actually mean.

First, ratings are usually relative, not absolute. A buy typically means the analyst expects the security to outperform over some horizon, commonly twelve months, often measured against a sector or the coverage universe rather than against zero. A buy is not a prediction that the price goes up.

Second, the distribution is skewed bullish. Across the sell side, buys and strong buys substantially outnumber sells and strong sells. That skew is structural, and it means a hold often functions as a soft negative rather than a genuine neutral. If your application presents a hold as "analysts are indifferent," you are presenting it more favorably than the market reads it.

Third, there is no industry-standard vocabulary. One firm says outperform, another says overweight, a third says accumulate, and a fourth says add. Mapping that vocabulary onto a consistent five-point scale is the work a ratings feed does for you, and it is the reason scraping ratings from individual firms does not scale. Normalization is the product.

Individual Analyst Ratings vs. Consensus Ratings

These serve different jobs and you should be deliberate about which one you are calling.

Consensus ratings collapse coverage into a summary. The record carries strong_buys, buys, holds, sells, and strong_sells as counts, total as the number of analysts covering, and mean as the average. This is what belongs on a ticker page. It renders cleanly as a distribution bar, it is one row per security per date, and it is what a retail-facing user actually wants to see.

Individual analyst ratings keep each opinion intact: which analyst, at which firm, said what, with their own price target. This is what research platforms and institutional workflows need, because the questions they ask are different. Which firms are bullish? Did the most accurate analyst on this name just change their view? Is the consensus being held up by two outliers? None of those are answerable from a consensus number.

The practical pattern is to use consensus for display and individual data for analysis. A ticker page shows the distribution. A research screen weights by analyst track record.

One note on scope: price target data is its own feed, reached through the Zacks Target Price Consensuses endpoint, and the estimate feeds are selected and priced individually rather than bundled together. If your application needs ratings and targets and earnings estimates, that is three deliberate choices, not one.

How to Track Analyst Rating Changes Over Time

This is where most implementations go wrong, and it is worth getting right early.

The time series endpoint, /securities/{identifier}/zacks/analyst_ratings, returns the progression of consensus ratings for a security. Pass start_date and end_date to bound the window and page through the results. Every count is filterable server-side through parameters such as mean_greater, mean_less, strong_buys_greater, and total_greater, so you can screen at the API rather than pulling everything and filtering in your own code.

The snapshot endpoint, /securities/{identifier}/zacks/analyst_ratings/snapshot, covers more than 5,000 US and Canadian listed companies and returns a point-in-time view. It carries the same counts and mean, plus a percentile field between 0 and 1 that positions the security's rating against the wider universe.

The critical field pair is snapshot_date and rating_date. One is when the observation was recorded, the other is when the ratings were effective. They are not the same, and if you collapse them into a single date you introduce lookahead bias into every backtest you run. A model that appears to trade profitably on rating changes is usually a model that saw the rating before it existed. Keep both dates and join on the one that reflects what was actually knowable at the time.

For change detection specifically, the level is rarely the signal. Migration is. A security sitting at a mean of 2.1 for six months tells you little; two analysts moving from hold to buy in a week tells you something. Diff consecutive records and alert on the transition, not the threshold.

Using Analyst Ratings in Financial Apps and Research Platforms

Ticker page display. The consensus distribution rendered as a bar, with the total analyst count shown alongside it. Showing the count matters: a strong buy consensus from two analysts is not the same claim as one from thirty.

Screening and ranking. Filter on the mean to build bullish or bearish universes, or use the percentile field to rank a name against the broader market rather than against an absolute cutoff.

Upgrade and downgrade alerting. Diff the time series and fire on bucket migration. This is among the highest-engagement notifications a finance application can send, because it is genuinely new information rather than a price move the user already saw.

Research and surprise analysis. Ratings pair naturally with estimates and with reported results. Worth knowing how the pieces fit: reported actuals are fundamentals data, not estimates data, so surprise work joins across two families rather than pulling from one.

Backtesting. Twenty-plus years of history supports genuine strategy research, provided you respect the point-in-time discipline above.

One commercial note that catches teams late: displaying third-party ratings to your own users is a licensing question, not just a technical one. Confirm your redistribution and display rights before you build the feature, not after.

Access Analyst Ratings Data With Intrinio

Intrinio delivers consensus recommendation counts and means through the Zacks analyst ratings and snapshot endpoints, with server-side filtering on every field and coverage of more than 5,000 US and Canadian listed companies. Individual analyst-level views, target prices per analyst, firm attribution, and historical accuracy come through the Analyst Estimates feed, with more than 20 years of history.

These sit in the Estimates family, available on the Enterprise plan and priced per feed, so you select the estimate types your product actually uses rather than taking a fixed bundle.

Request Enterprise Access to talk through which estimate feeds fit your application, what coverage you need, and how ratings data sits alongside the pricing and fundamentals feeds you are already running.

‍

No items found.