TickerInside Ownership Index.json API

The Ownership Index.json API from TickerInside — 1 operation(s) for ownership index.json.

Business capability
Market & Financial Data AE-230.20

Operations 1

GET /ownership-index.json ETF Ownership Index #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tickerinside:tickerinside-ownership-index-json-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tickerinside-ownership-index-json-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: TickerInside Ownership Index.json API
  version: '1'
  summary: Holdings of 5,433 US ETFs, which ETFs hold a stock, and overlap, as static JSON.
  description: TickerInside is an open, machine-readable database of US ETF holdings, with the source and date of each holding.
  termsOfService: https://tickerinside.com/terms/
  contact:
    name: TickerInside
    email: contact@tickerinside.com
    url: https://tickerinside.com/api/
  license:
    name: CC BY 4.0
    identifier: CC-BY-4.0
servers:
- url: https://tickerinside.com/api/v1
  description: Static JSON files, and five answers computed from them when asked. No key.
security: []
tags:
- name: Ownership Index.json
paths:
  /ownership-index.json:
    get:
      operationId: getOwnershipIndex
      summary: ETF Ownership Index
      description: 'The ETF Ownership Index (ti-ownership-index/1). For each stock with a figure in the ownership ledger: the share of its shares outstanding held by the covered US ETFs, at least, the funds counted, and top3_share_pct, the share of those funds'' holdings held by the three funds holding the most. Then the market line, over one line per company, with the cap-weighted share of the companies'' market value the ETFs hold, the mean, the median and the quartiles, and the same line by sector. Its CSV twin, /api/v1/ownership-index.csv, has the same rows. The methodology, with a worked example, is at /etf-ownership/methodology/. A lower bound, like the ledger it reads: funds outside the coverage, and covered funds whose count could not be used, are not in it. Market caps weight the lines and enter no stock''s figure. Under CC BY 4.0.'
      externalDocs:
        url: https://tickerinside.com/api/#ownership-index
      responses:
        '200':
          description: 'The file. The example is a real answer, shortened: long lists and maps keep their first entries.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OwnershipIndex'
              example:
                name: TickerInside ETF Ownership Index
                as_of: '2026-10-12'
                method: ti-ownership-index/1
                ledger_method: ti-ownership/1
                method_url: https://tickerinside.com/api/v1/methods.json
                methodology: https://tickerinside.com/etf-ownership/methodology/
                holdings_dates:
                  oldest: '2026-01-31'
                  newest: '2026-10-12'
                shares_outstanding_dates:
                  oldest: '2025-10-21'
                  newest: '2026-09-25'
                caps_as_of: '2026-10-09'
                count: 3592
                columns:
                - ticker
                - company
                - sector
                stocks:
                - - EU
                  - enCore Energy Corp.
                  - null
                - - ATEN
                  - A10 Networks, Inc.
                  - null
                - - URG
                  - Ur Energy Inc
                  - null
                market:
                  companies: 3481
                  cap_weighted_pct: 11.41
                  mean_pct: 10.69
                  median_pct: 9.96
                  p25_pct: 3.72
                  p75_pct: 16.53
                  companies_without_cap: 246
                  cap_b: 85003.6
                sectors:
                - sector: Communication Services
                  companies: 18
                  cap_weighted_pct: 9.92
                  mean_pct: 12.76
                  median_pct: 12.53
                  p25_pct: 9.96
                  p75_pct: 14.46
                  companies_without_cap: 0
                  cap_b: 7590.1
                - sector: Consumer Discretionary
                  companies: 47
                  cap_weighted_pct: 10.29
                  mean_pct: 13.89
                  median_pct: 13.62
                  p25_pct: 11.8
                  p75_pct: 16.03
                  companies_without_cap: 0
                  cap_b: 6706.1
                - sector: Consumer Staples
                  companies: 31
                  cap_weighted_pct: 11.97
                  mean_pct: 15.16
                  median_pct: 14.79
                  p25_pct: 13.21
                  p75_pct: 17.13
                  companies_without_cap: 0
                  cap_b: 3408.5
                class_basis_left_out: 90
                concentration_min_funds: 6
                concentration_not_published:
                  fewer_than_6_funds: 431
                  one_fund_dominant: 5
                  split_under_3_funds: 1188
                held_back: null
                failed: false
                history: https://tickerinside.com/api/v1/ownership-index/history.json
                csv: https://tickerinside.com/api/v1/ownership-index.csv
                note: 'Each row of stocks is described by columns: ticker; company; sector, where the price data gives one (the companies of its S&P 500 list); basis, company when the percent is of the company''s shares outstanding, every class counted, class when it is of the ticker''s class alone; pct_lower_bound, at least this percent held by the covered US ETFs (the ledger''s figure); funds_counted; top3_share_pct, the share of those funds'' holdings held by the three funds holding the most, null under 6 funds or where a published sum would give back one fund''s count (concentration_not_published); holdings_newest, the newest holdings date counted; shares_outstanding_as_of, the date of the SEC''s count. market and sectors are over one line per company on a company basis, weighted by market cap for cap_weighted_pct. The changes over 5 and 20 market days are in the history file, under the history terms. A measurement, not investment advice.'
                cite_as: 'TickerInside, ETF Ownership Index (ti-ownership-index/1) of 2026-10-12: at least 11.41% of the combined market value of 3,481 US-listed companies held by the covered US ETFs, https://tickerinside.com/api/v1/ownership-index.json, CC BY 4.0'
                cite_html: <a href="https://tickerinside.com/api/v1/ownership-index.json">TickerInside</a> (https://tickerinside.com/api/v1/ownership-index.json)
                docs: https://tickerinside.com/api/#ownership-index
                license: CC BY 4.0
                attribution: Credit TickerInside with a link to this file, or to the page that shows the figure, wherever the medium allows a link, and by name where it does not. How you mark the link is up to you.
        '304':
          description: 'Not modified: the ETag of your copy, sent in If-None-Match, is still current. Files are cached five minutes.'
        '503':
          description: 'The file could not be served just then: retry after a minute. uptime says whether the site fails its own checks.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unavailable'
      tags:
      - Ownership Index.json
components:
  schemas:
    Unavailable:
      type: object
      additionalProperties: true
      required:
      - error
      - message
      - status
      - uptime
      properties:
        error:
          type: string
          const: unavailable
        message:
          type: string
        status:
          type: string
          description: The nightly report.
        uptime:
          type: string
          description: 'The live checks: whether the site fails its own checks.'
    OwnershipIndex:
      type: object
      additionalProperties: true
      properties:
        name:
          type:
          - string
          description: The index's name.
        as_of:
          type:
          - string
          - 'null'
          description: 'The date of the ownership ledger the index reads: its newest holdings date.'
        method:
          type:
          - string
          description: The method of the index, ti-ownership-index/1, in /api/v1/methods.json.
        ledger_method:
          type:
          - string
          description: The method of the figures it reads, ti-ownership/1.
        method_url:
          type:
          - string
          description: Where both methods are written down, with their test vectors.
        methodology:
          type:
          - string
          description: 'The methodology page: formulas, sources, dates, limits and a worked example.'
        holdings_dates:
          type:
          - object
          - 'null'
          additionalProperties: true
          properties:
            oldest:
              type:
              - string
            newest:
              type:
              - string
          description: The oldest and newest holdings dates counted across the stocks.
        shares_outstanding_dates:
          type:
          - object
          - 'null'
          additionalProperties: true
          properties:
            oldest:
              type:
              - string
            newest:
              type:
              - string
          description: The oldest and newest dates of the SEC's counts of shares outstanding used.
        caps_as_of:
          type:
          - string
          - 'null'
          description: The price date of the market caps that weight the lines; they enter no stock's figure.
        count:
          type:
          - integer
          description: How many stocks have a figure, the rows of stocks.
        columns:
          type: array
          items:
            type: string
          description: The names of the places of each row of stocks.
        stocks:
          type: array
          items:
            type: array
            items:
              type:
              - string
              - number
              - integer
              - boolean
              - 'null'
          description: One row per stock with a figure, most held first, as columns names them.
        market:
          type:
          - object
          - 'null'
          additionalProperties: true
          properties:
            companies:
              type:
              - integer
              description: Companies in the line, one per company on a company basis.
            cap_weighted_pct:
              type:
              - number
              - 'null'
              description: 'Sum of each company''s figure times its market cap over the sum of their caps, rounded down: the share of their combined market value held by the covered US ETFs, at least.'
            mean_pct:
              type:
              - number
              - 'null'
              description: The mean of the companies' figures, rounded down.
            median_pct:
              type:
              - number
              - 'null'
              description: The median company's figure.
            p25_pct:
              type:
              - number
              - 'null'
              description: The first quartile, by nearest rank.
            p75_pct:
              type:
              - number
              - 'null'
              description: The third quartile, by nearest rank.
            companies_without_cap:
              type:
              - integer
              description: Companies without a market cap, in the mean and quartiles and left out of cap_weighted_pct.
            cap_b:
              type:
              - number
              - 'null'
              description: The companies' combined market cap, in billions of dollars.
          required:
          - companies
          - cap_weighted_pct
          - mean_pct
          - median_pct
          - p25_pct
          - p75_pct
          - companies_without_cap
          - cap_b
          description: 'The line over every company: described below.'
        sectors:
          type: array
          items:
            type: object
            additionalProperties: true
            properties:
              sector:
                type:
                - string
                description: The sector, as the price data names it.
              companies:
                type:
                - integer
                description: Companies in the line, one per company on a company basis.
              cap_weighted_pct:
                type:
                - number
                - 'null'
                description: 'Sum of each company''s figure times its market cap over the sum of their caps, rounded down: the share of their combined market value held by the covered US ETFs, at least.'
              mean_pct:
                type:
                - number
                - 'null'
                description: The mean of the companies' figures, rounded down.
              median_pct:
                type:
                - number
                - 'null'
                description: The median company's figure.
              p25_pct:
                type:
                - number
                - 'null'
                description: The first quartile, by nearest rank.
              p75_pct:
                type:
                - number
                - 'null'
                description: The third quartile, by nearest rank.
              companies_without_cap:
                type:
                - integer
                description: Companies without a market cap, in the mean and quartiles and left out of cap_weighted_pct.
              cap_b:
                type:
                - number
                - 'null'
                description: The companies' combined market cap, in billions of dollars.
            required:
            - sector
            - companies
            - cap_weighted_pct
            - mean_pct
            - median_pct
            - p25_pct
            - p75_pct
            - companies_without_cap
            - cap_b
          description: 'The line of each sector with at least 5 companies, by name: the same fields and sector.'
        class_basis_left_out:
          type:
          - integer
          description: How many figures of one class alone are in stocks and left out of the lines.
        concentration_min_funds:
          type:
          - integer
          description: The fewest funds counted for a top3_share_pct.
        concentration_not_published:
          type: object
          additionalProperties:
            type: integer
          description: How many stocks have a null top3_share_pct, by reason (refusals of ti-ownership-index/1 in methods.json).
        held_back:
          type:
          - object
          - 'null'
          additionalProperties: true
          description: 'Set when tonight''s ledger was held back by its checks: the index then reads the last ledger that passed.'
        failed:
          type:
          - boolean
          description: 'True when the index could not be computed tonight: no rows and no lines, the history as it was.'
        history:
          type:
          - string
          description: The daily history, with the changes over 5 and 20 market days (history terms).
        csv:
          type:
          - string
          description: The rows of stocks as CSV, the same columns.
        note:
          type:
          - string
          description: How to read the file.
        cite_as:
          type:
          - string
          - 'null'
          description: 'A citation line: the index, its date, the market line and this file''s address.'
        cite_html:
          type:
          - string
          description: 'The credit as HTML: a link to this file, then its address.'
        docs:
          type:
          - string
          description: Where the file is documented.
        license:
          type:
          - string
          description: CC BY 4.0.
        attribution:
          type:
          - string
          description: Credit TickerInside with a link to this file, or to the page that shows the figure, wherever the medium allows a link, and by name where it does not. How you mark the link is up to you.
      required:
      - name
      - as_of
      - method
      - ledger_method
      - method_url
      - methodology
      - holdings_dates
      - shares_outstanding_dates
      - caps_as_of
      - count
      - columns
      - stocks
      - market
      - sectors
      - class_basis_left_out
      - concentration_min_funds
      - concentration_not_published
      - held_back
      - failed
      - history
      - csv
      - note
      - cite_as
      - cite_html
      - docs
      - license
      - attribution
externalDocs:
  description: The reference, with examples and recipes
  url: https://tickerinside.com/api/