Skip to main content
Press ⌘K to search

Analyst estimates

Company, product and segment analyst consensus forecasts for one stock, published by the company or compiled from analyst estimates.

Analyst estimates

GET /v1/stocks/{ticker}/analyst-estimates

Reads stored, verified analyst consensus. provider says which kind of source answered: IssuerPublished is a consensus the company publishes on its investor-relations website or an explicitly linked publication, and Aggregated is a compiled consensus, used for a US-listed company when no verified company-published consensus is available. Coverage varies by issuer. Management guidance and historical actuals are excluded. An empty result does not mean analysts have no estimates.

Each data row preserves the source metric, forecast period, product or segment dimensions, statistic, analyst, value, unit, accounting basis, publicationLabel and footnotes. Source URLs and verification evidence are retained internally. Values are strings in their original units and precision; workbook values retain their cached cell values and format context. Mean and median remain distinct. No missing value is converted to zero.

Parameters: {ticker} (path, stock symbol); optional metric, period and dimensions (exact source-label filters, up to 512, 256 and 1024 characters); optional snapshotId (a verified snapshot ID returned in snapshots); optional asOf (ISO-8601 cutoff; the snapshot must have been verified by that instant); limit (observation count, default 100, allowed 1–100); offset (zero-based observation offset, default 0, allowed 0–100000); snapshotOffset (independent snapshot-history offset, default 0, allowed 0–100000; pages contain up to 10 snapshots). A value outside those ranges returns 400 rather than being clamped.

The response carries ticker, companyName, status, provider, coverageNote, stale, newerSnapshotPending, snapshotId, capturedAt, verifiedAt, lastCheckedAt, publicationLabel, snapshots, data, snapshotsMeta and meta. Each snapshots entry has id, capturedAt and publicationLabel.

meta and snapshotsMeta independently report counted totals and continuation flags. Advance each offset by the returned count until its hasMore is false. Keep snapshotId fixed while paging observations so a newly published capture cannot change the dataset mid-read.

status, coverageNote, stale, newerSnapshotPending, capturedAt, verifiedAt and lastCheckedAt describe coverage and processing. stale means source refresh is overdue; it does not certify that a source's forecasts are recent. Source publication labels remain separate from capture dates. Archived forecasts retain their original publication labels. Failed or partial new extractions do not replace the last verified snapshot.

Requests use the shared API/MCP daily quota. Reads never start a scrape.

curl "https://api.equibles.com/v1/stocks/NVDA/analyst-estimates?limit=3" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/analyst-estimates",
    params={"limit": 3},
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/analyst-estimates?limit=3", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());

Response (snapshots trimmed to two of the nine returned; limit=3 returns the first three of 64 observations):

{
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "status": "Available",
  "provider": "Aggregated",
  "coverageNote": "These figures are a compiled consensus of analyst forecasts, not a survey the company published itself. Every figure is the statistic the source states; averages are means, never medians.",
  "stale": false,
  "newerSnapshotPending": false,
  "snapshotId": "ac18b37c-68ed-457c-8ef7-c4392b6c9f2d",
  "capturedAt": "2026-10-13T11:18:22.310336Z",
  "verifiedAt": "2026-10-13T11:18:22.310336Z",
  "lastCheckedAt": "2026-10-13T11:18:22.311Z",
  "publicationLabel": null,
  "snapshots": [
    {
      "id": "ac18b37c-68ed-457c-8ef7-c4392b6c9f2d",
      "capturedAt": "2026-10-13T11:18:22.310336Z",
      "publicationLabel": null
    },
    {
      "id": "3c023113-8246-4ac8-a784-d83cc377bb19",
      "capturedAt": "2026-10-08T04:43:35.807957Z",
      "publicationLabel": null
    }
  ],
  "data": [
    {
      "publicationLabel": null,
      "metric": "Revenue",
      "period": "Q ending 2026-10-31",
      "dimensions": null,
      "unit": "USD",
      "basis": null,
      "statistic": "Average",
      "analyst": null,
      "value": "108976837760",
      "footnotes": null
    },
    {
      "publicationLabel": null,
      "metric": "Revenue",
      "period": "Q ending 2026-10-31",
      "dimensions": null,
      "unit": "USD",
      "basis": null,
      "statistic": "Low",
      "analyst": null,
      "value": "104937000000",
      "footnotes": null
    },
    {
      "publicationLabel": null,
      "metric": "Revenue",
      "period": "Q ending 2026-10-31",
      "dimensions": null,
      "unit": "USD",
      "basis": null,
      "statistic": "High",
      "analyst": null,
      "value": "116251000000",
      "footnotes": null
    }
  ],
  "snapshotsMeta": {
    "limit": 10,
    "offset": 0,
    "count": 9,
    "hasMore": false,
    "total": 9
  },
  "meta": {
    "limit": 3,
    "offset": 0,
    "count": 3,
    "hasMore": true,
    "total": 64
  }
}

Try it with a real key

Every example on this page runs against the live API. A free account includes an API key and MCP access — set up in under a minute.