Companies

Get float breakdown

Get float breakdown data for a company, including float shares, definition, and as-of date — and, when the headline float is withheld, the bounds and labelled fallbacks that stand in for it.

The cardinal rule: null / absent / withheld means NOT MEASURED. It never means "no float", "no restricted shares" or zero. A numeric 0 is a MEASURED zero and will pass a null check — so decide from the accompanying reason/marker field (floatWithheldReason, restrictedBlockCount, provenance, direction), never from the value alone. Coercing an absence into a favourable statement about a named issuer is the defect this contract exists to prevent.

Which "float"? floatShares values do not all share one definition — read floatDefinition to know which you are getting:

  • tradeable — shares outstanding minus affiliate holdings minus restricted/unregistered blocks (Regulation S, Rule 144, lock-ups). What can actually reach the tape. Used on tickers covered by a filing-derived dilution snapshot (source: dilution-snapshot).
  • non_affiliate — the SEC I.B.6 / Rule 12b-2 "held by non-affiliates" figure, which INCLUDES restricted shares held by non-affiliates. Not what a trader means by float.
  • non_affiliate_estimate — non-affiliate float approximated from Form 4 / 13D-G ownership filings.
  • free_float — vendor-reported free float; methodology varies by provider and is not derived from filings.

⚠️ Today floatDefinition and source are only reliably present on filing-derived (dilution-snapshot) results. A vendor-sourced float arrives with NEITHER field (the response is as small as { floatShares, asOfDate, floatEstimated }), because the public API does not disclose which vendor backs a figure. Read an ABSENT floatDefinition as "not a filing-derived tradeable float" — treat the figure as vendor free float and do not assume it is tradeable.

On snapshot-covered tickers nonAffiliateFloatShares carries the SEC I.B.6 figure separately. It is the ONLY correct input to regulatory calculations (baby-shelf / S-3 I.B.6 capacity); do not substitute the tradeable float there, and do not present the non-affiliate figure as tradeable supply.

Withheld floats. floatShares may be null with floatWithheldReason set: the figure was deliberately withheld because the filings do not support a single tradeable number, not merely unavailable. Do not fall back to a vendor float of your own — the withhold exists precisely because vendor figures are wrong on those tickers. A withheld result may instead carry up to four stand-ins, each of which says what it is IN the object. None of them is a float, and none may be fed to a market capitalisation, a percent-of-float, a short-interest ratio, a screen, a sort, or any comparison with another ticker's float:

  • tradeableFloatCeiling — an UPPER BOUND: the tradeable float is at most this many shares. Render it with ≤ and nothing else. null = no bound is stateable (an unsized block), never 0.
  • affiliateBasis.floatLowerBound / floatUpperBound — a RANGE the float lies in: between X and Y shares. Each end is null independently when not measurable; state whichever ends exist as inequalities. This object is ALSO present on published floats, where both ends collapse onto floatShares — it is a bound only when floatShares is null.
  • floatEstimate — a BADGED ESTIMATE with its working: shares, the basis sentence that itemises how it was reached, a direction saying which way it errs (overstates = the true float is at most this; understates = at least this; unknown), and a confidence. An estimate is an estimate. It is never promoted into floatShares, and confidence here describes the estimate, not a float. Today it is populated only on the affiliate_basis_stale reason and only when every input is measured; null is the ordinary outcome.
  • vendorFallback — a third-party free-float figure offered beside the withhold, labelled provenance: vendor / floatDefinition: free_float inside the object so the label cannot be dropped. It is NOT our figure: it is not on the tradeable definition, and it has already been judged against every bound above (a vendor figure our filings refute is omitted, not shown). Present it as the vendor's free float with its own asOfDate, never in the "Float" slot.

restrictedShares: null means NOT MEASURED — a restricted block exists whose size the filings do not state. Never treat it as 0. restrictedBlockCount: 0 IS an answer (no blocks found).

affiliateBasisStale: true is a LABEL, not a withhold: the affiliate table subtracted to reach the float is materially older than the share count. The number itself is unchanged.

Two other shapes you will see (measured on the live API):

A vendor free float — no source, no floatDefinition:

{ "floatShares": 13521179933, "asOfDate": "2026-05-14", "floatEstimated": false }

A withheld float carrying a range and a vendor fallback, no headline:

{ "floatShares": null, "source": "dilution-snapshot", "floatDefinition": "tradeable",
  "floatWithheldReason": "affiliate_basis_stale", "floatEstimate": null,
  "vendorFallback": { "floatShares": 303382, "provenance": "vendor",
                      "floatDefinition": "free_float", "asOfDate": "2026-05-13",
                      "splitAdjusted": false },
  "affiliateBasisStale": true,
  "affiliateBasis": { "floatLowerBound": 19960521, "floatUpperBound": 59419326,
                      "issuedSinceBasisShares": 39458805, "issuedSinceBasisPct": 66.4,
                      "anchorDate": "2026-01-21", "signal": "stated_basis" },
  "basisSharesOutstanding": 59419326, "affiliateShares": 0 }

Read the second as: "tradeable float withheld; between 19,960,521 and 59,419,326 shares; vendor free float 303,382 as of 2026-05-13" — and compute nothing from any of the three numbers.

Credit cost: 3

get/companies/{ticker}/float

Request

  • Base URL: https://api.signal8.ai/api/v1/public
  • URL: https://api.signal8.ai/api/v1/public/companies/{ticker}/float
  • Auth: API key in header X-Api-Key

Path parameters

tickerstring required

Company ticker symbol (1-5 letters, case-insensitive)

Response

Float breakdown

object required

Changes

No recorded changes to this operation across all 1 revision of this API.