---
title: "One stock"
method: GET
path: "/sec/{ticker}.json"
---

# One stock

`GET /sec/{ticker}.json`

## Request

- Base URL: `https://tickerinside.com/api/v1`
- URL: `https://tickerinside.com/api/v1/sec/{ticker}.json`
- Auth: none required

In this path sec stands for security, not the SEC: the file is one stock and the funds that hold it, and a fund's own holdings are in /api/v1/fund/{ticker}.json. Name, sector, market cap, valuation, returns, risk, the funds that hold it from issuer files and from SEC filings, and its weekly returns over the same 156 weeks as the fund files. Every stock in the price data with at least 110 weekly returns in those weeks has a file here, whether or not any covered fund holds it. A stock with fewer has one when a fund read from an issuer file or a stock ETF from SEC filings holds it in a file dated since it listed, the price data has its closes since its listing, or a year of them, the last at most five sessions old, and Nasdaq Trader's directory lists it under its name. weekly is then an empty list, the figures over three and five years and the correlated stocks are null or empty, calendar is given once 40 of the last 52 weeks have a return, and r1 once the weekly closes cover a full year. A security covered funds hold with no file of its own, a stock the price data does not list or lists too few weekly returns for, or a line listed abroad (7203.JP), answers with "coverage": "holders_only": its holders from the shard of its first character, each dated, the price and return fields null, and none of the fields built from each fund's file or the ledger, such as etf_ownership and holders_all. A 404 means no covered fund holds the key. Read coverage first: since October 2026, holders_only marks an answer without the fields Security requires and SecurityHoldersOnly does not list, such as etf_ownership, holders_all and answer.

## Path parameters

- `ticker` string, required

## Response `200`

The file. The example is a real answer, shortened: long lists and maps keep their first entries. A security covered funds hold with no stock file answers as SecurityHoldersOnly, with coverage holders_only.

