๐ฏ Analyst Price Targets โ Consensus, Upgrades, Downgrades
Pricing
from $100.00 / 1,000 analyst target records
๐ฏ Analyst Price Targets โ Consensus, Upgrades, Downgrades
Track sell-side analyst price targets, consensus ratings, recent upgrades/downgrades across US-listed stocks. Bloomberg-style ratings distribution with upside/downside vs current price. Pay-per-result for portfolio managers, retail smart-money followers, IR teams tracking street sentiment.
Pricing
from $100.00 / 1,000 analyst target records
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Analyst Price Targets โ Consensus, Upgrades & Downgrades
Track sell-side analyst price targets, consensus ratings, recent upgrades and downgrades across every US-listed stock. One pay-per-result API call returns the Bloomberg-style consensus snapshot you need to run a portfolio: mean / high / low / median price target, the analyst-count behind it, the buy / hold / sell distribution, and the firm-by-firm trail of recent rating actions from the past 90 days.
๐ Sample Output
Built for portfolio managers running long/short books, retail "smart money" followers who track street consensus, and IR teams that need to know what the sell-side is actually saying about their tape before earnings, conferences, or roadshows.
What you get per record
Every record is one US-listed ticker, normalized into a clean, ready-to-merge schema. Hit it with one symbol or fan it across the S&P 500.
| Field | Description |
|---|---|
symbol | Ticker (uppercase). |
company_name | Yahoo Finance long name. |
sector / industry | GICS-style sector + finer industry classification. |
current_price | Latest regular-session price (USD). |
consensus_target_price | Mean of all contributing sell-side 12-month price targets. |
target_median | Median of contributing targets โ outlier-resistant alternative to mean. |
target_high / target_low | High and low of the contributing target range. Useful for sizing dispersion. |
n_analysts | Number of analysts contributing to the consensus mean. |
upside_pct | (consensus_target - current_price) / current_price * 100. Positive = upside. |
recommendation_mean | Yahoo's 1.0โ5.0 sell-side mean (1.0 = Strong Buy, 5.0 = Sell). |
consensus_rating | Bucketed rating: Strong Buy / Buy / Hold / Sell / Strong Sell. |
rating_strong_buy_count | Count of Strong Buy ratings (current month). |
rating_buy_count | Strong Buy + Buy ratings combined. |
rating_hold_count | Count of Hold ratings. |
rating_sell_count | Sell + Strong Sell ratings combined. |
rating_strong_sell_count | Count of Strong Sell ratings. |
total_rated_analysts | Sum of all five rating buckets. |
recent_actions | Up to 20 firm-level actions from the last 90 days, formatted as plain-English lines ("Morgan Stanley upgraded to Overweight from Equal-Weight, target raised to $250.00 (was $230.00) on 2026-05-08"). |
n_recent_actions_90d | Count of analyst actions in the trailing 90 days. |
last_action_date | Most recent rating or target change date (ISO yyyy-mm-dd). |
market_cap_usd | Latest market capitalization (USD). |
yahoo_url | Convenience deep-link to Yahoo's analyst page. |
stockanalysis_url | Convenience deep-link to Stockanalysis.com's forecast page. |
data_source | Provenance: yahoo_finance_quote_summary. |
fetched_at_utc | ISO timestamp of the fetch. |
Why this actor exists
Sell-side price targets and consensus ratings are the most-quoted, least-accessible number in equities. Bloomberg, FactSet, and Refinitiv ship clean consensus feeds โ at $24K, $18K, and $24K per terminal per year respectively. TipRanks and Zacks ship retail-grade views with anti-bot defenses and watered-down API access. For everyone in between โ a fund manager spinning up a quant overlay, a retail aggregator running street-consensus screens, an IR team running a quarterly tape-check โ there is no clean, pay-per-call option.
This actor fixes that:
- Pay only for what you use. $0.10 per symbol record. A 500-name S&P 500 sweep costs $50.01 and returns in under a minute. Compare that to a Bloomberg seat.
- Bloomberg-style schema. Mean / high / low / median target, ratings distribution, recent firm actions โ the exact fields a PM wants on their morning sheet.
- No anti-bot wrestling. We handle Yahoo Finance's crumb/cookie dance for you, refresh tokens transparently on 401s, and ship clean JSON.
- Pinned builds.
?build=0.0.1keeps your prod integrations stable; we never silently swap parsing logic underneath you.
Comparison vs incumbents
| Capability | Bloomberg | FactSet | Refinitiv | TipRanks | Zacks | Analyst Price Targets |
|---|---|---|---|---|---|---|
| Annual minimum cost | $24,000+ | $18,000+ | $24,000+ | $1,000+ | $250+ | $0 (pay-per-call) |
| Per-symbol marginal cost | n/a | n/a | n/a | n/a | n/a | $0.10 |
| Consensus mean target | Yes | Yes | Yes | Yes | Yes | Yes |
| Target high / low / median | Yes | Yes | Yes | Partial | Partial | Yes |
| Ratings distribution (SB/B/H/S/SS) | Yes | Yes | Yes | Yes | Partial | Yes |
| Firm-by-firm recent actions | Yes | Yes | Yes | Yes | Partial | Yes (last 90d) |
| 1.0โ5.0 numeric consensus | Yes | Yes | Yes | No | Partial | Yes |
| Programmatic API access | Yes (enterprise) | Yes (enterprise) | Yes (enterprise) | Limited | Limited | Yes (HTTP) |
| No-contract, no-seat licensing | No | No | No | No | No | Yes |
| Cross-language clients | Yes | Yes | Yes | Limited | No | Yes (Apify SDKs) |
| Build-pinned stability | Yes | Yes | Yes | No | No | Yes (?build=) |
| Time to first record | Weeks (procurement) | Weeks | Weeks | Days | Days | Minutes |
How to call it
Apify Console (browser UI)
Open the actor, paste symbols into the Stock symbols field, hit Start. Dataset appears in a table view in seconds.
Apify API (curl)
curl -X POST \"https://api.apify.com/v2/acts/nexgendata~analyst-price-targets/runs?token=YOUR_TOKEN&build=0.0.1" \-H "Content-Type: application/json" \-d '{"symbols": ["AAPL", "NVDA", "TSLA", "MSFT", "AMZN"],"include_recent_actions": true,"min_n_analysts": 5}'
The ?build=0.0.1 pin is recommended for production integrations. Without it you ride latest, which can change without notice.
Apify Python SDK
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("nexgendata/analyst-price-targets").call(run_input={"symbols": ["AAPL", "NVDA", "TSLA", "MSFT", "AMZN"],"min_upside_pct": 20, # only names with 20%+ upside"consensus_rating": "Buy", # only Buy-rated names"include_recent_actions": True,},build="0.0.1",)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["symbol"], item["consensus_target_price"], item["upside_pct"])
Apify JS SDK
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('nexgendata/analyst-price-targets').call({symbols: ['AAPL', 'NVDA', 'TSLA', 'MSFT', 'AMZN'],min_upside_pct: 20,include_recent_actions: true,}, { build: '0.0.1' });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
symbols | array | ["AAPL","NVDA","TSLA","MSFT","AMZN"] | US-listed tickers to fetch. Case-insensitive. Required. |
limit | int | 0 (all) | Max records to return after filters. 0 returns everything. |
min_upside_pct | number | -1000 (off) | Minimum upside vs current price. 20 for high-conviction longs. |
consensus_rating | enum | "all" | Filter to one rating bucket: Strong Buy, Buy, Hold, Sell, Strong Sell. |
include_recent_actions | bool | true | Populate recent_actions with last-90-day firm actions. |
min_n_analysts | int | 0 (off) | Drop names with fewer than N contributing analysts. Use 15 for widely-covered names only. |
Common workflows
Morning sheet โ high-upside Buy-rated names
{"symbols": ["AAPL","MSFT","NVDA","GOOGL","META","AMZN","TSLA","AVGO","ORCL","CRM"],"min_upside_pct": 15,"consensus_rating": "Buy","min_n_analysts": 10}
Filters to widely-covered names with at least 15% implied upside and a sell-side Buy consensus. Drop the result into your morning meeting deck.
Short candidate screen โ Sell-rated names with downside
{"symbols": ["...your watchlist..."],"min_upside_pct": -1000,"consensus_rating": "Sell"}
Pair with nexgendata/short-interest-tracker to find names where the street and the borrow desk both flag downside.
IR street-check โ what is being said about us
{"symbols": ["TICKR"],"include_recent_actions": true}
One call before earnings to summarize every analyst action in the last 90 days โ target moves, rating changes, initiations, dropped coverage. Drop straight into the prep memo.
Smart-money following โ newly upgraded names
Run with include_recent_actions: true, then filter results client-side for n_recent_actions_90d > 3 and parse recent_actions for the string "upgraded". Daily delta detection for newsletter writers.
Data sources & methodology
Primary source is Yahoo Finance's official quoteSummary endpoint, the same endpoint that powers finance.yahoo.com/quote/{SYMBOL}/analysis. We request six modules in a single call: financialData, recommendationTrend, upgradeDowngradeHistory, price, summaryDetail, and assetProfile. Yahoo's own consensus aggregation is itself sourced from sell-side feeds (Thomson Reuters / Refinitiv), so the targets and ratings here trace back to the same primary research desks that populate Bloomberg's consensus screen โ just routed through Yahoo's free consumer endpoint.
Yahoo's crumb/cookie authentication is handled transparently. We boot consent cookies from fc.yahoo.com, exchange them for a crumb at query2.finance.yahoo.com/v1/test/getcrumb, and reuse the crumb across the run. Crumb expiry mid-run is detected and refreshed on the fly.
Concurrency is capped at 5 in-flight requests to stay below Yahoo's per-IP soft limit. A 500-symbol sweep typically completes in 50โ90 seconds.
Pricing
| Event | Charge |
|---|---|
| Actor start | $0.01 |
| Per analyst-target record | $0.10 |
A 5-symbol smoke run costs $0.51. A full S&P 500 sweep costs $50.01. A Russell 1000 sweep costs $100.01.
There is no monthly minimum, no seat license, and no contract โ you pay the Apify platform fee plus the per-event charges only on runs you actually execute. The 20% Apify margin is included in the prices above; we do not mark up beyond that.
Sister actors in the NexGenData fleet
Layer this actor with the rest of the fleet for a full equity-research stack:
nexgendata/finviz-stock-screenerโ Finviz's full screener universe with 70+ filters. Feed its symbol list into this actor to bulk-pull consensus targets for any screen.nexgendata/earnings-calendarโ Upcoming earnings releases with EPS estimates, fiscal period, prior-period surprises. Run this actor against the upcoming-reporters list to find names where street sentiment has shifted into the print.nexgendata/short-interest-trackerโ Bi-monthly short-interest reports, days-to-cover, % of float short. Cross-reference Sell-rated names here with high short-interest tickers there to find consensus-confirmed shorts.nexgendata/sec-form4-insider-trackerโ Real-time insider buys and sells from SEC Form 4 filings. Stack with this actor to find names where the street and management agree on direction.nexgendata/etf-holdings-trackerโ Daily ETF basket exposure. Useful for tracking which thematic ETFs hold the analyst-favorite names you surface here.nexgendata/finance-mcp-serverโ Anthropic MCP server bundling the entire NexGenData equity stack into one tool surface for Claude / GPT / agentic workflows. Drop it in and let the model pull consensus targets, screens, earnings, short interest, insider activity, and ETF holdings on demand.
FAQ
Why Yahoo Finance and not Stockanalysis.com / TipRanks / MarketBeat?
We tested all five. Stockanalysis.com forecast pages SSR through Svelte and hydrate from a private API that returns 404 to non-browser callers. TipRanks blocks anonymous JSON. MarketBeat returns HTML with anti-bot challenges. Zacks is rate-limited and protected by Cloudflare. Yahoo's quoteSummary endpoint is the cleanest, most-reliable surface and is itself sourced from Refinitiv's institutional feed โ so we get Bloomberg-quality consensus for free.
How fresh is the consensus? Yahoo's financialData snapshot refreshes intra-day. Recommendation trend buckets refresh monthly. Upgrade/downgrade history rows appear within hours of the underlying note. For event-driven workflows we recommend rerunning the actor at the close each trading day.
Can I scan the whole Russell 1000?
Yes. Pass 1000 symbols, set min_n_analysts: 5 to drop thinly-covered names, and the run completes in ~3 minutes for $100.01. We've stress-tested up to 2000 symbols per run without hitting Yahoo's edge limits.
What if a symbol is an ADR / OTC / dual-listing? ADRs and major OTC names work. Pure foreign listings (e.g. ASML on AEX without an ADR) return null targets โ Yahoo's analyst feed only covers the US-listed share class.
Does it handle option-implied targets or buy-side targets? No. The output is pure sell-side. For option-implied moves see our forthcoming options-vol actor.
Build pinning?
Pin with ?build=0.0.1. The build number (string), not the build id. Build numbers are stable; build ids rotate on every push. We bump 0.0.x for additive changes and 0.x.0 for any breaking schema change.
Support & licensing
Private actor on the NexGenData Apify fleet. Access by request โ contact via the Apify console or the affiliate signup below. Bulk-rate licensing, white-label deployments, and dedicated-instance options available on request.
Sign up via the NexGenData affiliate link โ supports the fleet at no cost to you, gives you instant access to every NexGenData actor (10+ and growing) including this one, plus first-look at upcoming releases (consensus-EPS-revisions actor, options-vol actor, transcripts-sentiment actor). Affiliate signups stay on a flat 20% rev-share for the lifetime of the account.
Built and maintained by NexGenData. We focus on the equity-research stack the institutional vendors charge $20K+ for โ and ship it pay-per-call.
