# GET /api/v1/funds.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 /funds.json`: every fund, one line each: name, issuer, category, size, cost, position count and the address of its file. https://tickerinside.com/api/v1/funds.json, and the files of the funds without a page, linked from one page, the largest of known size first: https://tickerinside.com/api/files/

## Response

Ticker, name, category, cost, position count, and whether the fund has a written page: the funds read from issuer files under funds, and those from SEC filings under sec_funds. The list to iterate before pulling fund files.

```json
{
  "as_of": "2026-10-16",
  "count": 626,
  "…": "2 more fields",
  "funds": [{"t": "AAXJ", "n": "iShares MSCI All Country Asia ex Japan ETF", "c": "Asia Pacific ex Japan", "cat_id": "asia-pacific-ex-japan", "er": 0.72, "p": 948, "issuer": "iShares", "aum_b": 4.0, "page": true, "url": "https://tickerinside.com/etf/aaxj/", "api": "https://tickerinside.com/api/v1/fund/aaxj.json"}, "… 625 more"],
  "sec_count": 2049,
  "…": "1 more field",
  "sec_funds": [{"t": "AAAA", "n": "Amplius Aggressive Asset Allocation ETF", "c": "Aggressive Allocation", "cat_id": "allocation-aggressive", "er": 0.49, "p": 43, "api": "https://tickerinside.com/api/v1/fund/aaaa.json", "report_date": "2026-07-31", "issuer": null, "aum_b": null, "net_assets": 278318309, "page": true, "url": "https://tickerinside.com/etf/aaaa/"}, "… 2,048 more"],
  "…": "8 more fields"
}
```

- `as_of` (string): The price date.
- `count` (integer): How many issuer-layer funds there are, the length of funds. Each has a /fund/ file.
- `with_a_page` (integer): How many funds have a page, in every list of this file.
- `note` (string): How to read the entries.
- `funds` (array of object): One entry per issuer-layer fund: t the ticker, n the name, c the category's name (Large Blend for US Large Blend, as before 9 October 2026), cat_id its id, er the expense ratio, p the number of positions. issuer is the fund's issuer, named as in index.json coverage.issuers, and aum_b its assets in billions of US dollars, as in its fund file; either can be null. page says whether it has a page, url is that page or null, and api is its file.
- `sec_count` (integer): How many SEC-layer funds there are, the length of sec_funds.
- `sec_note` (string): How to read sec_funds.
- `sec_funds` (array of object): One entry per SEC-layer fund: t, n, c, cat_id, er, p, issuer, aum_b and api as above, then report_date, the quarter end the filing describes, and net_assets, in US dollars on that date. er is null where the cost is not in the data, never zero, and aum_b is null unless the market data gives the fund's size; the filing's figure is net_assets. issuer is read from the fund's name and checked against the trust that filed it, or null when neither says. page and url as in funds.
- `sponsor_funds` (array of object): One entry per sponsor-file fund, as sec_funds.
- `prospectus_funds` (array of object): One entry per prospectus-file fund, as sec_funds, with filed and form.
- `bond_funds` (array of object): One entry per fixed income fund, as sec_funds; p counts its filing's lines.
- `multi_asset_funds` (array of object): One entry per multi-asset fund, as sec_funds.
- `derivative_funds` (array of object): One entry per derivative-based fund, as sec_funds; report_date is the quarter end its filing describes. The files of this and the next three lists are under /etf/, at each entry's api. In them, page and url are given only for a fund that has a page.
- `trust_funds` (array of object): One entry per trust or commodity pool, as sec_funds; report_date is the period its filing describes, null for a fund too new to have filed a report.
- `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.

## 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`.
