Fundamentals REST endpoints
Company reference and share-structure data for US and EU stocks under /fundamentals: free float, shares outstanding, sector, ownership, short interest, and liquidity.
?market=DE.How it works
Values are maintained continuously by our aggregation layer and served from TickerLayer storage, so responses are fast and unaffected by upstream conditions. Share-structure figures (float, shares outstanding, short interest, volumes) refresh daily; company profile fields (name, venue, sector, industry, country) refresh monthly. Every item carries its own as_of vintage, which tracks the share-structure figures and only advances when they are genuinely refreshed.
Share-structure figures are also written as one set, never mixed across refreshes. If an upstream restatement temporarily leaves one of them unavailable, the whole set keeps its previous values and its previous as_of rather than pairing a new count with an older one. That is what makes float_ratio and short_float_ratio safe to rely on.
Responses never contain null: a field our aggregation layer has no reliable value for is omitted from the payload. Ratios such as float_ratio and short_float_ratio are computed from the counts in the same payload, so they are always internally consistent.
Depositary receipts get one extra safeguard. Reference data for them often arrives denominated in the issuer's home-market ordinary shares rather than the receipts that actually trade, and sometimes at a stale vintage on top. We cross-check every reported count against the listing's market cap and live traded price; a count that fails is withheld, and the payload instead carries shares_listed_est and free_float_est, listing-level estimates clearly named as such. Filter on the reported fields when you need exact counts, and fall back to the estimates when you only need the order of magnitude, as in low-float screening.
/fundamentals/stocks/{symbol}Fundamentals for one symbol
Returns the full fundamentals item for one market-qualified symbol. 404 when the symbol is unknown or has no fundamentals coverage yet (very fresh listings can lag a day).
Path parameters
| Parameter | Type | Description |
|---|---|---|
| symbolreq | string | Market-qualified symbol (CC:SYMBOL, e.g. US:AAPL or DE:RHM). Fundamentals currently cover the US, DE, ES and FR markets. |
Request
curl -sS "https://api.tickerlayer.com/fundamentals/stocks/US:KO" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"symbol": "US:KO",
"base_symbol": "KO",
"market": "US",
"company": "The Coca-Cola Company",
"exchange": "NYSE",
"mic": "XNYS",
"country": "United States",
"country_code": "US",
"sector": "Consumer Defensive",
"industry": "Beverages - Non-Alcoholic",
"security_type": "Common Stock",
"employees": 65900,
"market_cap": 388735324105,
"shares_total": 4303000000,
"free_float": 3874015338,
"float_ratio": 0.9003,
"short_interest": 44821363,
"short_float_ratio": 0.0116,
"days_to_cover": 2.56,
"insider_ownership": 0.099,
"institutional_ownership": 0.686,
"adv_10d": 12690023,
"adv_90d": 15906204,
"beta": 0.342,
"as_of": "2026-08-20T11:56:49.392Z"
}/fundamentals/stocks?symbols=...Batch lookup
Returns fundamentals for up to 100 symbols in one call. Symbols without coverage are listed under missing instead of appearing as empty items.
Query parameters
| Parameter | Type | Description |
|---|---|---|
| symbols | string | Comma-separated market-qualified symbols, at most 100 per request. When present, the response is a batch lookup and market, cursor and limit are ignored. |
Request
curl -sS "https://api.tickerlayer.com/fundamentals/stocks?symbols=US:KO,US:SOUN,US:ZZZZ" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"count": 2,
"items": [
{ "symbol": "US:KO", "free_float": 3874015338, "shares_total": 4303000000, "...": "..." },
{ "symbol": "US:SOUN", "free_float": 400969014, "shares_total": 411574436, "...": "..." }
],
"missing": ["US:ZZZZ"]
}/fundamentals/stocksFull universe, paged
Pages through fundamentals for every covered symbol, ordered by symbol. Built for screeners: pull the whole universe in a handful of requests instead of one call per ticker, then filter locally (for example free_float below 10M).
Query parameters
| Parameter | Type | Description |
|---|---|---|
| market | string | Market code to page through: US, DE, ES or FR. Defaults to US. |
| cursor | string | Resume marker from the previous page (next_cursor). Omit to start from the first symbol. |
| limit | integer | Rows per page, default 500, maximum 1000. |
Request
curl -sS "https://api.tickerlayer.com/fundamentals/stocks?limit=1000" \
-H "x-api-key: <YOUR_API_KEY>"Response 200 OK
{
"market": "US",
"count": 1000,
"items": [ { "symbol": "US:A", "...": "..." } ],
"next_cursor": "US:AVGO"
}next_cursor from each response as cursor on the next request; the last page omits it. With limit=1000 the full US universe is currently 8 requests.Field reference
Identity fields are always present; every other field is optional and omitted when unknown. Ownership fields are fractions between 0 and 1.
Item fields
| Parameter | Type | Description |
|---|---|---|
| symbol / base_symbol / market | string | Identity of the listing, same convention as every other endpoint (US:AAPL, AAPL, US). |
| company | string | Issuer name. |
| exchange / mic | string | Listing venue and its MIC code (e.g. NYSE, XNYS). |
| country / sector / industry | string | Issuer origin country and classification. |
| country_code | string | ISO 3166-1 alpha-2 code of the issuer origin country, derived from country. Distinct from the market prefix, which is the listing venue: a depositary receipt can trade on market US with country_code CN. Omitted when the origin cannot be resolved to a code. |
| security_type | string | Instrument class, e.g. Common Stock. |
| employees | integer | Reported headcount. |
| market_cap | number | Market capitalization in the listing currency. Withheld together with shares_total when the pair fails the live-price cross-check on an ordinary listing. |
| shares_total | integer | Total shares outstanding, cross-checked against the market cap and the live traded price. On depositary receipts a count that contradicts the listing (reported on the ordinary-share base, or a stale vintage of it) is withheld and replaced by the estimates below. On ordinary listings a count and market cap that jointly contradict the live price by a wide margin (a stale pair, common on micro caps that reverse-split and re-dilute) are both withheld, with no substitute. |
| free_float | integer | Shares available for public trading (free float). Omitted, together with the two ratios below, when the reported float is not reconcilable with the share count for that listing, which happens on some depositary receipts. |
| float_ratio | number | free_float divided by shares_total, 0 to 1. Derived by our aggregation layer, always consistent with the counts in the same payload. |
| shares_listed_est | integer | ESTIMATE of the listing-level share count (market cap over the live traded price). Served only for depositary receipts whose reported counts failed validation, so a symbol never carries both a reported count and an estimate. An order-of-magnitude screening aid, not a reported figure. |
| free_float_est | integer | ESTIMATE of the listing-level float: shares_listed_est reduced by reported insider ownership. Same serving rule and the same caveat as shares_listed_est. |
| short_interest | integer | Shares currently sold short. |
| short_float_ratio | number | short_interest divided by free_float. Derived, same guarantee as float_ratio. |
| days_to_cover | number | Short interest expressed in days of average trading volume. |
| insider_ownership / institutional_ownership | number | Fraction of shares held (0 to 1). |
| adv_10d / adv_90d | integer | Average daily share volume over 10 and 90 sessions. |
| beta | number | Beta versus the broad market. |
| as_of | string | ISO-8601 vintage of the share-structure figures in this item. It moves only when those numbers are actually refreshed, so it never overstates how current they are. Share structure refreshes daily; profile fields refresh monthly. |