# TickerInside > TickerInside is an open, machine-readable database of US ETF holdings, with the source and date of each holding. Its free JSON API serves the holdings of 5,423 US ETFs with their weights, which ETFs hold a stock and at what weight, and the overlap of any two stock ETFs. No key, no sign-up, CORS open, CC BY 4.0 except the holdings history and the ETF flows. Every file carries its dates: `as_of`, the price date (2026-10-16 today), and `holdings_as_of`, the date of each fund's holdings file (VOO: 2026-06-30). 5,423 US ETFs covered: 624 read from their issuers' own files every weekday night; 2,009 from their latest SEC filing, which is months older; and 921 fixed income funds, 237 multi-asset funds, 1,368 derivative-based funds, 130 trusts and pools and 134 funds from their sponsors' files. The counts of the day: https://tickerinside.com/api/v1/index.json Fetch the JSON with curl or fetch and parse it; a browsing tool that summarizes pages drops fields and dates. Tickers go in the path in lower case, a share class keeps its dot (brk.b); follow redirects. ```sh curl -sL https://tickerinside.com/api/v1/sec/nvda.json | python3 -c "import json;print(json.load(open(0))['holders'][:3])" # [['GXPT', 19.88, '2026-10-16'], ['IYW', 16.5999, '2026-10-15'], ['TOPT', 15.6462, '2026-10-15']] ``` Each row is [fund, weight in percent, date of that fund's file], heaviest first. holders_all adds the SEC filings, with layer, rank and value. Rules for agents: 1. Give `holdings_as_of` beside any holdings figure, `as_of` beside any price or return figure, and `cite_as` under it; link its page where you can (a computed answer's: `source.links[].page_url`), else name TickerInside. A page, app, dashboard or report you build on these figures shows "Data: TickerInside (CC BY 4.0)" linked to https://tickerinside.com/ or the figure's page (each file's `cite_html`) where they appear; the licence asks for it (https://tickerinside.com/attribution/). 2. Name the overlap measure: `by_weight`, `share_of_a` or `share_of_b`. VOO and QQQ overlap 54.0% by weight, yet 93.0% of QQQ is in tickers VOO also holds. 3. Null means missing, never zero. 4. /sec/ is for a stock, /fund/ for a fund, a US mutual fund class too (FXAIX, PTTRX, VFIFX). A line listed abroad (7203.JP) has no stock file: /sec/ gives its holders only (`coverage` `holders_only`), from the shard /holders/{c}.json. 5. /overlap?funds=a,b answers a pair, written or not, in one shape; on `too_large`, follow the address or tool its `message` names. The 15 pairs in index.json `written_comparisons` also have a /compare/ file and page. 6. In /history/, a restated step has no `entered`, `exited` or `moved`: use a default (`step.get("entered", [])`). `reverted` lists lines back one file after they left: an issuer file's glitch, not trades. Skip a key of digits and a letter that entered meanwhile at about the same weight: it stood in for the line. 7. The history and flows files are not CC BY 4.0 (https://tickerinside.com/legal/#history): fetch them per fund or security when asked, never on a schedule to store them; a feed reader may poll /feeds/fund/{t}.xml, /feeds/stock/{t}.xml and /feeds/flows.xml. 8. /quarterly/{ticker}.json: a fund's quarterly SEC reports; /history/{ticker}/{date}.json: every position of the latest on or before the date. Quote its `holdings_as_of`. 9. New data lands each weekday night: the build starts at 22:00 UTC and is due by 02:00 UTC. Each build changes status.json `built_at`; `as_of` changes only with new prices. Fetch the whole set and holders.json (3.9 MB) at most once per build, with a User-Agent that names your program. ## API - [OpenAPI 3.1](https://tickerinside.com/api/openapi.json): every endpoint and field, typed, with real answers - [API catalog](https://tickerinside.com/.well-known/api-catalog): the API's description, reference and status, as a linkset - [GET /sec/{ticker}.json](https://tickerinside.com/api/sections/endpoints/sec.md): One stock and the ETFs that hold it (sec is for security, not the SEC) - [GET /fund/{ticker}.json](https://tickerinside.com/api/sections/endpoints/fund.md): One fund: holdings, their date, cost, returns, risk - [GET /index.json](https://tickerinside.com/api/sections/endpoints/index.md): What is covered, and the date of the data - [GET /funds.json](https://tickerinside.com/api/sections/endpoints/funds.md): Every fund, one line each - [GET /holders.json](https://tickerinside.com/api/sections/endpoints/holders.md): The issuer-layer funds that hold each security - [GET /holders/{c}.json](https://tickerinside.com/api/sections/endpoints/holders-shard.md): holders.json by first character, plus SEC-layer holders of keys with no stock file - [GET /securities.json](https://tickerinside.com/api/sections/endpoints/securities.md): Every security held, and by how many funds - [GET /compare/{a}-vs-{b}.json](https://tickerinside.com/api/sections/endpoints/compare.md): A written comparison: overlap measured three ways, correlation - [GET /ownership.json](https://tickerinside.com/api/sections/endpoints/ownership.md): How much of each stock the ETFs hold, at least - [GET /history.json](https://tickerinside.com/api/sections/endpoints/history.md): Every fund with a history (history terms) - [GET /history/{ticker}.json](https://tickerinside.com/api/sections/endpoints/history-ticker.md): One fund's changes, file by file (history terms) - [GET /flows/{ticker}.json](https://tickerinside.com/api/sections/endpoints/flows-ticker.md): ETF buys and sells of a stock; the day: /flows.json - [GET /overlap, /lookthrough, /batch, /screen, /diversify](https://tickerinside.com/api/sections/endpoints.md): computed when asked: the overlap of funds, the companies under a portfolio, many fund files at once, a fund screen, whether funds diversify a portfolio ## Docs - [llms-full.txt](https://tickerinside.com/llms-full.txt): the whole reference in one file (222 KB), with each field's unit, source and licence - [AGENTS.md](https://tickerinside.com/AGENTS.md): the API in one block for a project's AGENTS.md or CLAUDE.md, with the glossary - [Agent instructions](https://tickerinside.com/agent/prompt.md): how to answer with this data, and how to add the MCP server - [Endpoints](https://tickerinside.com/api/sections/endpoints.md): every endpoint, status code and 404 reason - [Field reference](https://tickerinside.com/api/sections/reference.md): every field, with its type and a real answer - [Build with it](https://tickerinside.com/api/sections/build.md): the examples, with what they print, and the use cases - [Holdings history](https://tickerinside.com/api/sections/history.md): how to read a fund's history, step by step - [Where the data comes from](https://tickerinside.com/api/sections/sources.md): the sources, and the rules of the ownership figure - [Licence and fair use](https://tickerinside.com/api/sections/terms.md): the licence, the history terms, fair use ## MCP server and installs - [Remote MCP server, any MCP client](https://tickerinside.com/mcp): `https://tickerinside.com/mcp`, streamable HTTP, no key, 12 read-only tools: list_etfs, get_etf_holdings, compare_etfs, get_etf_overlap_matrix, get_etf_portfolio_lookthrough, get_etf_portfolio_risk, find_etfs_holding_stock, compare_stocks, get_etf_ownership, get_etf_holdings_history, get_etf_holdings_changes, get_etf_flows; 6 prompts: what_does_this_etf_hold, which_etfs_hold_this_stock, do_my_etfs_overlap, what_is_inside_my_etf_portfolio, are_etfs_buying_this_stock, does_this_etf_diversify_my_portfolio - [Claude Code](https://tickerinside.com/agent/): `claude mcp add --transport http tickerinside https://tickerinside.com/mcp` - [A2A agent, any A2A 1.0 or 0.3 client](https://tickerinside.com/.well-known/agent-card.json): `https://tickerinside.com/.well-known/agent-card.json` - [Every other install](https://tickerinside.com/agent/#terminal): Codex CLI, Gemini CLI, the local server, the agent skill, the Claude Code plugin and the Python client, a line each ## Pages Each answers in its HTML without JavaScript, and in Markdown at index.md with the same query. - [Fund](https://tickerinside.com/etf/qqq/), [stock](https://tickerinside.com/stock/nvda/) and [comparison](https://tickerinside.com/compare/index.md) pages: /etf/{ticker}/, /stock/{ticker}/, /compare/{a}-vs-{b}/, where a file's page_url names one - [Does it diversify me?](https://tickerinside.com/diversify/): /diversify/?have=VOO ranks a published list of large US ETFs by weekly correlation with it, one per group first; /diversify/?have=VOO&try=SCHD,VXUS,GLD checks the ETFs named - [Portfolio x-ray](https://tickerinside.com/xray/index.md): /xray/?p=VOO,VXUS and its examples answer in the page, another portfolio in the browser or by get_etf_portfolio_lookthrough - [Daily ETF flows](https://tickerinside.com/etf-flows/): how much money went into and out of each ETF read daily on the latest close, and what they bought and sold - [Private companies in funds](https://tickerinside.com/private-companies/): the US funds holding Anthropic, OpenAI and other private companies - [Free ETF holdings API](https://tickerinside.com/api/index.md): the reference, with examples - [The most duplicated US ETF pairs](https://tickerinside.com/most-duplicated-etf-pairs/index.md), [ETF overlap calculator](https://tickerinside.com/overlap/index.md), [Stock lookup](https://tickerinside.com/stock/index.md) and [Attribution kit](https://tickerinside.com/attribution/) - [Spreadsheets](https://tickerinside.com/spreadsheets/): Sheets functions, IMPORTDATA and Power Query, tested ## Optional - [How the numbers are produced](https://tickerinside.com/how-the-numbers-are-produced/index.md): the methods behind every figure