API para desenvolvedores
API REST para mercados, análise técnica e notícias — os mesmos dados deste site. Especificação OpenAPI (JSON)
Autenticação
Cada requisição precisa de uma chave de API no cabeçalho Authorization.
curl -H "Authorization: Bearer gcs_YOUR_KEY" \ "https://getcoinsight.com/api/v1/markets?limit=10"
Crie e gerencie chaves no seu perfil
Cotas diárias
| Free | 100 requisições/dia |
| Radar | 1.000 requisições/dia |
| Pro | 10.000 requisições/dia |
| Trader+ | 100.000 requisições/dia |
Todos os planos incluem acesso à API, inclusive o Free. /analysis retorna candles em tempo real em todos os planos; /fundamental exige um plano com análise fundamentalista (Pro ou superior). Todas as chaves de uma conta compartilham uma cota diária, com limite de pico de 60 solicitações por minuto.
As respostas incluem os cabeçalhos X-RateLimit-Limit e X-RateLimit-Remaining. Acima da cota → HTTP 429.
Endpoints
GET /api/v1/markets?limit=100Principais moedas por capitalização: preço, capitalização, volume, variação 1h/24h/7d.
GET /api/v1/candles?symbol=btc&id=bitcoin&interval=1h&limit=300Velas OHLCV (da mais antiga, horário da barra em segundos unix) — exatamente a série usada pelo /analysis, até a janela de histórico do seu plano.
GET /api/v1/analysis?symbol=btc&id=bitcoin&interval=1hSnapshot técnico: preço, tendência, RSI/ADX/ATR, consenso de AT, regime, pontuação composta. Intervalos: 1m–1M.
GET /api/v1/fundamental?assetId=bitcoinPontuação fundamental: percentil no grupo de pares em 5 categorias + histórico de 90 dias; sem assetId, lista das últimas pontuações. Requer plano com análise fundamental.
GET /api/v1/announcements?kind=listings&days=7Anúncios de listagem / deslistagem / cautela das exchanges (Binance, Bybit, OKX, Upbit, Bithumb) com o preço na publicação, 3 minutos depois e quando nosso radar o captou, e os movimentos em 1 h / 24 h / 7 d. Chaves Free veem uma linha 10 minutos após a detecção e os últimos 30 dias; Radar+ sem atraso e todo o arquivo desde 2021.
GET /api/v1/news?limit=30Manchetes cripto agregadas (CoinDesk, Cointelegraph, Decrypt, The Block, Bitcoin Magazine).
GET /api/v1/presetsPresets do screener: id, nome, os filtros de cada um, o lado da operação e quais filtros seu plano descartaria.
GET /api/v1/funding?limit=100&sort=fundingAbsFunding de perpétuos (equivalente a 8 h, Binance/Bybit) comparado com Bybit/OKX/Hyperliquid, basis, open interest e sua variação em 1h/4h/24h. Ordenação: rank, funding, fundingAbs, oiUsd, oiChangePct.
GET /api/v1/screener?preset=oversold_reversal&interval=4hRoda um screen: um preset e/ou filtros em 15m–1w no universo do seu plano. Retorna as correspondências atuais com pontuação, níveis do setup e o ticker do TradingView.
Todos os endpoints retornam JSON: { "data": … } em caso de sucesso, { "error": "code" } caso contrário. CORS aberto.
Toda resposta autenticada também traz X-RateLimit-Reset (segundos unix do próximo reset, 00:00 UTC). Respostas 429 e 502 trazem Retry-After em segundos — aguarde esse tempo; nunca repita um 4xx sem mudanças. Símbolo desconhecido → 404 unknown_symbol. Dentro da v1 campos só são adicionados, nunca removidos ou com tipo alterado.
O screener também pode responder 503 busy (todos os slots de varredura ocupados) ou 502 upstream_degraded (a maioria das moedas não pôde ser lida) — ambos trazem Retry-After e não consomem cota. Qualquer método além de GET recebe um 405 em JSON.
Para um bot, o webhook de anúncios abaixo é a melhor fonte: ele é enviado e reenviado. Consulta periódica de anúncios: passe since=<addedAt em ms> e, em cada chamada seguinte, o nextCursor da resposta anterior como cursor. As linhas vêm na ordem em que nosso radar as adicionou, então um aviso capturado tarde nunca é pulado; remova duplicatas pelo id. Sem since, as linhas vêm da publicação mais recente para a mais antiga — pagine com cursor enquanto hasMore for true. Uma consulta sem linhas não gasta unidade de cota uma vez a cada 10 segundos por conta (quotaCharged: false), então consultar a cada 10 segundos cabe em qualquer plano; uma resposta com linhas conta normalmente.
# 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"
Preços por ticker: priceAtAnnouncement e move1hPct / move24hPct / move7dPct partem do minuto da publicação — mantidos por compatibilidade, não é um preço negociável numa listagem rápida. priceAt3m com movesFrom3m (e movesFrom3mVsBtc, menos o movimento do BTC) parte de 3 minutos após a publicação — a base das estatísticas do site; priceAtDetection com movesFromDetection parte de quando nosso radar captou o aviso. Todo horizonte termina num mesmo instante, horizonsEndAt (minuto da publicação + 1 h / 24 h / 7 d): «1 h» desde +3 min dura 57 minutos, e um horizonte do qual restava menos de 75 % na nossa captação não tem movimento desde a detecção. Sem taxas, slippage ou funding.
Campos para bots (API e webhook): market (spot / perp / alpha / tradfi), quotes (os mercados de cotação citados no título, ex. KRW, BTC, USDT — vazio se não informados), tradingStartsAt (só quando o título indica um horário; senão null — o corpo do aviso não é analisado), detectedAt (quando nosso radar o viu pela primeira vez) e tradable — os códigos de mercado para operar: role notice = o mercado do aviso (INITUSDT, KRW-INIT, INIT-USD), role reference = o mercado Binance/Bybit de onde lemos os preços.
API do screener
Rode qualquer preset do screener ou seus próprios filtros por código — o mesmo motor, universo e limites de plano do site. Cada resultado traz os níveis do setup e um ticker do TradingView, pronto para um 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 pelo plano), limit. No máximo 6 varreduras 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. Atalhos numéricos: rsiMin, rsiMax, scoreMin, scoreMax, relVolumeMin, adxMin, adxMax, change24hMin, change24hMax, change7dMin, change7dMax, volumeMin.
Webhooks para bots de trading
Alertas, novas correspondências de filtros salvos e as ideias do dia podem ser enviados por POST para a sua própria URL https. Escolha o formato em Perfil → Notificações.
- JSON — uma requisição por notificação com campos estruturados (tipo de evento, símbolo, ticker do TradingView por corretora, direção, preço, timeframe, id do alerta, entrada/stop/alvos) mais os campos originais subject/text/url.
- 3Commas — uma requisição por sinal no formato do bot de sinais da 3Commas; cole o secret e o bot_uuid do seu bot no modelo.
- Cornix — um sinal em texto no estilo Cornix por evento (par, corretora, direção, entrada, take-profits, stop).
- Custom — seu próprio modelo com marcadores entre chaves duplas; nomes no estilo TradingView como ticker, exchange, close e interval também funcionam.
{ "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", … } ] }Modelo do bot de sinais da 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}}
O placeholder action é enter_long / enter_short SÓ para os sinais que você ativou para o bot: a opção Bot de um alerta (long, short ou seguir o lado do setup), “Enviar ao bot” de um filtro salvo (apenas setups confirmados em candle fechado) ou a chave das ideias do dia. Um cruzamento de preço nunca implica uma direção por si só. Todo o resto é informativo e nunca chega ao 3Commas nem ao Cornix. Cada sinal leva signal_id e o carimbo de tempo original; nunca é reenviado, nunca sai com mais de 5 minutos de atraso e no máximo o seu limite diário (≤ 10) sai a cada 24 h.
Alertas bracket: tocar a entrada envia enter_long / enter_short com o stop e os alvos do bracket; o stop (ou o stop móvel) e o último alvo enviam exit_long / exit_short — só para um bot que recebeu a nossa entrada. O Cornix recebe a entrada com stop e alvos e fecha por conta própria. Uma moeda sem mercado verificado em corretora, uma ação enviada ao 3Commas / Cornix, um short em mercado spot ou uma direção que contradiz os níveis do próprio sinal nunca são enviados como operação.
Toda requisição é assinada: X-GCS-Signature: sha256=HMAC(corpo, seu segredo). Formatos para bots enviam no máximo 10 sinais por notificação.
Webhook de anúncios (Radar e acima)
Cada aviso de listagem, deslistagem ou cautela que corresponde às suas configurações de anúncios é enviado por POST em JSON (event "announcement") quando nosso radar o capta — apenas formato JSON. Cada tentativa tem prazo de 8 segundos e redirecionamentos não são seguidos: responda 2xx rápido. Uma tentativa falha é repetida com espera crescente até 30 minutos, até 9 tentativas em cerca de 2 horas, então uma entrega pode chegar atrasada. Deduplique por eventId (também o cabeçalho X-Getcoinsight-Delivery; attempt e X-Getcoinsight-Attempt contam as tentativas) e julgue a atualidade por announcement.detectedAt ou firstAttemptAt — timestamp é a hora de envio dessa tentativa. Recupere o que faltou com /api/v1/announcements?since=…. Após 20 entregas falhas seguidas, o webhook é desligado e você recebe um aviso no sino.
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" } }