---
title: "List Assets"
method: GET
path: "/v1/assets"
tags: ["Assets"]
---

# List Assets

`GET /v1/assets`

## Request

- Base URL: `https://api.ensemble.markets` (the document declares no server; this is the origin it was published from)
- URL: `https://api.ensemble.markets/v1/assets`
- Auth: HTTP bearer

Screen the catalog. Structured filters AND together with `q` (ticker or
full text). `tags` matches any of its values, `tags_all` requires every
one, `tags_none` excludes any of them; all accept only the closed
vocabulary, which `include=facets` returns by dimension.
`country` is the single country named by the fund (germany, japan, …);
a broader region does not match. `price_coverage` separates a catalog
seed from stored bars, and `tax_evidence` is unclassified when tax form
and legal structure are null. `min_market_cap` is a size floor on market
cap or fund AUM. Sort by `symbol`, `name`, `aum`, `expense_ratio`,
`leverage` or `first_price_date`.

## Query parameters

- `include` string[], nullable: facets: counts for the current filter set and the closed tag vocabulary
- `limit` integer: Rows per page
- `offset` integer: Rows to skip
- `q` string, nullable: Ticker or full-text search, composed with structured filters
- `type` string, nullable: Asset type: etf | fund | stock | crypto
- `exchange` string, nullable: Listing exchange code, e.g. US
- `sector` string, nullable: Stock sector (legacy data blob)
- `min_market_cap` integer, nullable: Minimum market cap or fund AUM, in USD
- `delisted` boolean: Include delisted assets
- `tax_form` string, nullable: 1099 | k1 | pfic (NULL excluded)
- `legal_structure` string, nullable: ric | uit | grantor_trust | commodity_pool | etn | closed_end_trust
- `asset_class` string, nullable: equity | fixed_income | commodity | currency | alternatives | asset_allocation
- `tags` string[], nullable: Match ANY of these tags. Descriptive `dimension:value` tags, repeatable or comma-separated (sector:energy, commodity:precious_metals, theme:gold_miners, region:us, size:large, bond:high_yield). An unrecognized tag is a 422.
- `tags_all` string[], nullable: Require ALL of these tags. Descriptive `dimension:value` tags, repeatable or comma-separated (sector:energy, commodity:precious_metals, theme:gold_miners, region:us, size:large, bond:high_yield). An unrecognized tag is a 422.
- `tags_none` string[], nullable: Exclude assets carrying ANY of these tags; untagged assets pass. Descriptive `dimension:value` tags, repeatable or comma-separated (sector:energy, commodity:precious_metals, theme:gold_miners, region:us, size:large, bond:high_yield). An unrecognized tag is a 422.
- `leverage_min` number, nullable: Signed leverage lower bound (inclusive)
- `leverage_max` number, nullable: Signed leverage upper bound (inclusive)
- `issuer` string, nullable: Issuer / fund family prefix (case-insensitive)
- `max_first_price_date` string, date, nullable: Require first_price_date on or before this day (history depth)
- `country` string, nullable: Single-country mandate read from the fund name. argentina, australia, austria, belgium, brazil, canada, chile, china, colombia, denmark, finland, france, germany, greece, hong_kong, iceland, india, indonesia, ireland, israel, italy, japan, kuwait, malaysia, mexico, netherlands, new_zealand, norway, philippines, poland, qatar, saudi_arabia, singapore, south_africa, south_korea, spain, sweden, switzerland, taiwan, thailand, turkey, united_arab_emirates, united_kingdom, vietnam. A broader region, a second country, or an unrecognized value does not match. Holdings are not consulted.
- `sort` string, nullable: symbol | name | aum | expense_ratio | leverage | first_price_date
- `order` string, nullable: asc | desc

## Response `200`

Successful Response

