---
title: "ETF search & discovery (free)"
method: GET
path: "/data/etf/search"
tags: ["Funds Data Plane"]
---

# ETF search & discovery (free)

`GET /data/etf/search`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/data/etf/search`
- Auth: one of:
  - HTTP bearer
  - none

Free discovery endpoint for ETFs. Substring + prefix search over ticker / name across the ETF universe: the holdings catalog (`mcp/data/etf_master.json`) plus the priced and cascade funds listed by `/data/etf/universe`. Each hit carries `capabilities`. Symmetric to `/api/data/funds/search` and `/api/13f/filers/search`. Empty `q` returns the universe (capped at `limit`).

Ranking (higher = better): 100 exact ticker; 70 ticker prefix; 50 ticker substring; 40 name word-boundary prefix; 30 name substring. Public read; soft gateway auth.

## Query parameters

- `q` string
- `limit` integer

## Response `200`

ETF search results (possibly empty).

- object
  - `query` string
  - `n_results` integer
  - `n_universe` integer: Total ETFs in the catalog.
  - `schema_version` string
  - `results` object[]
    - `bw_etf_id` string, nullable: Null for funds without holdings.
    - `ticker` string
    - `name` string, nullable
    - `score` integer: Match score (higher = better).
    - `capabilities` EtfCapabilities: What the API can do with an ETF. Three capabilities, any combination per fund (docs/ETF_COVERAGE.md).
      - `cascade` boolean: Hedge leg in the ERM3 SPY / sector / subsector cascade.
      - `priced` boolean: Daily returns in the ETF return store: /ticker-returns, covariance, beta to SPY.
      - `priced_from` string, date, nullable: First date with a daily return.
      - `holdings` boolean: Look-through holdings: /data/etf/{ticker}/holdings, benchmark fit.
      - `holdings_as_of` string, date, nullable: Latest holdings report date (/data/etf/{ticker} only; null in lists).
      - `factor_role` string: market, sector, subsector, style, macro:<factor> or none.

---

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