Earnings dates

Exactly how an earnings date reaches this calendar: two collection channels, one curated file, and a source stamp on every row.

Short version: an API (Yahoo Finance's earnings calendar, polled daily) plus human-tracked company IR announcements, merged into one schedule file we own. The website reads that file — it does not call Yahoo when a visitor opens a page.

Channel 1 — Yahoo Finance earnings calendar (API)

Our research pipeline polls Yahoo Finance's earnings-calendar API daily for each tracked company, using the open-source yfinance library — a structured JSON request/response, not HTML scraping. It returns the company's expected next report date, which is how a date can appear weeks before the company has said anything official.

Yahoo-derived dates enter the file as projections. A typical row carries its provenance right in the source field:

ticker: NVDA   market_date: 2026-11-18   session: AMC
source_note: "yfinance 2026-10-04 (initial projection)"

The stamp after the source is the as-of date — the day the pipeline last verified the date against Yahoo. If Yahoo revises, the next daily poll updates the row and the stamp moves.

Channel 2 — company IR announcements (human-tracked)

When a company officially announces its reporting date in a press release or on its investor-relations page, the row is updated by hand and the source field switches to the IR citation:

ticker: CRM   market_date: 2026-12-03   session: AMC   call_et: 16:30
source_note: "IR announcement 2026-08-03"

IR is the source of truth: whenever an IR date and a Yahoo date disagree, the IR announcement wins and the (est.) label comes off. This is the only manual step in the earnings pipeline — the site itself reads the merged result.

What the website consumes

Once a day, the site's rebuild ingests the curated schedule file and regenerates every earnings event, stock page and Q&A page. There is no third-party call at page-view time — what you see was verified during that day's rebuild, and each event page shows the source and as-of stamp from the row it was built from.

Timing: BMO / AMC

When the company states its call slot, we use it: BMO (before market open) or AMC (after close), with the exact call time where published (call_et). Where no call time exists, standard conventions fill in — 09:00 ET for BMO, 16:30 ET for AMC — and those are the times shown on the event page.

The (est.) label

Rows still sourced only from Yahoo (status: projected) render with the (est.) pill; rows confirmed by an IR announcement render without it. Expect a company to confirm 3–6 weeks ahead — until then, an (est.) date is a planning window, not a promise, and you should confirm with the IR page before trading the event.