Get started
Earnings

Earnings calendar API,
dates, EPS and surprises.

Upcoming and past earnings announcements for companies listed in the U.S. and, on Pro and above, Canada, the UK, France, the Netherlands and Australia: report date, before- or after-market timing, status, and EPS actual, estimate and surprise. Consensus estimates for EPS, revenue and EBITDA, with analyst counts and revisions, come from the same API.

Whole-market calendar

Omit symbols and pass from and to to list every announcement in a window, at 25 credits per request.

Status you can check

status is estimated, confirmed, reported or cancelled. An estimated date is a projection, not an announcement.

Surprise, computed

eps_surprise is actual minus estimate; eps_surprise_ratio divides it by the absolute estimate and is null when the estimate is zero.

Consensus detail

/v1/estimates adds mean, median, high and low, the number of analysts and up and down revision counts per fiscal period.

Earnings calendar fields

FieldMeaning
report_dateDate the results are or were released; null when the release date is unknown
report_atAlways null: the sources give the release date and session (timing), not the instant
timingbefore_market, during_market, after_market or unknown, relative to the primary listing's session
statusestimated, confirmed, reported or cancelled
period_endEnd of the fiscal period being reported, dated at its month end
fiscal_year, fiscal_quarterThe quarter's place in the company's fiscal year; the year is the calendar year the fiscal year ends in
eps_actual, eps_estimate, eps_surpriseMoney objects with amount and currency_code
eps_surprise_ratio(actual − estimate) / |estimate|; 0.074468 means a 7.4% beat
revenue_actualRevenue of the quarter from the company's income statement, once reported
revenue_estimateAnalyst consensus revenue for the quarter; the consensus history begins in 2017

Earnings belong to the issuer. company_id identifies the company and instruments lists the listings it applies to, with each symbol and stable instrument_id, so a calendar row joins directly to prices. fiscal_year and fiscal_quarter place the quarter on the company's fiscal calendar, taken from the fiscal year ends of its annual statements: Apple's quarter ending June 2026 is the third quarter of fiscal 2026, which ends in September. The year is the calendar year in which the fiscal year ends, so a company that names a year ending in January after the year it began in calls it one less. Both are null for an event known only from the earnings calendar and for quarters the annual statements do not place; period_end is the reliable period key. period_start is always null.

When report_date is null, the from and to filters and the ordering fall back to period_end, so an announcement with no known date still appears in the right place.

How earnings dates are set

Upcoming dates start as estimated, a projection from the company's reporting cycle. They become confirmed when the company announces the date and reported once results are out. Build user-facing calendars to show the difference: an estimated date can move by days. A date that cannot be supported is left null rather than guessed.

Whole-market earnings calendarcURL
# Every announcement in the week of October 12, 2026
curl 'https://api.ohlc.io/v1/earnings?from=2026-10-12&to=2026-10-16&limit=500' \
  -H "Authorization: Bearer $OHLC_API_KEY"

Consensus estimates and revisions

/v1/estimates returns the latest consensus snapshot for each company, metric and fiscal period: metric=eps, revenue or ebitda, with period=quarterly or annual. Each row has mean, median, high and low value objects, analyst_count, and revisions_up and revisions_down over revision_window_days. On October 3, 2026, Apple's quarterly EPS consensus for the period ending September 30 drew on 27 analysts, with 7 upward and 14 downward revisions over 30 days.

Use cases

  • Earnings calendars and reminders in a trading or portfolio app.
  • Post-earnings drift studies: join to daily bars and use timing to pick the session that reacted. After-market reports move the next session.
  • Surprise history per company for a beat-rate statistic.
  • Estimate revision tracking ahead of a report.

Point in time, history and plans

as_of keeps later changes out of an earlier answer, including a status that moved from estimated to reported. Knowledge history starts in late September 2026, when OHLC began recording these datasets. The announcements reach further back: on October 3, 2026, Apple's earnings history began with the period ending December 31, 1993.

Earnings are included on every plan, Free through Scale, at 25 credits per request. Consensus estimates are on Pro, Commercial and Scale, at 50 credits per symbol or 500 credits for a whole-market page. See pricing.

Apple's last and next earnings

RequestcURL
curl 'https://api.ohlc.io/v1/earnings?symbols=XNAS:AAPL&from=2026-07-01&to=2026-12-31' \
  -H "Authorization: Bearer $OHLC_API_KEY"
Response · Illustrative sampleJSON
{
  "data": [
    {
      "id": "record_a54c75c7b158e68611b4",
      "company_id": "01M35H2KDW9VT69S5ZCEGMCPAX",
      "instruments": [
        { "instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66", "symbol": "XNAS:AAPL", "name": "Apple Inc." }
      ],
      "period_start": null,
      "period_end": "2026-06-30",
      "fiscal_year": 2026,
      "fiscal_quarter": 3,
      "period": "quarterly",
      "report_date": "2026-07-30",
      "report_at": null,
      "timing": "after_market",
      "status": "reported",
      "eps_actual": { "amount": "2.02", "currency_code": "USD" },
      "eps_estimate": { "amount": "1.88", "currency_code": "USD" },
      "eps_surprise": { "amount": "0.14", "currency_code": "USD" },
      "eps_surprise_ratio": "0.074468",
      "revenue_actual": { "amount": "109417000000.00", "currency_code": "USD" },
      "revenue_estimate": { "amount": "108959817930.00", "currency_code": "USD" }
    },
    {
      "id": "record_ae13a8a4cc24cffb67f4",
      "company_id": "01M35H2KDW9VT69S5ZCEGMCPAX",
      "instruments": [
        { "instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66", "symbol": "XNAS:AAPL", "name": "Apple Inc." }
      ],
      "period_start": null,
      "period_end": "2026-09-30",
      "fiscal_year": 2026,
      "fiscal_quarter": 4,
      "period": "quarterly",
      "report_date": "2026-10-29",
      "report_at": null,
      "timing": "after_market",
      "status": "estimated",
      "eps_actual": null,
      "eps_estimate": { "amount": "1.98", "currency_code": "USD" },
      "eps_surprise": null,
      "eps_surprise_ratio": null,
      "revenue_actual": null,
      "revenue_estimate": { "amount": "113624521680.00", "currency_code": "USD" }
    }
  ],
  "meta": {
    "timezone": "UTC",
    "as_of": "2026-10-03T15:04:28Z",
    "next_cursor": null,
    "coverage": { "status": "partial", "reason": "Coverage is partial for the entitled query scope." }
  }
}

Prices delayed 15 minutes · Illustrative sample data

Questions, answered.

Is there a free earnings calendar API?

Yes, for seven tickers. The Free plan includes earnings for AAPL, NVDA, JNJ, PEP, MSFT, SPY and QQQ. A whole-market calendar needs Developer ($49/month) or above, because a query without symbols returns your plan's universe.

What do before_market and after_market mean?

They place the release relative to the regular session of the company's primary listing. An after-market release is priced in by the next session's open.

How is the EPS surprise calculated?

eps_surprise is actual EPS minus the consensus estimate. eps_surprise_ratio divides that by the absolute estimate, and is null when the estimate is zero.

Why is eps_estimate null for some companies?

No consensus estimate was available for that period. Smaller companies often have little or no analyst coverage.

Does the earnings API include revenue surprises?

revenue_actual is the quarter's reported revenue and revenue_estimate the analyst consensus, whose history begins in 2017; earlier quarters carry revenue without an estimate. Revenue consensus is also available from /v1/estimates with metric=revenue.

A little JSON.
A lot of possibility.

Explore the API