Get earnings calendar events
GET/v1/earnings

Get earnings calendar events

Returns scheduled earnings announcement dates and estimates. Default window is 30 days starting from current date in America/New_York (ET); maximum date range is 90 days. Default limit is 1000; when your plan's max_rows is below the default (or requested limit exceeds max_rows), limit is clamped and X-Limit-Clamped is set to true. X-Limit-Clamped is also set when the date range exceeds your plan's history window.

Endpoint Usage & Plan Rules

Plan Access
Included in Basic
Active subscription
Rate Limit
One request per call; no daily quota
Result Clamping
Clamped by Plan
Clamped to plan max_rows

Parameters

Optional Parameters

NameTypeLocationDescription
fromstringqueryWindow start date in YYYY-MM-DD format. Clamped to account history_days. from > to returns 400 invalid_range.
tostringqueryWindow end date in YYYY-MM-DD format. Range cannot exceed 90 days (400 invalid_range).
symbolstringqueryFilter by equity ticker symbol. Invalid symbol returns 400 invalid_parameter.
cursorstringqueryOpaque pagination cursor to fetch the next page of results.
limitintegerqueryMaximum events to return (1-1000, default 250). Clamped to plan max_rows.

Request Examples

curl -s -H "Authorization: Bearer $WSO_API_KEY" \
  "https://api.wheelstrategyoptions.com/v1/earnings?symbol=DAL"

Try it

GET/v1/earnings
Included in Basic

Requests run against the live API with your key and count against its rate limits. The key is sent only to this site. Sign in to get a key

Add your API key to send.
Response

Send a request to see the live response, its status, timing, and rate-limit headers.

Response Attributes (200 OK)

FieldTypeNullableDescription
fromstringNoWindow start date in YYYY-MM-DD format.
tostringNoWindow end date in YYYY-MM-DD format.
truncatedbooleanNoIndicates whether returned results hit the query limit.
nextCursorstringYesOpaque cursor to fetch the next page of results, or null when all results have been returned.
resultsobject[]NoList of earnings announcement events.

Response Example

json
{
  "from": "2026-10-09",
  "to": "2026-11-08",
  "truncated": false,
  "nextCursor": null,
  "results": [
    {
      "symbol": "DAL",
      "name": "Delta Air Lines, Inc.",
      "earningsDate": "2026-10-09",
      "timing": "bmo",
      "fiscalQuarter": null,
      "epsEstimated": 1.93,
      "revenueEstimated": null
    },
    {
      "symbol": "HIFS",
      "name": "Hingham Institution for Savings",
      "earningsDate": "2026-10-09",
      "timing": "amc",
      "fiscalQuarter": null,
      "epsEstimated": null,
      "revenueEstimated": null
    },
    {
      "symbol": "HOVR",
      "name": "New Horizon Aircraft Ltd.",
      "earningsDate": "2026-10-09",
      "timing": "bmo",
      "fiscalQuarter": null,
      "epsEstimated": -0.08,
      "revenueEstimated": null
    }
  ]
}

Error Responses

StatusDescription
400Bad Request. The request body, query parameters, or path values violated validation constraints.
401Unauthorized. Missing, malformed, or invalid API key credential.
403Forbidden. Rejection reasons: `subscription_required` (no subscription record), `subscription_inactive` (subscription not active), `trial_ended` (trial has expired), `wrong_credential_type`, `origin_forbidden` (origin authentication failed).
404Not Found. Requested resource, ticker symbol, or option contract does not exist.
405Method Not Allowed. Returned with an `Allow` header when an unsupported HTTP method is used. Error code: `method_not_allowed`. (HEAD is served on all GET routes and counts against the rate limit like GET.)
429Too Many Requests. Rejection reasons: `rate_limited` (per-minute limit), `too_many_concurrent_requests` (in-flight cap), `too_many_auth_failures`.
500Internal Server Error. Unhandled internal server or database error.
503Service Unavailable. Backing database, cache, or external provider connection unavailable.
Screen option contracts with multi-factor filtersGet dividend ex-date calendar