Fondos ETF spot
Una fila por cada fondo registrado de un activo: emisor, fecha de referencia, tenencias, activos netos, participaciones, NAV, precio de mercado, prima, comisión y flujo calculado por CoinBoss, o el motivo por el que el fondo no puede recopilarse.
/api/sd/etf/fundsSolicitud
Parámetros de consulta
| Nombre | Tipo | Obligatorio | Valor por defecto | Valores admitidos | Descripción |
|---|---|---|---|---|---|
| asset | string | Obligatorio | — | BTC, ETH, SOL, HYPE | Activo subyacente, sin distinción entre mayúsculas y minúsculas. `coin` se acepta como alias. Ejemplo: BTC |
Solicitud de ejemplo
curl -s "https://www.coinboss.com/api/sd/etf/funds?asset=BTC"Campos de la respuesta
La tabla de campos se genera a partir de respuestas reales, por lo que recoge exactamente lo que devuelve el endpoint. Las rutas usan a[] para los elementos de un array y {*} para los objetos cuya clave es un nombre dinámico, como una moneda o un exchange.
| Campo | Tipo | Unidad | Descripción |
|---|---|---|---|
| success | boolean | — | true cuando la solicitud se completó correctamente. En caso de fallo, el cuerpo es `{ success: false, code, error, request_id }`. |
| schema | string | — | Id de esquema de esta respuesta. Solo cambia cuando un campo existente cambia de significado o de tipo. |
| now | number | ms | Hora del servidor en el momento de generar la respuesta. |
| asset | string | — | Activo subyacente. |
| as_of | string | — | Fecha de referencia del emisor más reciente entre los fondos cubiertos. |
| expected_as_of | string | — | Día de negociación de EE. UU. más reciente cuyo plazo de publicación ya ha vencido. |
| funds_total | number | — | Fondos registrados para el activo. |
| funds_covered | number | — | Fondos con datos frescos del emisor. |
| funds | array | — | Una fila por fondo registrado, incluidos los fondos que no pueden recopilarse. |
| funds[] | object | — | Una fila por fondo registrado, incluidos los fondos que no pueden recopilarse. |
| funds[].ticker | string | — | Ticker del fondo. |
| funds[].issuer | string | — | Id del emisor del fondo. |
| funds[].name | string | — | Nombre del fondo. |
| funds[].status | string | — | OK, STALE, ERROR o UNAVAILABLE. |
| funds[].as_of_date | string|null | — | Fecha de referencia del emisor de la fila. |
| funds[].holdings_coin | number|null | coin | Monedas en cartera, según lo divulgado por el emisor. |
| funds[].holdings_usd | number|null | USD | Valor de mercado de las tenencias, según lo divulgado por el emisor. |
| funds[].ref_price | number|null | USD | Precio de referencia por moneda utilizado por el emisor. |
| funds[].aum_usd | number|null | USD | Activos netos del fondo. |
| funds[].aum_src | string|null | — | Cómo se obtuvieron los activos netos: `reported`, `nav_x_shares` o `holdings_mv_sum`. |
| funds[].shares_out | number|null | shares | Participaciones en circulación. |
| funds[].shares_src | string|null | — | Cómo se obtuvieron las participaciones en circulación: `reported` o derivadas de los activos netos y el NAV. |
| funds[].nav | number|null | USD | Valor liquidativo por participación. |
| funds[].market_price | number|null | USD | Precio de mercado de cierre por participación. |
| funds[].premium_pct | number|null | % | Prima (+) o descuento (−) del precio de mercado respecto al NAV, tal como lo publica el emisor. |
| funds[].fee_pct | number|null | % | Comisión anual del patrocinador; `null` cuando no se publica. |
| funds[].flow_usd | number|null | USD | Creación / reembolso neto del fondo en su fecha de flujo. Método de CoinBoss. |
| funds[].flow_shares | number|null | shares | Variación de las participaciones en circulación. |
| funds[].flow_coin | null | coin | Variación de las tenencias en monedas; incluye el devengo de comisiones pagado en moneda, solo a título informativo. |
| funds[].flow_method | string|null | — | Fórmula utilizada: `shares_x_nav` o `aum_nav_ratio_t1`. |
| funds[].flow_as_of | string|null | — | Fecha en la que se contabiliza el flujo. |
| funds[].flow_obs_date | string|null | — | Fecha de referencia de la más reciente de las dos filas utilizadas. |
| funds[].flow_prev_date | string|null | — | Fecha de referencia de la más antigua de las dos filas utilizadas. |
| funds[].flow_note | string|null | — | Por qué el flujo falta o es especial (por ejemplo `no_previous_row`, `multi_day_gap`). |
| funds[].is_stale | boolean|null | — | True cuando los datos son más antiguos que su ventana de frescura. |
| funds[].source_url | string|null | — | Endpoint del emisor del que se recopiló la fila (solo linaje). |
| funds[].observed_at | number|null | ms | Marca de tiempo que la fuente asigna a los datos. |
| funds[].received_at | number|null | ms | Hora en que el recolector de CoinBoss recibió los datos. |
| funds[].unavailable_reason | string|null | — | Código de motivo cuando el fondo no puede recopilarse. |
| funds[].unavailable_detail | string|null | — | Explicación cuando el fondo no puede recopilarse. |
| coverage | object | — | Qué se incluye y qué no en las cifras. Conviene revisarlo antes de comparar totales con otra fuente. |
| coverage.included_exchanges | array | — | Fuentes cuyos datos frescos se incluyen. |
| coverage.included_exchanges[] | string | — | Fuentes cuyos datos frescos se incluyen. |
| coverage.unavailable | array | — | Fuentes que no pudieron incluirse, cada una con su motivo. Nunca se cuentan como 0. |
| coverage.unavailable[] | object | — | Fuentes que no pudieron incluirse, cada una con su motivo. Nunca se cuentan como 0. |
| coverage.unavailable[].exchange | string | — | Id del exchange (en minúsculas). |
| coverage.unavailable[].issuer | string | — | Id del emisor del fondo. |
| coverage.unavailable[].reason | string | — | Código de motivo legible por máquina. |
| coverage.unavailable[].detail | string | — | Explicación del motivo legible por personas. |
| coverage.stale_excluded | array | — | Filas excluidas porque su última actualización está fuera de la ventana de frescura. vacío en las muestras usadas para generar esta tabla |
| method | object | — | Enunciado en texto plano de las fórmulas utilizadas en esta respuesta, con una entrada por campo. |
| method.holdings_coin_total | string | — | Nota de fórmula de `holdings_coin_total`, en texto plano. |
| method.aum_usd_total | string | — | Nota de fórmula de `aum_usd_total`, en texto plano. |
| method.net_flow_usd | string | — | Nota de fórmula de `net_flow_usd`, en texto plano. |
| method.net_flow_missing | string | — | Nota de fórmula de `net_flow_missing`, en texto plano. |
| method.flow_coin | string | — | Nota de fórmula de `flow_coin`, en texto plano. |
| method.premium_pct | string | — | Nota de fórmula de `premium_pct`, en texto plano. |
| method.is_stale | string | — | Nota de fórmula de `is_stale`, en texto plano. |
| method.units | string | — | Nota de fórmula de `units`, en texto plano. |
| meta | object | — | Linaje y frescura de esta respuesta. |
| meta.schema | string | — | Id de esquema de esta respuesta. Solo cambia cuando un campo existente cambia de significado o de tipo. |
| meta.source | array | — | Endpoints públicos de origen de los que se recopilaron los datos. |
| meta.source[] | object | — | Endpoints públicos de origen de los que se recopilaron los datos. |
| meta.source[].exchange | string | — | Id del exchange (en minúsculas). |
| meta.source[].endpoint | string | — | Endpoint público de la fuente que lee el recolector (se muestra por linaje; los clientes nunca lo llaman). |
| meta.observed_at | number | ms | Marca de tiempo que la fuente asigna a los datos. |
| meta.received_at | number | ms | Hora en que el recolector de CoinBoss recibió los datos. |
| meta.fetched_at | number | ms | Hora en que se compuso esta respuesta. |
| meta.window | string | — | Ventana temporal que cubren las cifras. |
| meta.quality | string | — | FRESH, PARTIAL, STALE, BROKEN o UNAVAILABLE, según las marcas de tiempo de los datos y la cobertura. |
| meta.is_stale | boolean | — | True cuando los datos son más antiguos que su ventana de frescura. |
| meta.cache_ttl_s | number | s | Tiempo de vida en caché de esta respuesta. |
| meta.fallback | string | — | Qué devuelve el endpoint cuando falla el recolector o una fuente. |
Generada 2026-11-11 23:00 UTC a partir de 3 respuestas reales.
Respuesta de ejemplo
/api/sd/etf/funds?asset=BTC · Respuesta real capturada 2026-11-13 03:58:17 UTC. Los arrays y mapas largos se abrevian para su visualización: funds tenía 12 elementos; meta.source tenía 5 elementos; coverage.unavailable tenía 7 elementos.
- "success"true
- "schema""coinboss.sd.etf/1"
- "now"1794542297570
- "asset""BTC"
- "as_of""2026-11-12"
- "expected_as_of""2026-11-11"
- "funds_total"12
- "funds_covered"5
- "funds"
- "coverage"
- "included_exchanges"
- "unavailable"
- "stale_excluded"
- "method"
- "holdings_coin_total""sum of issuer-reported coin holdings over covered (non-stale) funds only; NOT a whole-market total, see funds_covered/funds_total"
- "aum_usd_total""sum of fund net assets (USD) over covered funds; aum_src per fund: reported | nav_x_shares (NAV x shares outstanding) | holdings_mv_sum (sum of issuer holdings …"
- "net_flow_usd""own method, per fund between two consecutive issuer as-of rows: shares_x_nav = (shares_out[t] - shares_out[t-1]) x NAV[t], dated t; aum_nav_ratio_t1 (issuer pub…"
- "net_flow_missing""covered funds not included in net_flow_usd and why: no_previous_row (needs two consecutive issuer rows), t1_booking_available_next_trading_day (Franklin: flow o…"
- "flow_coin""holdings_coin[t] - holdings_coin[t-1]; includes daily sponsor-fee accrual paid in coin, informational only"
- "premium_pct""issuer-reported premium/discount to NAV in percent; null when the issuer does not publish it"
- "is_stale""fund as_of_date older than the trading day before expected_as_of (expected_as_of = latest NYSE trading day whose T+1 16:00 UTC publication deadline has passed)"
- "units""holdings in coins; aum/flow in USD; nav/market_price in USD per share; fee_pct/premium_pct in percent"
- "meta"
- "schema""coinboss.sd.etf/1"
- "source"
- "observed_at"1794441600000
- "received_at"1794537318126
- "fetched_at"1794542297570
- "window""latest"
- "quality""PARTIAL"
- "is_stale"false
- "cache_ttl_s"300
- "fallback""collector failure keeps the last issuer row with its real as_of_date; a fund whose as_of_date is more than 1 trading day behind the expected as-of is flagged is…"
Muestras verificadas
Además del ejemplo anterior, la sonda llama a este endpoint con estos parámetros y comprueba el esquema en cada ocasión.
| Parámetros | HTTP | Latencia | Resultado |
|---|---|---|---|
| asset=ETH | 200 | 3 ms | Correcto PARTIAL |
| asset=HYPE | 200 | 4 ms | Correcto PARTIAL |
| asset=DOGE | 400 | 2 ms | Correcto devuelve el error esperado |
Comprobado 2026-11-13 03:58:17 UTC
Detalles
- Autenticación
- Ninguna. Endpoint público.
- Límite de solicitudes
- 1200 solicitudes por minuto por IP
- Caché del servidor
- 5m
- Microcaché de borde
- 10s
- Frecuencia de actualización
- Tres rondas del recolector al día (02:35, 10:35, 16:35 UTC). Los emisores publican una vez por día de negociación de EE. UU., normalmente la tarde-noche de la fecha de negociación.
- Ventana
- Última fecha de referencia del emisor por fondo.
- Fuentes de datos
- Divulgaciones diarias publicadas por los propios emisores de los fondos (tenencias, activos netos, participaciones en circulación, NAV), recopiladas y almacenadas por CoinBoss (sd_etf_fund_daily). CoinBoss calcula el flujo neto a partir de esas divulgaciones.
- Cobertura de exchanges
- Solo se cubren los fondos cuyo emisor publica datos diarios legibles por máquina. `funds_total` y `funds_covered` indican cuántos; cada fondo no cubierto se lista en `coverage.unavailable` con el motivo. Los totales son sumas solo sobre los fondos cubiertos (`totals_scope = "covered_funds_only"`), no sobre todo el mercado.
- Paginación
- Sin paginación; se devuelven todos los fondos registrados del activo.
- Ordenación
- Ticker ascendente.
- Unidades
- Amounts in USD; holdings in units of the underlying coin; NAV and market price in USD per share; `premium_pct` and `fee_pct` in percent.
- Método
- `aum_src` tells how net assets were obtained: `reported`, `nav_x_shares` (NAV × shares outstanding) or `holdings_mv_sum` (sum of the issuer's holdings market values). `flow_method` tells which flow formula was used.
- Marcas de tiempo
- Milisegundos de época Unix (UTC), salvo que la descripción del campo indique otra cosa
- Formato de respuesta
- json
- Estabilidad
- Estable
- Disponible desde
- 2026-11-11
Estado en vivo
El endpoint informa de una calidad de datos PARTIAL — Cobertura parcial: varios emisores grandes no ofrecen una divulgación pública legible por máquina que pueda recopilarse desde un servidor. Sus fondos se listan como no disponibles y los totales cubren únicamente los fondos restantes. Compare `funds_covered` / `funds_total` antes de comparar los totales con otras fuentes.
Disponibilidad, últimos 30 días
100% de 407 comprobaciones superadas
Errores
Las llamadas fallidas tienen la misma estructura en todos los endpoints. La lista completa está en la página de errores. Errores y límites de solicitudes →
| Código | HTTP | Significado | Qué hacer |
|---|---|---|---|
| INVALID_PARAM | 400 | Falta un parámetro obligatorio o un valor no se acepta. `param` indica el nombre del parámetro cuando se conoce. | No reintente sin cambios; corrija la solicitud. |
| UNAUTHORIZED | 401 | Se envió la cabecera `CB-API-KEY`, pero la clave es desconocida o está revocada. Los datos públicos no necesitan clave: elimine la cabecera o use una clave válida. | No reintente sin cambios. |
| FORBIDDEN | 403 | La ruta no forma parte de la API pública (interna o solo para cuentas). | No reintente. |
| NOT_FOUND | 404 | Ruta desconocida, o la moneda / el exchange / el fondo solicitado no existe. | No reintente; compruebe la ruta y los identificadores en el catálogo. |
| RATE_LIMITED | 429 | Más solicitudes que el límite por minuto. `Retry-After` indica los segundos de espera. | Espere el tiempo de `Retry-After` y después reintente con espera progresiva. |
| INTERNAL | 500 | Error inesperado del servidor. El mensaje es genérico por diseño; cite `request_id` al informar del error. | Reintente una vez tras unos segundos; si persiste, infórmelo con el ID de solicitud. |
| UPSTREAM_FAILED | 503 | La fuente de datos de este endpoint no respondió a tiempo. No se devuelven cifras desactualizadas ni sustitutas en su lugar. | Reintente con espera progresiva; consulte la página de estado. |
| UNAVAILABLE | 501 / 503 | El conjunto de datos no está listo temporalmente (calentamiento de la caché) o el endpoint aún no tiene una fuente pública lícita. | Reintente más tarde; el catálogo marca los endpoints que no están disponibles por diseño. |
| REQUEST_FAILED | 200 | Algunos endpoints antiguos responden HTTP 200 con `success: false`. Compruebe siempre `success`, no solo el estado HTTP. | Depende del mensaje; trátelo como una solicitud fallida. |
Pruébelo
/api/sd/etf/fundsParcialstring — Underlying asset, case-insensitive. `coin` is accepted as an alias.
https://www.coinboss.com/api/sd/etf/funds?asset=BTCMás en esta categoría
- Fondos ETF spot /api/sd/etf/funds
- Historial de ETF spot /api/sd/etf/history
- Resumen de ETF spot (información de los emisores) /api/sd/etf/overview
- Flujos netos diarios de ETF spot por fondo /api/etf/detail
- Historial de flujos netos diarios de ETF spot /api/etf/flows
- Detalle de un ETF /api/etf/fund/:ticker
- Lista de fondos ETF /api/etf/funds
- Tenencias de monedas de los ETF por fondo /api/etf/holdings
- Productos ETF / fideicomiso de un emisor /api/etf/issuer
- Resumen de ETF /api/etf/overview
- Prima / descuento de los fideicomisos de Grayscale /api/grayscale/premium
- Volúmenes de los ETF basados en futuros /api/indicators/futures-etf-volumes