.jpg)
A price target on its own tells you very little. An analyst says a stock is worth $180 and it trades at $150. Is that a twenty percent opportunity, or is it a target set eight months ago that nobody has bothered to update?
The answer is in the history. Price targets are most useful as a series, not a snapshot, because what matters is the direction they are moving, how much the covering analysts disagree, and whether the consensus is fresh. A price target API that only returns today's number makes the most common analytical mistake for you, before you have written a line of code.
A consensus price target record aggregates every covering analyst's target for a security into one row. The fields do most of the explaining:
● high and low, the most bullish and most bearish targets in coverage
● mean and median, two different ways of finding the center
● standard_deviation, how tightly the targets cluster
● total, the number of analyst estimates behind the consensus
● most_recent_date, when the newest target in the set was issued
● raised and lowered, counts of upward and downward revisions
Intrinio's Price Targets feed carries consensus targets with high, low and mean values, analyst count, historical targets, and upside or downside percentages. Consensus data is reached through the /zacks/target_price_consensuses endpoint, filterable by company identifier and by Zacks industry group, with pagination for sweeps across a universe.
One scoping note. Price targets are a separate feed from analyst recommendations. The estimate feeds are selected and priced individually rather than bundled, so if your product needs targets and ratings and earnings estimates, that is three deliberate choices.
Four numbers describe the same set of targets, and using only one of them is where most applications go wrong.
Mean is the average and it is sensitive to outliers. One analyst with a target at triple the current price drags the mean up meaningfully, especially when coverage is thin.
Median is the middle value and it is robust to exactly that. When mean and median are close, coverage agrees on a center. When they diverge, one or two analysts are pulling the average somewhere the typical analyst has not gone.
That gap is itself information. A mean well above the median tells you the bullish case is concentrated in a small number of outliers rather than broadly held. For a consumer-facing display, the median is usually the more honest single number. For analysis, carry both and treat the spread between them as a skew indicator.
High and low bound the range of opinion. They are useful for showing a target band on a chart, and the low is what you need for any downside framing.
Total is the field people forget, and it conditions everything else. A consensus built from three analysts is not comparable to one built from thirty. With a small total, the mean, the median, and the standard deviation are all unstable, and a single revision can move the consensus several percent. Always surface the analyst count next to the target. A screen that ranks by upside without filtering on total will fill its top results with thinly covered small caps.
Standard deviation measures agreement. Low dispersion means analysts are converging on a value. High dispersion means they genuinely disagree about what the company is worth.
Here is the part that saves real work: the consensus record already counts revisions for you. The raised and lowered fields give you the number of analysts who moved their target up and down, so you do not have to diff consecutive snapshots to detect that something changed.
That makes revision momentum a first-class query. Net revisions, raised minus lowered, is a cleaner directional signal than the target level itself. A stock whose consensus target sits flat at $180 while five analysts raised and one lowered is telling you something a static $180 never could.
Check staleness with most_recent_date. A consensus is only as current as its newest constituent. If the most recent target in the set is four months old, the consensus is a historical artifact, not a current view, and presenting it as today's Wall Street opinion misleads your users. Surface the date, or at minimum flag consensus sets that have gone quiet.
Build your own history by storing snapshots. Capture the consensus record with the date you retrieved it, and keep both that retrieval date and most_recent_date. This is the same point-in-time discipline that applies to ratings data: if you overwrite yesterday's consensus with today's, you lose the ability to ask what the market believed at any past moment, and any backtest you run afterward will quietly see information that did not exist yet.
One behavioral caveat worth building around. Analyst targets are sticky and they tend to lag price. Analysts frequently revise after a large move rather than ahead of it. This means a sudden jump in upside percentage usually reflects a price that fell, not a consensus that turned bullish. Treat a widening gap between price and target as a question, not a signal.
Upside is the gap between the consensus target and the current price:
upside % = (mean target − current price) ÷ current price
This requires joining the consensus to a price feed on a matching date. Be deliberate about which price you use and which target date you pair it with, because a stale target against a live price produces a number that is arithmetically correct and analytically meaningless.
Downside follows the same form using the low target, which frames the bear case in the analysts' own terms rather than yours.
Dispersion needs normalizing. Raw standard deviation is not comparable across securities, because a $4 spread means something very different on a $30 stock than on a $900 one. Divide it by the mean to get a coefficient of variation:
dispersion = standard_deviation ÷ mean
Now you can rank disagreement across a whole universe. The simpler alternative, (high − low) ÷ mean, gives you the full spread as a percentage and is easier to explain to a non-technical user.
High dispersion generally accompanies uncertainty: pre-catalyst names, turnarounds, companies with contested business models. That makes dispersion useful as a risk filter rather than only as a curiosity. A high-upside, high-dispersion name is a different proposition from a high-upside, tight-consensus name, and most screens fail to distinguish them.
Upside screening, done properly. Rank by upside, but filter on total for coverage depth and on most_recent_date for freshness first. Without those two filters you are mostly surfacing neglected stocks with stale targets.
Revision momentum screening. Rank by net revisions instead of by level. This is the more defensible signal of the two, because it captures analysts changing their minds rather than a gap that may simply reflect a price decline.
Valuation benchmarking. Use the consensus as an external reference point against your own work. If your discounted cash flow lands far outside the high-to-low band, that is a prompt to check your assumptions, not proof you have found something the street missed.
Accuracy backtesting. With a point-in-time history you can ask the genuinely interesting question: did targets from twelve months ago have any predictive value, and did that vary by sector, by coverage depth, or by dispersion? This is only answerable if you stored snapshots as you went.
Pair targets with ratings. A raised target alongside an upgrade is a coherent signal. A raised target with no rating change, or a target cut while the rating holds, is the kind of divergence worth flagging.
One commercial note: displaying third-party analyst targets to your own users is a licensing question as much as a technical one. Confirm your display and redistribution rights before you build the feature.
Intrinio's Price Targets feed provides consensus targets with high, low, mean and median values, standard deviation, analyst counts, revision counts, historical targets, and upside or downside percentages, reached through the /zacks/target_price_consensuses endpoint with filtering by company and by industry group.
This feed sits in the Estimates family and is available on the Enterprise plan, priced per feed, so you select the estimate types your product actually uses.
Request Enterprise Access to talk through coverage, history depth, and how target data fits alongside the ratings, estimates and pricing feeds you are already running.