Skip to content
/api/v1/xbrl/share-classes

Per-class shares outstanding for a multi-class issuer, from dei facts dimensioned by share class.

Per-class shares outstanding for a multi-class issuer, from dei facts dimensioned by share class.

Why use this

Return each common-stock class's shares outstanding from the dei `EntityCommonStockSharesOutstanding` facts dimensioned by `us-gaap:StatementClassOfStockAxis`, joined to each class's own `dei:TradingSymbol` cover fact — so BRK-A vs BRK-B (or GOOGL vs GOOG) are separated structurally, not guessed.

Common use case

Getting the correct per-class share count for a multi-class issuer (market-cap-by-class, per-class EPS); mapping a class member to its ticker; detecting when a filer also tags an undimensioned entity-wide total.

Per-class shares outstanding for multi-class issuers, sourced from the dei EntityCommonStockSharesOutstanding facts dimensioned by us-gaap:StatementClassOfStockAxis and joined to each class's own dei:TradingSymbol cover fact for the member -> ticker mapping (BRK-A <-> CommonClassAMember). This structurally replaces the old single-ticker priority-list guess for issuers like Berkshire (A/B) and Alphabet (GOOGL/GOOG). entity_total is populated only when the filer independently tags an undimensioned entity-wide total — members are never summed to synthesize one. Selector is ticker | cik (+ optional as_of). Coverage is wide — every US filer is served presence-based — while historical depth loads incrementally; a ticker that matches no US filer returns 404 UNKNOWN_TICKER.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerqueryoptionalSelector — provide exactly ONE of `ticker` | `cik`. Any listed class ticker resolves the whole issuer (`BRK.A` / `BRK.B` / `BRK-A` all fold to Berkshire). A ticker that matches no US filer -> 404 `UNKNOWN_TICKER`.BRK.B
cikqueryoptionalSelector: issuer CIK, zero-padded or bare (both match — compared with leading zeros stripped). Must be numeric (else 400 INVALID_PARAM).1067983
as_ofqueryoptionalOptional point-in-time: return the per-class counts current as-of this date (latest dei fact with `filed_at <= as_of`). `YYYY-MM-DD`; malformed -> 400 INVALID_PARAM. Omit for the latest.2025-06-30
basisqueryoptionallatest`latest` (default) elects the most recently filed qualifying filing (restated view); `original` elects the earliest-filed qualifying filing (as-known-then). Composes with `as_of` (which bounds the eligible filings). Any other value -> 400 INVALID_PARAM.original

Response schema

FieldTypeNullableDescription
data.company_namestringyesThe issuer's display name, embedded beside `data.ticker`/`data.cik` so a client can label the issuer without a second lookup (mirrors the SEC companyfacts `entityName`). Resolved from the always-updated company catalog by the resolved CIK; present with `null` when the catalog has no name for the issuer (never a fabricated value). Additive — every existing field is unchanged.
data.classes[]arraynoOne entry per common-stock class the issuer tags on `us-gaap:StatementClassOfStockAxis`. Each: `member` (the class member qname), `class_ticker` (from the class's `dei:TradingSymbol` cover fact, when present), `shares_outstanding` (number), `context_end_date` (the dei fact's context end date, ISO), and `unit`.
data.classes[].memberstringnoThe class member qname (e.g. `us-gaap:CommonClassAMember`) the dei fact is dimensioned by. `class_ticker` is the per-class ticker mapping (null when the filer did not tag a class-dimensioned `dei:TradingSymbol`).
data.filingobjectyesThe single latest qualifying filing (`filed_at <= as_of`) the per-class facts were read from: `{accession_no, form_type, period_of_report, filed_at}`. Null when the filer tagged no dei `EntityCommonStockSharesOutstanding` fact at/before `as_of` (then `classes` is empty).
data.entity_totalnumberyesThe undimensioned, entity-wide shares-outstanding fact — present ONLY when the filer ALSO tags an all-classes total. Null when the issuer tags only per-class facts (the common case; members are never summed to synthesize one).

Sample response

·
  • "status": "success"
  • "data":
    • "ticker": "BRK.B"
    • "cik": "0001067983"
    • "company_name": "BERKSHIRE HATHAWAY INC"
    • "covered": true
    • "phase": "wide"
    • "as_of": null
    • "filing":
    • "classes":
    • "entity_total": null
    }
  • "meta":
    • "class_count": 2
    }
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl "https://api.finradar.ai/api/v1/xbrl/share-classes?api_Token=YOUR_API_KEY&ticker=BRK.B&cik=1067983&as_of=2025-06-30&basis=original" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).