Skip to main content
Analyst Consensus is the street’s numbers for one company. It answers two questions in one place: what analysts expect next, and how the company has done against what they expected before. One call gives the next report’s EPS and revenue estimate, the recent record of actual against estimate with the surprise, the forward annual and quarterly consensus, the price-target consensus and the rating consensus. MCP tool: get_consensus — see Connect via MCP.
Plan: Free and above · Credits: 1 per call

What you can use analyst consensus for

Read the bar a company reports against before its next print. Build a beat-and-miss history from each report’s actual and estimate. See where the price-target range sits and how ratings are split. Watch how the consensus moves day by day from 2026-10-08 with as_of.

The five views

Pick a view with view. summary is the default. summary is a single page, so cursor is refused there. The other four views page with cursor. estimates defaults to the last year of fiscal periods and everything ahead. Pass date_gte for older periods. The surprise is (actual − estimate) / |estimate| × 100, in percent. It is null when either side is missing or the estimate is zero.

One listing by default

A company is often known by several symbols: its home listing, a US ADR, Frankfurt and OTC lines. Each listing carries its numbers in its own units. TSMC’s EPS is about 28 on 2330.TW (TWD per share), about 4.4 on TSM (USD per ADR) and about 0.88 on TSMWF. So the endpoint returns one listing by default: the company’s primary listing. For a foreign issuer with a US ADR, that is the ADR (TM, TSM). symbols names the listing you got, and other_listings names the rest, each with its count of reports and rows.
  • Pass symbol for one named listing, such as 7203.T rather than TM. A symbol that is not a listing of this company returns 400.
  • Pass symbol=all for every listing at once.
Never compare raw numbers across symbols. An EPS of 28 and an EPS of 4.4 can be the same quarter. Surprise percentages carry no unit and agree across listings, so compare those instead.

Point in time with as_of

Pass as_of to get every value as it stood at the end of that day. The consensus has been saved daily since 2026-10-08. An as_of before that day returns 400, because consensus from before then was never stored and cannot be rebuilt. A future date is also refused. To see what was expected before an older report, use view=earnings. Each report carries the estimate that was recorded against it in eps_estimate and revenue_estimate.

Reports with more than one version

A report can carry other_versions. This happens when the source holds more than one row for the same report date, for example a restated revenue or a later update. The main row is the most recently updated one. The others are kept in other_versions, with the same fields, rather than dropped.

Coverage is uneven by market

  • EPS actual and estimate: about 17,000 listings across the US, Europe and Asia.
  • Forward estimates: about 21,000 listings.
  • Price targets: about 4,000 listings. Ratings: about 6,000 listings. Almost all are US and European.
Japanese, Korean, Taiwanese and Chinese names usually have estimates and a surprise record but no price targets or ratings. Per-report history goes back decades for large US companies and to about 2014 for many Asian ones.
An empty block means the listing is not covered. It never means no analyst follows the company.
The monthly rating counts and the rating consensus are counted differently and do not add up to each other. Read each one on its own.

How this differs from other expectation datasets

This dataset is analyst expectation. Other pages answer different questions:

Key analyst consensus fields

  • view, as_of, symbols and other_listings appear on every response.
  • summary returns listings, one entry per listing, each with n_reports, next_report, recent_reports, estimates.annual, estimates.quarter, price_target and ratings.
  • A report row has report_date, eps_actual, eps_estimate, eps_surprise_pct, revenue_actual, revenue_estimate, revenue_surprise_pct, source_updated_on, other_versions and first_seen_on.
  • An estimate row has period (annual or quarter), fiscal_period_end, avg / high / low bands for eps, revenue, ebitda, ebit, net_income and sga_expense, plus num_analysts_eps and num_analysts_revenue.
  • view=price_targets returns listings[].consensus and, in data, each target change: date, published_at, firm, analyst, price_target, adj_price_target and price_when_posted.
  • view=ratings returns listings[].consensus, listings[].monthly and, in data, each action: date, firm, previous_grade, new_grade and action.
  • first_seen_on is the first day FocusAlpha saw that row.

GET /v1/companies/{company}/consensus

string
required
A company_id, ticker, CIK, ISIN or local symbol (2330.TW, 7203.T, 005930.KS). Not a company name.
string
default:"summary"
summary, earnings, estimates, price_targets or ratings.
string
view=estimates only: annual or quarter. Omit for both.
string
One listing of the company, such as 7203.T, or all for every listing. Default is the primary listing.
string
Values as they stood at the end of this day, YYYY-MM-DD. From 2026-10-08.
string
Earliest report date, fiscal period end or action date, YYYY-MM-DD. date_lte sets the ceiling.
integer
Rows per page for the list views, between 1 and 500. Defaults: 40 for earnings, 200 for estimates, 50 for price_targets and ratings actions. Page through with cursor, passing back next_cursor unchanged.
If the data source cannot be read, the endpoint returns 503 rather than an empty result. See also Management Guidance and Guidance Changes for the company’s own outlook, Reported Earnings Figures for what the release printed, and Earnings Consensus from Prediction Markets for a bar that does not drift.