Browse all documentation

Company calendars API reference

Dividend and stock split calendars for a window of days

Overview

Company dividends and stock splits for a window of days, across every listed company we cover. Every request needs a Bearer key, and REST and MCP share one account quota.

Dates run from 30 days back to 90 days ahead, and one request spans at most 7 days. Leave start out for today in UTC, and leave end out for the same day as start. Outside that range the answer is 400 invalid_query, and a longer span is 400 range_too_large.

Only USA is covered for now. Another country returns 404 not_covered. Only companies in our symbol list appear, with our id and name, and the lines of one issuer are one row.

Base URL: https://api.narwhalapi.com. The MCP tool is company_calendars, with one action for each route below.

Plans and limits

WhatFreeBasicPro
Dividends and splits calendarsIncludedIncludedIncluded

See pricing for plan prices and monthly request limits. Each request counts as one call unless a route says otherwise.

  • Each request is one call, whatever the number of rows.
  • A company without an active listing in our symbol list is left out.
  • A split ratio is new shares for old: 4:1 gives four for one, and 1:10 is a reverse split.

Endpoints

Every route is a GET and needs your key in the Authorization: Bearer header. The examples show the shape of an answer, not live data.

Company dividends calendar

GET /v1/calendars/dividends

Dividends going ex in the window: the ex-date, the amount per share and its currency. start and end are inclusive days (YYYY-MM-DD); left out, start is today (UTC) and end is start. Dates run from 30 days back to 90 days ahead (400 invalid_query outside), and a request spans at most 7 days (400 range_too_large). country is USA, the only country for now (404 not_covered). Only companies in our symbol list appear, with our id and name; units and share classes of one issuer are one row. Open to every plan and one call a request.

MCP: tool company_calendars, action dividends.

Parameters

ParameterWhereRequiredTypeMeaning
startqueryNodateFirst day (YYYY-MM-DD), inclusive. Left out means today (UTC). Between 30 days back and 90 days ahead.
endqueryNodateLast day, inclusive. Left out means start. At most 7 days from start (400 range_too_large).
countryqueryNostringThree-letter country code of the listing. Left out means USA, the only country for now (another one is 404 not_covered).

Response fields

FieldTypeSentMeaning
entrieslist of objectAlwaysBy ex-date, then id.
entries[].ex_datedateAlwaysFirst day the share trades without the dividend.
entries[].idstringAlwaysOur listing id, for example XNAS:MSFT.
entries[].symbolstringAlwaysThe listing's ticker.
entries[].namestringAlwaysThe company's name.
entries[].amountstringAlwaysDividend per share, in currency.
entries[].currencystringAlwaysCurrency of amount.
next_cursorstringAlwaysAlways null: a request of at most 7 days is one page.
Request
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/calendars/dividends?start=2026-10-26&end=2026-11-01"
Example response with illustrative values
{
  "entries": [
    {
      "ex_date": "2026-10-29",
      "id": "XNYS:KO",
      "symbol": "KO",
      "name": "The Coca-Cola Company",
      "amount": "0.51",
      "currency": "USD"
    }
  ],
  "next_cursor": null
}

Company splits calendar

GET /v1/calendars/splits

Stock splits taking effect in the window, with the ratio as new shares for old (4:1 gives four for one; 1:10 is a reverse split). start and end are inclusive days (YYYY-MM-DD); left out, start is today (UTC) and end is start. Dates run from 30 days back to 90 days ahead (400 invalid_query outside), and a request spans at most 7 days (400 range_too_large). country is USA, the only country for now (404 not_covered). Only companies in our symbol list appear, with our id and name; units and share classes of one issuer are one row. Open to every plan and one call a request.

MCP: tool company_calendars, action splits.

Parameters

ParameterWhereRequiredTypeMeaning
startqueryNodateFirst day (YYYY-MM-DD), inclusive. Left out means today (UTC). Between 30 days back and 90 days ahead.
endqueryNodateLast day, inclusive. Left out means start. At most 7 days from start (400 range_too_large).
countryqueryNostringThree-letter country code of the listing. Left out means USA, the only country for now (another one is 404 not_covered).

Response fields

FieldTypeSentMeaning
entrieslist of objectAlwaysBy date, then id.
entries[].datedateAlwaysFirst day the shares trade split-adjusted.
entries[].idstringAlwaysOur listing id, for example XNAS:MSFT.
entries[].symbolstringAlwaysThe listing's ticker.
entries[].namestringAlwaysThe company's name.
entries[].ratiostringAlwaysNew shares for old: 4:1 gives four shares for each one held; 1:10 is a reverse split.
next_cursorstringAlwaysAlways null: a request of at most 7 days is one page.
Request
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
  "https://api.narwhalapi.com/v1/calendars/splits?start=2026-10-26&end=2026-11-01"
Example response with illustrative values
{
  "entries": [
    {
      "date": "2026-10-28",
      "id": "XNAS:EXMP",
      "symbol": "EXMP",
      "name": "Example Holdings Inc.",
      "ratio": "4:1"
    }
  ],
  "next_cursor": null
}

Errors

Errors use the shared problem shape with a request_id. See Errors and quota for the shape and the quota headers. Failed requests are not charged.

CodeStatusMeaning
invalid_query400A parameter is missing, unknown, repeated or outside its range.
range_too_large400The window is longer than the route allows.
not_covered404The market, country or company is not covered yet.
quota_exceeded429Your plan has fewer calls left than the request needs.
area_unavailable503This area cannot answer right now.