Barquant

Dividend and split history

GET/api/v1/families/us-equities/corporate-actions

Every dividend and split for listed US stocks, back decades, in one batch call. Pro and Unlimited.

Description

Returns the full stored history of dividends (ex, record, pay, and declaration dates, the amount paid, the split-adjusted amount, and the frequency) and stock splits for each requested listed ticker, oldest first. Corporate events covers the calendar around today; this covers the whole history. Tickers are normalized (BRK.B becomes BRK-B). An unknown ticker comes back null. A ticker that is stored but not readable yet comes back null and is listed in pending — retry those. POST the same path with {"symbols": [...]} for up to 5,000 tickers; the body streams in request order. Suggested batches are ~250 tickers per request. Every request counts as one API request against the plan quota, however many tickers it returns.

Authentication

v1 is client_id plus client_secret on every protected GET. A browser session is not enough. Google sign-in is for the website only — do not send a session cookie to v1.

  • HTTP Basic — Authorization: Basic base64(client_id:client_secret)
  • Headers — X-Client-Id and X-Client-Secret

Create or rotate credentials on Account. Full notes are on Authentication.

Path parameters

This path has no parameters.

Query parameters

ParameterInTypeRequiredDescription
symbolsquerystringYesComma-separated listed tickers. Repeated symbols= params are merged. Maximum 500 unique keys (POST: 5,000).
typesquerystringNodividend, split, or both (comma-separated). Default both; a type left out is omitted from each entry.
fromquerystringNoFirst day to include (dividend ex-date / split date), YYYY-MM-DD. Default: the start of the history.
toquerystringNoLast day to include, YYYY-MM-DD. Default: the latest stored row (declared future ex-dates included).

Example request

curl -sS -u "$CLIENT_ID:$CLIENT_SECRET" \
  https://barquant.dev/api/v1/families/us-equities/corporate-actions?symbols=AAPL&types=split

Response attributes

FieldTypeDescription
as_ofstring | nullDay the history store was last published, YYYY-MM-DD.
typesstring[]Types included in each entry.
requestedstring[]Normalized tickers in request order.
symbolsobjectTicker → entry, or null when unknown or pending.
symbols[].fetched_atstring | nullWhen this ticker's history was last refreshed.
symbols[].dividends[]object[]ex_date, record_date, pay_date, declaration_date (YYYY-MM-DD or null), amount (as paid), adj_amount (split-adjusted), frequency (e.g. Quarterly). Oldest first.
symbols[].splits[]object[]date, numerator, denominator, ratio (numerator / denominator; 4 for a 4-for-1). Oldest first.
symbols[].spinoffs[]object[]Only on tickers with a reviewed spin-off that source data listed as a split (with splits requested): date, spinco (ticker of the spun-off company), spinco_name, listed_as_split (the numerator / denominator / ratio it was listed with). The share count did not change, so the row is not in splits[].
pendingstring[]Tickers that are stored but could not be read this time. Retry them.

Sample response

{
  "family": "us-equities-corporate-actions",
  "as_of": "2026-09-26",
  "computed_at": "2026-09-26T22:10:00Z",
  "types": [
    "split"
  ],
  "from": null,
  "to": null,
  "requested": [
    "AAPL"
  ],
  "symbols": {
    "AAPL": {
      "symbol": "AAPL",
      "fetched_at": "2026-09-26T22:10:00Z",
      "splits": [
        {
          "date": "1987-06-16",
          "numerator": 2,
          "denominator": 1,
          "ratio": 2
        },
        {
          "date": "2000-06-21",
          "numerator": 2,
          "denominator": 1,
          "ratio": 2
        },
        {
          "date": "2005-02-28",
          "numerator": 2,
          "denominator": 1,
          "ratio": 2
        },
        {
          "date": "2014-06-09",
          "numerator": 7,
          "denominator": 1,
          "ratio": 7
        },
        {
          "date": "2020-08-31",
          "numerator": 4,
          "denominator": 1,
          "ratio": 4
        }
      ]
    }
  },
  "pending": []
}

Errors

StatusWhen
400symbols is missing or over the key limit, types is not dividend / split, or from / to is not YYYY-MM-DD or from is after to.
401Missing or wrong client_id / client_secret.
403Authenticated, but this plan does not include dividend and split history. It starts on Pro.
429Daily quota or per-minute plan quota. Read Retry-After and X-RateLimit-* headers.

401 body:

{
  "error": "Unauthorized"
}

403 body:

{
  "error": "This plan does not include that family.",
  "plan": "basic",
  "requiredPlan": "pro"
}

429 body (per-minute / daily):

{
  "error": "Too many requests."
}

Plan access

Pro and Unlimited. Free and Basic receive 403. No history window: both plans see the full stored history. Every request counts as one API request against the plan quota.

Daily and per-minute quotas live on Plans and limits.

© 2026–2035 Barquant

Dividend and split history · Barquant