- union
  - Security
    - `ticker` string, nullable, required: The stock's ticker, upper case.
    - `name` string, nullable, required: The company's name.
    - `page_url` string, nullable, required: The stock's page on the site, or null when it has none. Link this when quoting the figures.
    - `cite_as` string, nullable, required: A citation line for a quoted figure: company, sources and date, a URL to check it, licence.
    - `cite_html` string, nullable, required: The credit as HTML: a link to the page cite_as names, then its address.
    - `sector` string, nullable, required: The company's sector where the data classifies it, or "US Listed" when it does not, which is the case for most stocks.
    - `industry` string, nullable, required: The finest level of that classification under the sector, such as Semiconductors or Regional Banks; null when sector is "US Listed".
    - `identifiers` object, required: FIGI and SEC ids: /api/v1/identifiers.json.
      - `asset_type` 'etf' | 'etn' | 'stock', required: etf for a fund; etn for an exchange-traded note, a bank's debt with no holdings; stock for any other listed share: a company's stock, a depositary receipt, a closed-end fund.
      - `exchange` 'Cboe BYX' | 'Cboe BZX' | 'Cboe EDGA' | 'Cboe EDGX' | 'IEX' | 'NYSE' | 'NYSE American' | 'NYSE Arca' | 'NYSE Texas' | 'Nasdaq' | 'Nasdaq BX' | 'TXSE' | 'null', nullable, required: The exchange the security is listed on, as Nasdaq Trader's directory names it: Nasdaq, NYSE, NYSE Arca, Cboe BZX and the others its codes stand for. Null when the directory does not list it. Unlike the identifiers, it changes when the listing moves.
      - `composite_figi` string, nullable, required: The Financial Instrument Global Identifier of the US listing (the composite FIGI of exchange code US), from OpenFIGI, asked by ticker. FIGIs are in the public domain. Null until OpenFIGI answers for the ticker with one security of this asset type.
      - `share_class_figi` string, nullable, required: The FIGI of the share class, the same on every market it trades in. Null with composite_figi.
      - `cik` string, nullable, required: The SEC's Central Index Key, ten digits as EDGAR writes it, from the SEC's ticker files: the company's, or for a fund the registrant's, the trust that files for it and for its other funds. Several securities can share one, so key records on composite_figi or class_id instead. Null when the SEC's files do not list the ticker.
      - `series_id` string, nullable, required: For a fund, the SEC's id of its series (S and nine digits), which tells it apart from the other funds of its registrant: from the SEC's fund ticker file, or from the Form N-PORT its holdings are read from where the two differ. Null for a stock, and for a trust that files as a company.
      - `class_id` string, nullable, required: For a fund, the SEC's id of its share class (C and nine digits). Null when series_id is, or when it comes from the Form N-PORT and the fund ticker file lists the ticker under another series.
    - `as_of` string, nullable, required: The price date: the date of the price data behind every figure here.
    - `page` boolean, nullable, required: True when the stock has a written page at /stock/{ticker}/. Every stock here has this file whether or not it has a page.
    - `cap_b` number, nullable, required: Market capitalisation, in billions of US dollars.
    - `pe` number, nullable, required: Trailing price to earnings ratio.
    - `yield` number, nullable, required: Trailing twelve month dividend yield, as a percentage.
    - `vol` number, nullable, required: Annualised standard deviation of weekly total returns over three years, as a percentage.
    - `beta` number, nullable, required: Sensitivity to the S&P 500, from three years of weekly returns.
    - `mdd3` number, nullable, required: Largest peak to trough decline over three years, measured on weekly closes. Negative.
    - `r1` number, nullable, required: Cumulative total return over one year, as a percentage. Not annualised.
    - `r3` number, nullable, required: Cumulative total return over three years, as a percentage. Not annualised.
    - `r5` number, nullable, required: Cumulative total return over five years, as a percentage. Not annualised.
    - `last_close` number, nullable, required: The last closing price, raw, in the trading currency. Returns use dividend-adjusted closes; this is the close as traded.
    - `last_close_date` string, nullable, required: The date of that close.
    - `day_change_pct` number, nullable, required: The move from the previous close to the last, as a percentage.
    - `high_52w` number, nullable, required: The highest raw close over the last 252 trading days, or since the listing for a stock listed less than a year ago.
    - `low_52w` number, nullable, required: The lowest raw close over the last 252 trading days, or since the listing for a stock listed less than a year ago.
    - `currency` string, nullable, required: The trading currency of the price fields.
    - `calendar` object, nullable, required: Total return by calendar year, as a percentage, the current year to date.
    - `held_by` integer, nullable, required: How many issuer-layer funds hold it, the rows of holders. The stock's page counts these less left_out, with the SEC-layer funds of held_by_sec_nport, as holders_all lists them.
    - `heaviest` union[], nullable, required: The issuer-layer fund that gives it the largest weight, as [fund ticker, weight percent]. Null when none of them holds it.
      - union
        - number
        - string
    - `held_by_sec_nport` integer, nullable, required: How many SEC-layer funds hold it, the rows of holders_sec_nport. The stock's page counts them with the issuer-layer funds and lists them in a table of their own, each linked to its filing.
    - `holders` array[], nullable, required: Every issuer-layer fund that holds it, heaviest first, as [fund ticker, weight percent, date of that fund's holdings file]. The same rows as the holders index, in the stock's own file.
      - union[]
        - union
          - number
          - string
    - `holders_sec_nport` array[], nullable, required: The SEC-layer funds that hold it, heaviest first, as [fund ticker, weight percent, the quarter end the filing describes]. They are months older than holders, so they are kept apart. A fund whose row under this ticker is a foreign company's local code is not listed. A filing names a security by its ISIN, which does not say where the fund bought it. So shares that trade in New York and abroad on one ISIN (AstraZeneca, TotalEnergies, Ferrari) are listed here for the funds whose stocks are mostly on US ISINs, and under the line abroad (AZN.GB) for the others. A preferred share is keyed by its issuer's common ticker, as the filings key it, so a preferred stock fund can appear here. For a stock whose weekly is empty, a row can be dated before its first close in the price data. Such a row can be another security that had the ticker, or the company's shares abroad before it listed in New York, and etf_ownership does not count it (before_first_close).
      - union[]
        - union
          - number
          - string
    - `synthetic_exposure` object[], nullable, required: The derivative-based funds whose swaps, futures or options reference the stock, largest first: fund, exposure (long, short, long and short, options, not stated), long_pct, short_pct, options, instruments, complete, report_date. Notional exposure, not shares held: in no holder list, rank or etf_ownership.
      - `fund` string, nullable
      - `exposure` string, nullable
      - `long_pct` number, nullable
      - `short_pct` number, nullable
      - `options` object
        - `purchased_puts_pct` number, nullable
        - `written_puts_pct` number, nullable
        - `written_calls_pct` number, nullable
        - `purchased_calls_pct` number, nullable
      - `instruments` string[], nullable
      - `complete` boolean, nullable
      - `report_date` string, nullable
    - `left_out` string[], nullable, required: An empty list for a stock with a page, and null without one; kept for compatibility. Before lines listed abroad were keyed with their market (7203.JP), it named the issuer-layer funds whose row under the ticker was most likely a company listed abroad under the same code. Today a row stays under a US ticker when its issuer's file places it in New York, by its exchange, its currency or its identifiers, with the US list for a line nothing else places. The Toronto line of the same shares as a New York line also stays under the US ticker (RY). A row in dollars that nothing places abroad counts as a US line, as a few depositary receipts traded in London do (SBID, the GDR of State Bank of India).
    - `same_code_abroad` array[], nullable, required: The lines listed outside the United States under the same local code, as [key, company name], most widely held first. Each is another security, and often another company: SAN.ES is Banco Santander in Madrid and SAN.FR Sanofi in Paris, beside SAN, the Santander ADR. Their issuer-layer holders are under those keys in the holders index. Their SEC-layer holders are in holders_sec_nport of the shard of their first character (/api/v1/holders/a.json for AZN.GB). An empty list when there is none.
      - string[]
    - `earlier_key_reads_as` string[], nullable, required: The keys this ticker reads as now, this ticker among them, when it was also the key of other lines before lines listed abroad were keyed with their market. CCO, Clear Channel Outdoor, was also Cameco's Toronto code, so it reads as CCO and CCJ; SAN reads as SAN, SAN.ES and SAN.FR. The same list as the aliases of the holders index. Null when the ticker was only ever this line.
    - `etf_ownership` object, required: The stock's line of the ETF ownership ledger: the share of the company's shares outstanding that the covered US ETFs hold, at least, with its parts and dates, or why no figure is published. Its fields are described below; the method, with its test vectors, is /api/v1/methods.json.
      - `pct_lower_bound` number, nullable, required: At least this percent of the shares outstanding is held by the covered US ETFs counted, rounded down to two decimals. It is of the company, every class counted, when basis is company, and of this ticker's class alone when basis is class. It is a lower bound: funds not covered, and covered funds whose count could not be used, are not in it. One exception: the count of shares outstanding is used when it is at most 2% below a current independent count, so the figure can be up to about 2% of itself too high. Null when no figure is published; refused says why.
      - `basis` 'company' | 'class' | 'null', nullable, required: What the percent is of. company: all the company's shares outstanding, every class rolled up. class: this ticker's class alone, which is not the company's figure. It is company when shares_outstanding covers every class, rolled up (Alphabet's three classes; Berkshire's class A counted as 1,500 class B shares). It is also company when that count is the one count the company's cover gives and the company has one class of stock. It is class when the roll-up over the cover's classes does not check out against an independent count while this class's count does. It is also class when the one count the SEC gives is short of an independent company count and cannot be shown to be the company's. That happens when the filing names another class of stock (Mobileye's class B, Plains GP's class B shares), or when the count is a frames row. Null when no figure is published.
      - `company` string, nullable, required: The company the figure is about, as cite_as names it. It is the stock's name without what names the listing rather than the company. That is its class (Alphabet Inc., not Alphabet Inc. (Class A)), a depositary receipt, a registry share or a closed-end fund (Ares Capital Corporation, not Ares Capital Corporation - Closed End Fund). It keeps a leading "The" when the company's name has one (The Walt Disney Company). On a company basis the figure covers every class; on a class basis cite_as names the class by its ticker (the outstanding shares of the PAGP class). Null when no figure is published.
      - `shares_held` integer, nullable, required: The shares the counted funds hold, in shares of this ticker's class, of every listed class on a company basis. Issuer files enter it only as a sum over at least two of them, never a single issuer file's count. SEC filings are public one by one, so a figure can rest on a single filing.
      - `shares_held_by_layer` object, nullable, required: shares_held split between the issuers' own files (issuer_files) and SEC Form N-PORT filings (sec_nport).
        - `issuer_files` integer, required
        - `sec_nport` integer, required
      - `shares_outstanding` integer, nullable, required: The company's shares outstanding, in shares of this ticker's class, as the cover of a periodic report states them in the SEC's XBRL data: a 10-K, 10-Q, 20-F or 40-F, amendments and transition reports included. It is the most recent count read; its date is shares_outstanding_as_of and its filing shares_outstanding_filing. On a class basis, it is the class's own count.
      - `shares_outstanding_as_of` string, nullable, required: The date the cover counts the shares on. It is not the date of the holdings, which holdings_dates gives.
      - `shares_outstanding_filing` string, nullable, required: The filing on SEC EDGAR the count comes from, to check it against the source.
      - `funds_holding` object, nullable, required: How many covered funds list the stock, any listed class on a company basis, by layer: issuer_files and sec_nport. A fund holding two classes is one fund.
        - `issuer_files` integer, required
        - `sec_nport` integer, required
      - `funds_counted` object, nullable, required: How many of them are counted in shares_held, by layer. The others are in not_counted.
        - `issuer_files` integer, required
        - `sec_nport` integer, required
      - `funds_prorated` integer, nullable, required: How many of the counted funds are Vanguard ETFs. A Vanguard file lists the whole fund, every share class together, so each is counted for its ETF class only. Its shares are multiplied by the ETF class's net assets over the whole fund's, as Vanguard prints them, each taken at the end of its rounding that keeps the figure a lower bound.
      - `not_counted` object, nullable, required: The funds listing the stock that are not counted, by reason; each reason is explained under not_counted in /api/v1/methods.json. no_share_count: the file gives no share count. through_fund: held through another covered fund. preferred_fund: a preferred stock fund. preferred_row: a row the file names as a preferred or depositary share. price_mismatch: a value per share that is not the stock's price. value_mismatch: a file whose counts or values do not match its weights times the fund's stated net assets. no_value_check: a file without market values, and no net assets to check it against. no_class_size: a Vanguard file without its class sizes. whole_series: a filing covering mutual fund classes. before_split: a row dated before a split of the stock. before_first_close: a row dated before the stock's first close in the price data. single_issuer_file: the only issuer file counted. A fund holding two classes of the company is one fund here, and it is not listed when either of its rows is counted; rows_not_counted has the rows.
      - `rows_not_counted` object, nullable, required: The rows not counted, one per fund and class, by the same reasons. It holds the row of a fund counted through another class that is itself left out, such as a preferred depositary share filed under the common's ticker. On a class basis, only this ticker's rows.
      - `holdings_dates` object, nullable, required: The oldest and newest holdings dates of the counted funds. A filing describes a quarter end months back, so the two are often far apart.
        - `oldest` string, required
        - `newest` string, required
      - `holdings_dates_by_layer` object, nullable, required: The same for each layer, issuer_files and sec_nport; null for a layer with no fund counted.
        - `issuer_files` object, nullable, required
          - `oldest` string, required
          - `newest` string, required
        - `sec_nport` object, nullable, required
          - `oldest` string, required
          - `newest` string, required
      - `classes` object[], nullable, required: For a company with several classes of stock, one entry per class: class, tickers (empty for an unlisted class), shares_outstanding and as_of. weight is set where one share counts for more than one share of this ticker's class. shares_held and pct_lower_bound are set where the class's own count checks out against its ticker's and the class figure is at least 0.01%, and are null otherwise. Null for a company with one class.
        - `class` string, nullable, required
        - `tickers` string[], required
        - `shares_outstanding` integer, required
        - `as_of` string, required
        - `weight` number: What one share of this class counts for, in shares of the ticker's class, when that is not one share (Berkshire's class A, 1,500 class B shares). Absent otherwise.
        - `shares_held` integer, nullable, required
        - `pct_lower_bound` number, nullable, required
      - `refused` string, nullable, required: Why no figure is published, as a code: no_sec_count, class_unknown, count_too_old, count_date_invalid, no_independent_count, split_between_dates, count_below_independent, count_mismatch, no_fund_counted, under_0_01_pct, above_100 or held_back. Null when a figure is published.
      - `refused_reason` string, nullable, required: The same reason in words.
      - `held_back` object, nullable, required: Null on a normal night. When tonight's ledger failed its checks and was held back, the same object as held_back in /api/v1/ownership.json, and the figure here, if any, is from the last ledger that passed, with its own dates.
        - `reason` string, required: above_100, fewer_figures or error.
        - `failures` integer, required: How many stocks came to over 100% tonight.
        - `examples` string[], required: Up to five of them.
        - `figures` integer, required: How many figures tonight's ledger has.
        - `last_figures` integer, nullable, required: How many the ledger served has.
        - `last_as_of` string, nullable, required: The as_of of the ledger served.
      - `method` string, required: The method and its version, ti-ownership/1. A change to what it computes from inputs it already accepted is a new version.
      - `method_url` string, required: Where the method is written down, with its test vectors.
      - `cite_as` string, nullable, required: A citation line for the figure: company, the figure, the method, the holdings dates and the date of the count, a URL to check it, licence. Null when no figure is published.
      - `cite_html` string, nullable, required: The credit as HTML: a link to the page cite_as names, then its address. Null when no figure is published.
    - `etf_holders_since_2019` object, nullable, required: How many of today's US stock ETFs held it in their SEC reports, each quarter: answer to quote, quarters oldest first. Null when fewer than two quarters held it.
      - `answer` string, required
      - `counted` string, required
      - `quarters` object[], required
        - `quarter` string, required: The calendar quarter, as 2019Q4.
        - `etfs` integer, required
        - `largest_weight_etf` string, required
        - `largest_weight_pct` number, required
      - `method` string, required
    - `holders_all` array[], required: Every covered fund holding the stock, both layers in one list, heaviest first, an issuer file first on a tie. Each row is [fund ticker, weight percent, date of its holdings, layer, rank of the stock in the fund, the fund's positions, value held in millions of US dollars]. The layer is issuer for an issuer's own file, or sec_nport for an SEC Form N-PORT filing, dated to the quarter end it describes. The rank is 1 plus the number of the fund's positions that weigh more. The value held is the weight times the fund's net assets as published. Those are the ETF share class's for a Vanguard fund (etf_class_net_assets_b), aum_b for another issuer-layer fund, and net_assets for an SEC-layer fund. A value keeps the significant figures of the less precise of the weight and the net assets, three at most. VOO's value is 81000 on net assets Vanguard prints as $1.0 trillion, two figures; a fund with aum_b of 41.8 gives three. The value is null when the fund has no net assets, or has them to fewer than two figures, or when its filing covers mutual fund classes too. Fewer than two figures means aum_b under 1.0, which the market data gives to $0.1 billion, so 0.1 is anything from 0.05 to 0.15. rank_summary counts these funds in funds_without_value. The rows are the funds of holders, less left_out, and of holders_sec_nport; no fund is in both layers. A short position, a negative weight in a long and short fund, is listed with its negative weight and value. It is not a holding: rank_summary counts it in short_positions, and by_issuer, top_by_value, membership and answer leave it out.
      - union[]
        - union
          - number
          - string
    - `rank_summary` object, required: How many of the holders have the stock as their largest holding (top_holding_in) and among their ten largest (top10_in), of how many (funds), in all and by layer. It also counts the holders with no value held (funds_without_value) and the funds short the stock (short_positions), which are not counted as holders.
      - `funds` integer, required: How many covered funds hold the stock: the rows of holders_all less short_positions.
      - `top_holding_in` integer, required: How many of them have it as their largest holding, a tie included.
      - `top10_in` integer, required: How many have it among their ten largest holdings.
      - `funds_without_value` integer, required: How many of them have no value held: no net assets, net assets known to fewer than two figures, or a filing that covers mutual fund classes too.
      - `short_positions` integer, required: How many funds hold the stock short, a negative weight in holders_all: listed there, never counted as holders.
      - `by_layer` object, required: The same three counts for each layer, issuer and sec_nport.
        - `issuer` object
          - `funds` integer, required: How many covered funds hold the stock: the rows of holders_all less short_positions.
          - `top_holding_in` integer, required: How many of them have it as their largest holding, a tie included.
          - `top10_in` integer, required: How many have it among their ten largest holdings.
        - `sec_nport` object
          - `funds` integer, required: How many covered funds hold the stock: the rows of holders_all less short_positions.
          - `top_holding_in` integer, required: How many of them have it as their largest holding, a tie included.
          - `top10_in` integer, required: How many have it among their ten largest holdings.
    - `top_by_value` object[], required: The ten holders with the most dollars in the stock, most first, each with the net assets its value is computed from and their date. Only funds with a value are ranked, so a fund whose net assets are known to fewer than two figures is not.
      - `fund` string, required: The fund's ticker.
      - `value_usd_m` number, required: The value of the stock the fund holds, in millions of US dollars: weight times net_assets_b, to the significant figures of the less precise of the two, three at most.
      - `weight` number, required: The stock's weight in the fund, in percent.
      - `holdings_as_of` string, nullable, required: The date of the fund's holdings.
      - `layer` 'issuer' | 'sec_nport', required: issuer or sec_nport.
      - `net_assets_b` number, required: The net assets the value is computed from, in billions of US dollars.
      - `net_assets_basis` 'etf_class' | 'fund' | 'filing', required: What they are: etf_class, a Vanguard ETF share class alone; fund, aum_b from the market data; filing, the net assets the fund's SEC filing states.
      - `net_assets_as_of` string, nullable, required: Their date: the day aum_b was read, or the filing's quarter end. Null when not known.
    - `membership` object[], required: Whether the stock is in VOO, SPY, IVV, QQQ, VTI and SCHD, and in the three largest sector or industry funds holding it. Each comes with its weight, the stock's rank in it, its positions and the date of its holdings. The sector funds are ranked by the net assets a value is computed from. A fund is a sector fund when its TickerInside category is in the sector group (/etf/category/), else when its name names a sector or an industry. A fund no layer covers is left out.
      - `fund` string, required: The fund's ticker.
      - `kind` 'broad' | 'sector', required: broad for VOO, SPY, IVV, QQQ, VTI and SCHD, sector for a sector or industry fund.
      - `category` string, nullable, required: The fund's category label, or null.
      - `held` boolean, required: Whether the fund holds the stock.
      - `weight` number, nullable, required: Its weight in percent, or null.
      - `rank_in_fund` integer, nullable, required: Its rank in the fund, 1 for the largest holding, or null.
      - `positions` integer, required: How many positions the fund holds.
      - `holdings_as_of` string, nullable, required: The date of the fund's holdings.
      - `layer` 'issuer' | 'sec_nport', required: issuer or sec_nport.
    - `by_issuer` object[], required: The six issuers whose covered funds hold the most dollars of the stock, most first. For each: how many of its funds hold it, the dollars in millions over the funds with a value, how many have none, the heaviest weight as [fund, weight percent] and the largest holding as [fund, millions of US dollars]. An issuer file names its issuer. An SEC-layer fund takes the issuer its name and the trust that filed it give, and one with none is left out.
      - `issuer` string, required: The issuer, as the issuer files name it (iShares, SPDR, Invesco, Global X) or as a fund's name or filer gives it.
      - `funds` integer, required: How many of its covered funds hold the stock.
      - `value_usd_m` number, nullable, required: The value they hold, in millions of US dollars, over the funds with a value, to the precision of the least precise of them; null when none has one.
      - `funds_without_value` integer, required: How many of them have no value, for want of published net assets known to two figures or more.
      - `heaviest` union[], required: The fund that gives the stock its largest weight, as [fund, weight percent].
        - union
          - number
          - string
      - `largest` union[], nullable, required: The fund holding the most dollars of it, as [fund, millions of US dollars], or null.
        - union
          - number
          - string
    - `fee_per_1000` object[], required: The five cheapest ways to hold the stock through a covered fund: what the fund's expense ratio costs a year for each $1,000 of the stock held through it. It is 1000 times the expense ratio over the weight, both in percent. Only funds whose expense ratio is in the data are listed.
      - `fund` string, required: The fund's ticker.
      - `fee_usd_per_1000` number, required: US dollars a year of the fund's expense ratio for each $1,000 of the stock held through it.
      - `expense_ratio` number, required: The fund's expense ratio, in percent a year.
      - `weight` number, required: The stock's weight in the fund, in percent.
      - `holdings_as_of` string, nullable, required: The date of the fund's holdings.
      - `layer` 'issuer' | 'sec_nport', required: issuer or sec_nport.
    - `name_collision` object, nullable, required: The covered funds whose name contains the company's name as whole words (JPMorgan Realty Income ETF for Realty Income), which a reader can take for the company or for its own fund. It gives the name compared, how many funds, and up to ten of them, holders first, each with whether it holds the stock. Null when there is none, or when the name is one word found in the funds of three issuers or more: a word of fund names more than a company's.
      - `name` string, required: The company's name as compared: its trade name less the words a filed name ends in (SoFi, not SoFi Technologies).
      - `count` integer, required: How many covered funds' names contain it.
      - `funds` object[], required: Up to ten of them, holders first: fund, name, holds, weight (null when it does not hold the stock), holdings_as_of and layer.
        - `fund` string, required
        - `name` string, nullable, required
        - `holds` boolean, required
        - `weight` number, nullable, required
        - `holdings_as_of` string, nullable, required
        - `layer` string, required
    - `answer` string, required: One sentence to quote, built from the fields above and etf_ownership, every figure with its date. It says how many covered funds hold the stock, by layer, and how many have it as their largest holding. It says where it weighs most (under 0.01% for a weight that rounds to nothing) and where the most dollars are, with about as many figures as the value has (under $0.1 million below that). It ends with the ownership figure when there is one: every class counted when it counts several, also when no fund holds this class. It opens on the name the stock's page uses, or for a stock without a page on the company's name as etf_ownership.company gives it, with the class when the figure counts several. It calls the funds the ownership figure counts "N of them" when they are among the holders it has just counted and the figure counts one class.
    - `least_correlated` array[], nullable, required: The eight stocks least correlated with this one over the last 104 of the same weekly returns, as [ticker, correlation, name]. The candidates are stocks held by ten or more covered funds, so every neighbour is reachable through ETFs. A measurement of co-movement, not a recommendation.
      - union[]
        - union
          - number
          - string
    - `most_correlated` array[], nullable, required: The eight most correlated, same shape and same candidate set.
      - union[]
        - union
          - number
          - string
    - `weekly` number[], nullable, required: 156 weekly total returns as decimals, oldest first, ending at as_of: the same weeks as the fund files, so a stock and a fund correlate with the same arithmetic as two funds. A week is null when its return cannot be computed, because the stock's prices begin later or a weekly close is missing. At least 110 of the 156 are numbers. It is an empty list for a stock with fewer that has a file by the rule of this endpoint: its vol, beta, mdd3, r3 and r5 are then null and its correlated stocks empty lists.
    - `weeks_end` string, nullable, required: The last date covered by the weekly series.
    - `license` string, nullable, required: The licence the data is published under.
    - `attribution` string, nullable, required: How to credit the data: a link to the page cite_as names where the medium allows one, the name where it does not.
    - `source` string, nullable, required: Where the method behind these figures is written down.
  - SecurityHoldersOnly: The answer for a security covered funds hold that has no stock file: a stock the price data does not list or has too few weekly returns for, or a line listed abroad (7203.JP). It is composed from the holders shard of its first character: its holders in both layers, each dated by its issuer file or SEC filing, the price and return fields null, and none of the fields the shard cannot give (synthetic_exposure, etf_ownership, holders_all, rank_summary, top_by_value, membership, by_issuer, fee_per_1000, name_collision, answer).
    - `coverage` 'holders_only', required: Always holders_only: read it before any other field.
    - `note` string, required: Why the answer lists holders only, in one sentence.
    - `ticker` string, nullable, required: The stock's ticker, upper case.
    - `name` string, nullable, required: The company's name.
    - `page_url` string, nullable, required: The stock's page on the site, or null when it has none. Link this when quoting the figures.
    - `cite_as` string, nullable, required: A citation line for a quoted figure: company, sources and date, a URL to check it, licence.
    - `cite_html` string, nullable, required: The credit as HTML: a link to the page cite_as names, then its address.
    - `sector` string, nullable, required: The company's sector where the data classifies it, or "US Listed" when it does not, which is the case for most stocks.
    - `industry` string, nullable, required: The finest level of that classification under the sector, such as Semiconductors or Regional Banks; null when sector is "US Listed".
    - `as_of` string, nullable, required: The price date: the date of the price data behind every figure here.
    - `page` boolean, nullable, required: True when the stock has a written page at /stock/{ticker}/. Every stock here has this file whether or not it has a page.
    - `cap_b` number, nullable, required: Market capitalisation, in billions of US dollars.
    - `pe` number, nullable, required: Trailing price to earnings ratio.
    - `yield` number, nullable, required: Trailing twelve month dividend yield, as a percentage.
    - `vol` number, nullable, required: Annualised standard deviation of weekly total returns over three years, as a percentage.
    - `beta` number, nullable, required: Sensitivity to the S&P 500, from three years of weekly returns.
    - `mdd3` number, nullable, required: Largest peak to trough decline over three years, measured on weekly closes. Negative.
    - `r1` number, nullable, required: Cumulative total return over one year, as a percentage. Not annualised.
    - `r3` number, nullable, required: Cumulative total return over three years, as a percentage. Not annualised.
    - `r5` number, nullable, required: Cumulative total return over five years, as a percentage. Not annualised.
    - `last_close` number, nullable, required: The last closing price, raw, in the trading currency. Returns use dividend-adjusted closes; this is the close as traded.
    - `last_close_date` string, nullable, required: The date of that close.
    - `day_change_pct` number, nullable, required: The move from the previous close to the last, as a percentage.
    - `high_52w` number, nullable, required: The highest raw close over the last 252 trading days, or since the listing for a stock listed less than a year ago.
    - `low_52w` number, nullable, required: The lowest raw close over the last 252 trading days, or since the listing for a stock listed less than a year ago.
    - `currency` string, nullable, required: The trading currency of the price fields.
    - `calendar` object, nullable, required: Total return by calendar year, as a percentage, the current year to date.
    - `held_by` integer, nullable, required: How many issuer-layer funds hold it, the rows of holders. The stock's page counts these less left_out, with the SEC-layer funds of held_by_sec_nport, as holders_all lists them.
    - `heaviest` union[], nullable, required: The issuer-layer fund that gives it the largest weight, as [fund ticker, weight percent]. Null when none of them holds it.
      - union
        - number
        - string
    - `held_by_sec_nport` integer, nullable, required: How many SEC-layer funds hold it, the rows of holders_sec_nport. The stock's page counts them with the issuer-layer funds and lists them in a table of their own, each linked to its filing.
    - `holders` array[], nullable, required: Every issuer-layer fund that holds it, heaviest first, as [fund ticker, weight percent, date of that fund's holdings file]. The same rows as the holders index, in the stock's own file.
      - union[]
        - union
          - number
          - string
    - `holders_sec_nport` array[], nullable, required: The SEC-layer funds that hold it, heaviest first, as [fund ticker, weight percent, the quarter end the filing describes]. They are months older than holders, so they are kept apart. A fund whose row under this ticker is a foreign company's local code is not listed. A filing names a security by its ISIN, which does not say where the fund bought it. So shares that trade in New York and abroad on one ISIN (AstraZeneca, TotalEnergies, Ferrari) are listed here for the funds whose stocks are mostly on US ISINs, and under the line abroad (AZN.GB) for the others. A preferred share is keyed by its issuer's common ticker, as the filings key it, so a preferred stock fund can appear here. For a stock whose weekly is empty, a row can be dated before its first close in the price data. Such a row can be another security that had the ticker, or the company's shares abroad before it listed in New York, and etf_ownership does not count it (before_first_close).
      - union[]
        - union
          - number
          - string
    - `left_out` string[], nullable, required: An empty list for a stock with a page, and null without one; kept for compatibility. Before lines listed abroad were keyed with their market (7203.JP), it named the issuer-layer funds whose row under the ticker was most likely a company listed abroad under the same code. Today a row stays under a US ticker when its issuer's file places it in New York, by its exchange, its currency or its identifiers, with the US list for a line nothing else places. The Toronto line of the same shares as a New York line also stays under the US ticker (RY). A row in dollars that nothing places abroad counts as a US line, as a few depositary receipts traded in London do (SBID, the GDR of State Bank of India).
    - `same_code_abroad` array[], nullable, required: The lines listed outside the United States under the same local code, as [key, company name], most widely held first. Each is another security, and often another company: SAN.ES is Banco Santander in Madrid and SAN.FR Sanofi in Paris, beside SAN, the Santander ADR. Their issuer-layer holders are under those keys in the holders index. Their SEC-layer holders are in holders_sec_nport of the shard of their first character (/api/v1/holders/a.json for AZN.GB). An empty list when there is none.
      - string[]
    - `earlier_key_reads_as` string[], nullable, required: The keys this ticker reads as now, this ticker among them, when it was also the key of other lines before lines listed abroad were keyed with their market. CCO, Clear Channel Outdoor, was also Cameco's Toronto code, so it reads as CCO and CCJ; SAN reads as SAN, SAN.ES and SAN.FR. The same list as the aliases of the holders index. Null when the ticker was only ever this line.
    - `least_correlated` array[], nullable, required: The eight stocks least correlated with this one over the last 104 of the same weekly returns, as [ticker, correlation, name]. The candidates are stocks held by ten or more covered funds, so every neighbour is reachable through ETFs. A measurement of co-movement, not a recommendation.
      - union[]
        - union
          - number
          - string
    - `most_correlated` array[], nullable, required: The eight most correlated, same shape and same candidate set.
      - union[]
        - union
          - number
          - string
    - `weekly` number[], nullable, required: 156 weekly total returns as decimals, oldest first, ending at as_of: the same weeks as the fund files, so a stock and a fund correlate with the same arithmetic as two funds. A week is null when its return cannot be computed, because the stock's prices begin later or a weekly close is missing. At least 110 of the 156 are numbers. It is an empty list for a stock with fewer that has a file by the rule of this endpoint: its vol, beta, mdd3, r3 and r5 are then null and its correlated stocks empty lists.
    - `weeks_end` string, nullable, required: The last date covered by the weekly series.
    - `license` string, nullable, required: The licence the data is published under.
    - `attribution` string, nullable, required: How to credit the data: a link to the page cite_as names where the medium allows one, the name where it does not.
    - `source` string, nullable, required: Where the method behind these figures is written down.

## Other responses

- `301`: The address was not written the way the file is: an upper case ticker, a share class written BRK-B or BRK/B, a missing .json, or punctuation at the end. Follow the Location header (curl -L).
- `304`: Not modified: the ETag of your copy, sent in If-None-Match, is still current. Files are cached five minutes.
- `404`: No covered fund holds this key: a security they hold with no stock file answers 200 with coverage holders_only. An old key that now reads as keys with their market (7203) gets them in reads_as, from the aliases of holders, the shard of its first character. reason is_a_fund when the ticker is a covered fund (see fund).
- `503`: The file could not be served just then: retry after a minute. uptime says whether the site fails its own checks.

---

[API](https://skmtc.dev/tickerinside/apis/tickerinside-api.md) · [All operations](https://skmtc.dev/tickerinside/apis/tickerinside-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tickerinside/apis/tickerinside-api/revisions/4dae3d8c4119?raw)