- AssetPage: One page of the catalog screener.
  - `data` AssetListItem[], required
    - `asset_class` string, nullable: equity, fixed_income, commodity, currency, alternatives, asset_allocation
    - `tags` string[]: Descriptive `dimension:value` tags, e.g. region:us, size:large, sector:energy, commodity:precious_metals, bond:high_yield, theme:gold_miners. Multi-valued because the facts are (a gold+miners fund carries both) and independent of the wrapper, so a 3x utilities fund still reads sector:utilities. Empty means unclassified.
    - `legal_structure` string, nullable: ric, uit, grantor_trust, commodity_pool, etn, closed_end_trust
    - `tax_form` string, nullable: 1099, k1, or pfic
    - `leverage` number, nullable: Signed target leverage multiple; reset frequency varies by product. SH = -1.0, UVXY = 1.5, DGP = 2.0
    - `issuer` string, nullable: Fund family / issuer name
    - `cik` string, nullable: SEC EDGAR CIK
    - `first_price_date` string, date, nullable: First daily bar. The stored history's first bar when bars are on file, otherwise the catalog seed. See price_coverage.
    - `last_price_date` string, date, nullable: Most recent daily bar: the later of the stored history edge and the catalog seed. price_coverage says which one you are looking at. An unread asset with no seed is null, which is not evidence of no prices.
    - `price_coverage` PriceCoverage, required: Seed dates versus the bars actually stored for this symbol.
      - `source` string, required: history | catalog | unread | empty
      - `fetched_at` string, date-time, nullable: When the stored bars were last written, if bars are on file
      - `history_first_price_date` string, date, nullable: First stored bar. Null when no bars are on file.
      - `history_last_price_date` string, date, nullable: Last stored bar. Null when no bars are on file.
      - `catalog_first_price_date` string, date, nullable: Catalog seed for the first bar, which can lag or lead the stored bars.
      - `catalog_last_price_date` string, date, nullable: Catalog seed for the last bar, which can lag or lead the stored bars.
      - `verification` string, required: How to read source. A seed is not a served edge.
    - `tax_evidence` TaxEvidence, required: Provenance for tax_form and legal_structure. Null columns are unclassified.
      - `status` string, required: classified | unverified | unclassified
      - `source` string, nullable: Classifier source. Required, with as_of, before status is classified.
      - `as_of` string, date, nullable: As-of date of the classification evidence. Null when unclassified.
      - `verification` string, required: Why this status was assigned. Unclassified is not 1099.
    - `country` string, nullable: Single-country mandate read from the name. Null when the name states a broader region, more than one country, or none. Funds that share a value are the same country exposure. Holdings are not consulted. The list filter names the accepted values.
    - `id` string, required: Asset ID (asset_... or legacy a-...)
    - `symbol` string, required
    - `name` string, required
    - `type` string, required: Asset type: etf | fund | stock | crypto
    - `exchange` string, required
    - `currency` string
    - `delisted` boolean
    - `updated_at` string, date-time, required
    - `data` object: Instrument-specific blob. List endpoints project this; GET returns it whole.
  - `total` integer, required: Assets matching the filters, across every page
  - `facets` AssetFacets: Counts within the current filter set, plus the vocabulary the tag filters accept.
    - `type` FacetBucket[]
      - `value` string, required
      - `count` integer, required
    - `tax_form` FacetBucket[]
      - `value` string, required
      - `count` integer, required
    - `legal_structure` FacetBucket[]
      - `value` string, required
      - `count` integer, required
    - `asset_class` FacetBucket[]
      - `value` string, required
      - `count` integer, required
    - `tags` FacetBucket[]: Tag counts, fully qualified (`sector:energy`); the head of a long tail
      - `value` string, required
      - `count` integer, required
    - `issuer` FacetBucket[]
      - `value` string, required
      - `count` integer, required
    - `dimensions` TagDimension[]: The closed tag vocabulary by dimension. A tag outside it is rejected, not approximated.
      - `dimension` string, required
      - `label` string, required
      - `question` string, required: What the dimension classifies
      - `applies_to` string[]: Asset classes it describes; empty means every class
      - `max_tags` integer, required: How many of its tags one asset may carry
      - `tags` string[], required: The exact strings `tags` and `tags_all` accept
      - `notes` string[]

## Other responses

- `4XX`: The request was refused; `error.type` says why
- `5XX`: The server failed; quote `X-Request-Id` when reporting it

---

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