# GET /api/v1/index.json

One endpoint of the TickerInside API, with data through 2026-10-16. Contents of the reference, each section and endpoint as a file: https://tickerinside.com/api/sections/index.md. The whole reference as Markdown: https://tickerinside.com/api/index.md

`GET /index.json`: what exists, every covered ticker, the coverage counts and the date of the data. Start here. https://tickerinside.com/api/v1/index.json

## Response

What exists, and the date of the data. Start here if you are pulling the whole set.

```json
{
  "as_of": "2026-10-16",
  "coverage": {"funds": 626, "securities_held": 16724, "…": "1 more field", "sec_nport": 2049, "sec_nport_periods": {"oldest": "2026-01-31", "newest": "2026-08-31"}, "…": "13 more fields"},
  "…": "1 more field",
  "tickers": ["AAXJ", "ACHP", "ACWI", "… 623 more"],
  "tickers_sec": ["AAAA", "AADR", "AAEQ", "… 2,046 more"],
  "…": "6 more fields",
  "written_comparisons": [{"pair": ["VOO", "VTI"], "url": "https://tickerinside.com/api/v1/compare/voo-vs-vti.json"}, "… 14 more"],
  "…": "5 more fields"
}
```

- `as_of` (string): The price date across the whole site.
- `coverage` (object): The coverage counts. funds: the issuer-layer funds. securities_held: the distinct securities they hold. what: the universe in words. sec_nport: the SEC-layer funds, with the oldest and newest quarter end their filings describe in sec_nport_periods, and how old their holdings are on the day of the build in sec_nport_age (the 10th to the 90th percentile in whole months, low_months to high_months, and in words, text); sec_nport_bonds, sec_nport_multi_asset, sec_nport_derivatives, trust_filings, sponsor_files and prospectus, the other layers. Then the figures every page prints: funds_total, every layer, the US ETFs covered; universe, the coverage measured against the US-listed ETFs (see universe.json); stocks_with_file, the stocks with a file under /sec/, and stocks_with_weekly_series, those whose file carries the weekly series, at least 110 of the 156 weekly returns; pages, the funds and stocks with a page; issuers, the issuers whose files are read, largest first.
- `endpoints` (object): The endpoints as URL templates, so a client can find them without reading the reference. fund answers for every fund; etf is the file of a fund listed under tickers_derivative, tickers_trust, tickers_bond, tickers_multi_asset, tickers_sponsor or tickers_prospectus. holders_shard is the template of the holders shards, {c} being the key's first character in lower case, a to z, or 0 for any other. It also gives the OpenAPI description (openapi), the reference in Markdown (docs_markdown), the nightly report (status) and the live checks (uptime).
- `tickers` (array of string): Every issuer-layer fund, as a sorted list: the funds read from their issuers' own files. This is the universe the census of pairs and the file ages count over; a stock page counts these funds and the funds of tickers_sec.
- `tickers_sec` (array of string): Every SEC-layer fund, as a sorted list: the other US stock ETFs, served from their latest SEC Form N-PORT filing. Each has a fund file like the funds above, dated to the quarter end its filing describes, and a page only in a published cohort.
- `tickers_derivative` (array of string): Every derivative-based fund, sorted. Its file is under /etf/.
- `tickers_trust` (array of string): Every trust and commodity pool that files no Form N-PORT, sorted. Its file is under /etf/.
- `tickers_bond` (array of string): Every fixed income fund, sorted. Its file is under /etf/.
- `tickers_multi_asset` (array of string): Every multi-asset fund, sorted. Its file is under /etf/.
- `tickers_sponsor` (array of string): Every sponsor-file fund, sorted.
- `tickers_prospectus` (array of string): Every prospectus-file fund, sorted.
- `written_comparisons` (array of object): The written comparisons: the pairs with a page written by hand, each with the URL of its JSON. A pair's file exists only in the order listed here. Any two tickers above can still be compared from their two fund files.
- `without_file` (object): The directory's tickers with no file, by the reason a fund address's 404 gives.
- `docs` (string): The reference for these endpoints.
- `license` (string): The licence the data is published under.
- `attribution` (string): How to credit the data: a link to this file where the medium allows one, the name where it does not.
- `terms` (string): The legal notice: who publishes, the licence of the current snapshots served here, and the separate terms of the historical archive.

## Errors and redirects

| Status | reason | Meaning | Next request |
|---|---|---|---|
| 200 |  | The file. | Read it. Every file carries its dates. |
| 204 |  | A browser's CORS preflight, an `OPTIONS` request, answered before any redirect: GET and HEAD from any origin, with the headers asked for, kept up to a day. | Nothing to do. |
| 301 |  | An upper case ticker, a share class written `BRK-B` or `BRK/B` (the file is `brk.b.json`), an address without `.json`, `/api/v1` alone, or punctuation copied from a sentence at its end. A key listed abroad with a hyphen, such as `SQM-B`, keeps it. A written comparison asked for in the other order leads to its file: `vym-vs-vig` to `vig-vs-vym.json`. A fund with no file under `/etf/` leads to its file under `/fund/`: `etf/voo.json` to `fund/voo.json`. `/stock/`, the name of the pages, leads to the stock files under `/sec/`: `stock/nvda.json` to `sec/nvda.json`. | Follow it (`curl -L`). `Location` gives the address. |
| 304 |  | Your `If-None-Match` matches the file's `ETag`. | Keep your copy. |
| 404 | `no_such_endpoint` | No endpoint at this address. | `covered`: `index.json`. |
| 503 |  | The file could not be served just then. The body's `error` is `unavailable`, with `Retry-After: 60`. | Retry after a minute. `uptime`: `uptime.json` says whether the site fails its own checks. |

Every 404 body is JSON. It holds `error`, always `not_covered`; `reason`, a code /contract/ lists; `ticker`, as asked for, or null when the address names no ticker; `message`; `docs`; and the follow-up address named above. Under /history/, it also holds `date` when a date was asked for. `before_history`, for a date before a fund's first file, is answered only once holdings at a date are served. A 400 body holds `error` (`bad_request`), `reason`, `message`, `docs`, and `parameter`, or `limit` and `asked`.
