API para desarrolladores
API REST para mercados, análisis técnico y noticias — los mismos datos que impulsan este sitio. Especificación OpenAPI (JSON)
Autenticación
Cada solicitud necesita una clave API en el encabezado Authorization.
curl -H "Authorization: Bearer gcs_YOUR_KEY" \ "https://getcoinsight.com/api/v1/markets?limit=10"
Crea y gestiona claves en tu perfil
Cuotas diarias
| Free | 100 solicitudes/día |
| Radar | 1000 solicitudes/día |
| Pro | 10.000 solicitudes/día |
| Trader+ | 100.000 solicitudes/día |
Todos los planes incluyen acceso a la API, también Free. /analysis devuelve velas en tiempo real en todos los planes; /fundamental requiere un plan con análisis fundamental (Pro o superior). Todas las claves de una cuenta comparten una cuota diaria, con un límite de ráfaga de 60 solicitudes por minuto.
Las respuestas incluyen los encabezados X-RateLimit-Limit y X-RateLimit-Remaining. Sobre la cuota → HTTP 429.
Endpoints
GET /api/v1/markets?limit=100Principales monedas por capitalización: precio, capitalización, volumen, cambio 1h/24h/7d.
GET /api/v1/candles?symbol=btc&id=bitcoin&interval=1h&limit=300Velas OHLCV (de la más antigua, hora de barra en segundos unix): la misma serie sobre la que calcula /analysis, hasta la ventana histórica de tu plan.
GET /api/v1/analysis?symbol=btc&id=bitcoin&interval=1hInstantánea técnica: precio, tendencia, RSI/ADX/ATR, consenso TA, régimen, puntuación compuesta. Intervalos: 1m–1M.
GET /api/v1/fundamental?assetId=bitcoinPuntuación fundamental: percentil dentro del grupo de pares en 5 categorías + historial de 90 días; sin assetId, lista de últimas puntuaciones. Requiere un plan con análisis fundamental.
GET /api/v1/announcements?kind=listings&days=7Anuncios de listados / exclusiones / precaución de los exchanges (Binance, Bybit, OKX, Upbit, Bithumb) con el precio en la publicación, 3 minutos después y cuando nuestro radar lo detectó, y los movimientos a 1 h / 24 h / 7 d. Las claves Free ven una fila 10 minutos después de la detección y los últimos 30 días; Radar+ sin retraso y todo el archivo desde 2021.
GET /api/v1/news?limit=30Titulares cripto agregados (CoinDesk, Cointelegraph, Decrypt, The Block, Bitcoin Magazine).
GET /api/v1/presetsPresets del screener: id, nombre, los filtros que aplica cada uno, su lado de operación y qué filtros descartaría tu plan.
GET /api/v1/funding?limit=100&sort=fundingAbsFunding de perpetuos (equivalente a 8 h, Binance/Bybit) comparado con Bybit/OKX/Hyperliquid, basis, interés abierto y su cambio en 1h/4h/24h. Orden: rank, funding, fundingAbs, oiUsd, oiChangePct.
GET /api/v1/screener?preset=oversold_reversal&interval=4hEjecuta un screen: un preset y/o filtros en 15m–1w sobre el universo de tu plan. Devuelve las coincidencias actuales con puntuación, niveles del setup y el ticker de TradingView.
Todos los endpoints devuelven JSON: { "data": … } si hay éxito, { "error": "code" } en caso contrario. CORS abierto.
Cada respuesta autenticada incluye además X-RateLimit-Reset (segundos unix del próximo reinicio, 00:00 UTC). Las respuestas 429 y 502 incluyen Retry-After en segundos: espera ese tiempo; nunca repitas un 4xx sin cambios. Un símbolo desconocido da 404 unknown_symbol. Dentro de v1 los campos solo se añaden, nunca se eliminan ni cambian de tipo.
El screener también puede responder 503 busy (todas las ranuras de escaneo ocupadas) o 502 upstream_degraded (no se pudo leer la mayoría de las monedas): ambas llevan Retry-After y no consumen cuota. Cualquier método distinto de GET recibe un 405 en JSON.
Para un bot, el webhook de anuncios de abajo es la mejor fuente: se envía y se reintenta. Consulta periódica de anuncios: pasa since=<addedAt en ms> y, en cada llamada siguiente, el nextCursor de la respuesta anterior como cursor. Las filas llegan en el orden en que nuestro radar las añadió, así que un aviso detectado tarde nunca se pierde; elimina duplicados por id. Sin since, las filas van de la publicación más reciente a la más antigua: pagina hacia atrás con cursor mientras hasMore sea true. Una consulta que no devuelve filas no gasta unidad de cuota una vez cada 10 segundos por cuenta (quotaCharged: false), así que consultar cada 10 segundos cabe en cualquier plan; una respuesta con filas cuenta como siempre.
# first call: everything added in the last hour, oldest first curl -H "Authorization: Bearer gcs_YOUR_KEY" \ "https://getcoinsight.com/api/v1/announcements?since=$(( $(date +%s) * 1000 - 3600000 ))" # every next call: the nextCursor of the previous response curl -H "Authorization: Bearer gcs_YOUR_KEY" \ "https://getcoinsight.com/api/v1/announcements?cursor=NEXT_CURSOR"
Precios por ticker: priceAtAnnouncement y move1hPct / move24hPct / move7dPct parten del minuto de publicación — se mantienen por compatibilidad, no es un precio negociable en un listado rápido. priceAt3m con movesFrom3m (y movesFrom3mVsBtc, menos el movimiento de BTC) parte de 3 minutos después de la publicación — la base de las estadísticas del sitio; priceAtDetection con movesFromDetection parte de cuando nuestro radar detectó el aviso. Todos los horizontes terminan en un mismo instante, horizonsEndAt (minuto de publicación + 1 h / 24 h / 7 d): «1 h» desde +3 min abarca 57 minutos, y un horizonte del que quedaba menos del 75 % al detectarlo no tiene movimiento desde la detección. Sin comisiones, deslizamiento ni funding.
Campos para bots (API y webhook): market (spot / perp / alpha / tradfi), quotes (los mercados de cotización que nombra el título, p. ej. KRW, BTC, USDT; vacío si no se indican), tradingStartsAt (solo si el título indica una hora; si no, null — el cuerpo del aviso no se analiza), detectedAt (cuándo lo vio nuestro radar por primera vez) y tradable — los códigos de mercado para operar: role notice = el mercado del aviso (INITUSDT, KRW-INIT, INIT-USD), role reference = el mercado de Binance/Bybit del que leemos los precios.
API del screener
Ejecuta cualquier preset del screener o tus propios filtros desde código — el mismo motor, universo y límites de plan que la web. Cada resultado incluye los niveles del setup y un ticker de TradingView, listo para un bot.
curl -H "Authorization: Bearer gcs_YOUR_KEY" \
"https://getcoinsight.com/api/v1/screener?preset=strong_uptrend&interval=4h&universe=100&limit=10"
# explicit filters (override the preset's):
curl -G -H "Authorization: Bearer gcs_YOUR_KEY" \
"https://getcoinsight.com/api/v1/screener" \
--data-urlencode 'filters={"rsiMax":35,"sma200":"above"}' \
--data-urlencode "interval=1h"{ "data": { "preset": "strong_uptrend", "interval": "4h", "universe": 100,
"scanned": 97, "matched": 7, "skippedYoung": 2, "errored": 1,
"scannedAt": "2026-10-01T18:30:08.283Z", "results": [ {
"id": "solana", "symbol": "SOL", "rank": 6, "price": 152.3, "compositeScore": 0.41,
"rating": "buy", "regime": "trending_up", "rsi": 61.2, "adx": 27.4, "atrPct": 2.1,
"tvTicker": "BINANCE:SOLUSDT.P",
"venue": { "exchange": "binance", "market": "perp", "symbol": "SOLUSDT" },
"setup": { "side": "long", "entry": 152.3, "stop": 146.9, "targets": [161.2, 168],
"rr": 1.6, "rrNet": 1.4, "viable": true, "status": "idea", "watchReason": null } } ] } }Parámetros: preset, filters (JSON), interval (15m, 1h, 4h, 1d, 1w), universe (limitado por tu plan), limit. Máximo 6 escaneos por minuto. preset: oversold_reversal, overbought_rejection, volume_spike, volume_dump, breakout, breakdown, strong_uptrend, strong_downtrend, trend_pullback, downtrend_rally, bearish_breakdown, overbought, deep_drawdown, momentum_7d, accumulation, bb_squeeze, mean_reversion, relative_strength, deriv_squeeze, short_squeeze, smart_money, multi_pillar, strong_shorts, range_long, range_short, dip_weekly_uptrend, oi_build_flat, ema_cross_btc_up. Atajos numéricos: rsiMin, rsiMax, scoreMin, scoreMax, relVolumeMin, adxMin, adxMax, change24hMin, change24hMax, change7dMin, change7dMax, volumeMin.
Webhooks para bots de trading
Las alertas, las nuevas coincidencias de filtros guardados y las ideas del día pueden enviarse por POST a tu propia URL https. Elige el formato en Perfil → Notificaciones.
- JSON — una petición por notificación con campos estructurados (tipo de evento, símbolo, ticker de TradingView por exchange, dirección, precio, temporalidad, id de alerta, entrada/stop/objetivos) más los campos originales subject/text/url.
- 3Commas — una petición por señal en formato de bot de señales de 3Commas; pega el secret y el bot_uuid de tu bot en la plantilla.
- Cornix — una señal de texto estilo Cornix por evento (par, exchange, dirección, entrada, take-profits, stop).
- Custom — tu propia plantilla con marcadores entre dobles llaves; también funcionan los nombres al estilo TradingView como ticker, exchange, close e interval.
{ "event": "notification", "type": "price_alert", "version": 2,
"subject": "…", "text": "…", "url": "https://getcoinsight.com/…", "timestamp": "2026-01-01T12:00:00.000Z",
"symbol": "BTC", "base": "BTC", "quote": "USDT", "coinId": "bitcoin",
"exchange": "binance", "market": "perp", "venueSymbol": "BTCUSDT", "ticker": "BINANCE:BTCUSDT.P",
"tickers": { "binance": "BINANCE:BTCUSDT.P", "bybit": "BYBIT:BTCUSDT.P", "okx": "OKX:BTCUSDT.P" },
"side": "long", "direction": "above", "price": 65000, "timeframe": "1h",
"alertId": "clx…", "alertType": "price_above", "threshold": 65000,
"entry": 65000, "stop": 63500, "targets": [67500, 70000], "rr": 1.7,
"assetUrl": "https://getcoinsight.com/coin/bitcoin?symbol=btc&interval=1h",
"signals": [ { "event": "price_alert", "symbol": "BTC", … } ] }Plantilla del bot de señales de 3Commas:
{
"secret": "PASTE_3COMMAS_SECRET",
"max_lag": "300",
"timestamp": "{{timenow}}",
"trigger_price": "{{close}}",
"tv_exchange": "{{exchange}}",
"tv_instrument": "{{ticker}}",
"action": "{{action}}",
"bot_uuid": "PASTE_BOT_UUID"
}Marcadores: {{event}} {{kind}} {{symbol}} {{base}} {{quote}} {{coin_id}} {{tv_symbol}} {{ticker}} {{exchange}} {{tv_exchange}} {{tv_instrument}} {{venue}} {{market}} {{venue_symbol}} {{pair}} {{pair_3commas}} {{side}} {{direction}} {{action}} {{exit_action}} {{intent}} {{price}} {{close}} {{timeframe}} {{interval}} {{alert_id}} {{alert_type}} {{threshold}} {{screen_id}} {{screen_name}} {{entry}} {{stop}} {{target1}} {{target2}} {{targets}} {{rr}} {{url}} {{timestamp}} {{timenow}} {{subject}} {{text}} {{signal_id}} {{test}} {{leverage}} {{disclaimer}}
El marcador action es enter_long / enter_short SOLO para las señales que activaste para el bot: la opción Bot de una alerta (largo, corto o seguir el lado del setup), «Enviar al bot» de un filtro guardado (solo setups confirmados con vela cerrada) o el interruptor de ideas diarias. Un cruce de precio nunca implica una dirección por sí solo. Todo lo demás es informativo y nunca llega a 3Commas ni a Cornix. Cada señal lleva signal_id y su marca de tiempo original; nunca se reenvía, nunca sale con más de 5 minutos de retraso y como máximo sale tu límite diario (≤ 10) cada 24 h.
Alertas bracket: tocar la entrada envía enter_long / enter_short con el stop y los objetivos del bracket; el stop (o el stop arrastrado) y el último objetivo envían exit_long / exit_short, solo a un bot que recibió nuestra entrada. Cornix recibe la entrada con su stop y objetivos y cierra por su cuenta. Una moneda sin mercado verificado en un exchange, una acción enviada a 3Commas / Cornix, un corto en un mercado spot o una dirección que contradice los niveles de la propia señal nunca se envían como operación.
Cada petición va firmada: X-GCS-Signature: sha256=HMAC(cuerpo, tu secreto). Los formatos para bots envían como máximo 10 señales por notificación.
Webhook de anuncios (Radar y superiores)
Cada aviso de listado, exclusión o precaución que coincide con tus ajustes de anuncios se envía por POST en JSON (event "announcement") cuando nuestro radar lo detecta — solo formato JSON. Cada intento tiene un plazo de 8 segundos y no se siguen redirecciones: responde 2xx rápido. Un intento fallido se reintenta con una espera creciente hasta 30 minutos, hasta 9 intentos en unas 2 horas, así que una entrega puede llegar tarde. Deduplica por eventId (también la cabecera X-Getcoinsight-Delivery; attempt y X-Getcoinsight-Attempt cuentan los intentos) y juzga la frescura por announcement.detectedAt o firstAttemptAt — timestamp es la hora de envío de ese intento. Recupera lo perdido con /api/v1/announcements?since=…. Tras 20 entregas fallidas seguidas, el webhook se desactiva y recibes un aviso en la campana.
POST <your https URL>
Content-Type: application/json
X-GCS-Signature: sha256=<hex HMAC-SHA256 of the raw body, your secret>
X-Getcoinsight-Delivery: announcement:binance:1234567
X-Getcoinsight-Attempt: 1
{ "event": "announcement", "type": "announcement", "version": 2,
"subject": "…", "text": "…", "url": "https://getcoinsight.com/…", "timestamp": "2026-10-26T09:00:04.120Z",
"eventId": "announcement:binance:1234567", "attempt": 1, "firstAttemptAt": "2026-10-26T09:00:04.100Z",
"disclaimer": "…", "signals": [],
"announcement": { "id": "binance:1234567", "exchange": "binance", "kind": "listing",
"title": "Binance Will List X (X)", "symbols": ["X"],
"publishedAt": "2026-10-26T09:00:00.000Z", "noticeUrl": "https://www.binance.com/…",
"market": "spot", "quotes": ["USDT"], "tradingStartsAt": null, "detectedAt": "2026-10-26T09:00:03.900Z",
"tradable": [ { "base": "X", "venue": "binance", "type": "spot", "symbol": "XUSDT", "role": "notice" } ],
"eventId": "announcement:binance:1234567", "attempt": 1, "firstAttemptAt": "2026-10-26T09:00:04.100Z" } }