TradingView — Market Data via APIs Publicas
Skill
premium para extraer datos de mercado de
TradingView
via sus
APIs publicas internas descubiertas por reverse-engineering —
sin
API key, sin autenticacion.
TradingView es la plataforma de market data + analisis tecnico + social
trading mas usada del mundo (>50M usuarios activos). Este skill expone:
- Scanner API con ~300 columnas: quote, indicadores tecnicos pre-calculados,
fundamentals, earnings, analyst targets, ratings BUY/SELL agregados.
- Symbol Search v3 con ISIN, CUSIP, CIK (joineable con SEC EDGAR).
- News Headlines (~200 noticias por simbolo, Dow Jones / Reuters / etc.).
- HTML scraping de 16+ subpages (, , ,
, , etc.) con extraccion de .
- Screener masivo con filtros + sort + paginacion (~100k+ instrumentos).
⚠️ Aviso Legal
- TradingView NO publica documentacion oficial de estas APIs. Pueden cambiar sin aviso.
- En ~6 años de tracking comunitario los cambios han sido graduales — la estructura del Scanner es estable desde 2017+.
- Respetar terminos de uso. Para uso comercial intensivo, contratar la REST API oficial (de pago).
- Los datos son delayed (~15 min tipico). Real-time va por WebSockets propietarios (no implementados aqui).
🚀 Quick start
bash
# Quote rapido
py scripts/fetch_tradingview.py quote NASDAQ:GGAL
# Todo-en-uno (6 requests combinadas)
py scripts/fetch_tradingview.py all NASDAQ:GGAL
# Screener masivo
py scripts/fetch_tradingview.py country Argentina --limit 30
py scripts/fetch_tradingview.py sector Finance --market america --limit 20
# News (~200 por simbolo)
py scripts/fetch_tradingview.py news NASDAQ:AAPL
# Symbol Search con ISIN/CUSIP/CIK
py scripts/fetch_tradingview.py search "Galicia"
Estructura del skill
skills/tradingview/
├── SKILL.md # Este archivo (guia rapida)
├── references/ # 8 documentos detallados
│ ├── REFERENCE.md # Overview general de la API
│ ├── SCANNER_COLUMNS.md # Catalogo de 130+ columnas con tablas
│ ├── SCANNER_FILTERS.md # Operaciones de filtro + queries complejos
│ ├── MARKETS_EXCHANGES.md # Mercados validos + exchanges por pais
│ ├── NEWS_API.md # News API deep dive
│ ├── SYMBOL_SEARCH.md # Symbol Search v3 deep dive
│ ├── HTML_SCRAPING.md # Extraccion de prs.init-data+json
│ └── COOKBOOK.md # 30 recetas listas para copy-paste
├── assets/ # 4 archivos JSON
│ ├── scanner_columns.json # Catalogo de columnas con descripciones
│ ├── column_groups.json # Bundles pre-armados por caso de uso
│ ├── markets.json # Mercados validos + cobertura
│ └── recommend_ratings.json # Mapeo Recommend.* a STRONG_BUY/etc
└── scripts/
└── fetch_tradingview.py # Script principal con 24 modos CLI
Endpoints disponibles (4 HTTP unicos, 24 modos CLI)
Scanner API (1 endpoint, 14 modos CLI)
POST https://scanner.tradingview.com/{market}/scan
| Modo | Bundle de columnas | Descripcion |
|---|
| (14 cols) | Quote basico |
| (30 cols) | Quote + indicadores + valuacion |
| (36 cols) | RSI, MACD, EMAs, SMAs, ratings |
| (17 cols) | Pivots mensuales (5 metodos) |
| (35 cols) | Balance + income + cashflow + ratios |
| (12 cols) | Earnings pasados + forecast |
| (10 cols) | Price targets + analyst recommendations |
| (18 cols) | Returns (W/1M/3M/6M/Y/YTD/5Y/All) + volatilidad + beta |
| (8 cols) | Yield + DPS + payout + crecimiento |
| (10 cols) | Float + institucional + insiders + short |
| custom | Screener generico con filtros + sort + paginacion |
| | Stocks de un pais |
| | Stocks de un sector |
| | Listar mercado completo |
Symbol Search v3 (1 endpoint, 1 modo)
GET https://symbol-search.tradingview.com/symbol_search/v3/
| Modo | Descripcion |
|---|
| Busqueda global con ISIN, CUSIP, CIK, logoid, exchange |
News API (1 endpoint, 3 modos)
GET https://news-headlines.tradingview.com/v2/headlines
| Modo | Descripcion |
|---|
| Headlines de un simbolo (hasta 200 items) |
| Headlines globales del mercado (hasta 200 items) |
| Detalle/body de una noticia (scraping HTML) |
HTML Scraping (1 endpoint, 1 modo)
GET https://es.tradingview.com/symbols/{EX}-{SYM}/{path}/
| Modo | Descripcion |
|---|
| Fetch HTML + extrae bloques |
Catalogos locales (3 modos)
| Modo | Descripcion |
|---|
| Listar columnas (todas o un grupo concreto) |
| Listar bundles pre-armados |
| Listar mercados validos |
Combinado (1 modo)
| Modo | Descripcion |
|---|
| Combina 6 requests (quote_extended + technicals + financials + earnings + targets + news) |
Uso rapido — ejemplos por categoria
Quote y tecnicos
bash
py scripts/fetch_tradingview.py quote NASDAQ:GGAL # 14 cols
py scripts/fetch_tradingview.py quote-extended NASDAQ:AAPL # 30 cols
py scripts/fetch_tradingview.py technicals NASDAQ:GGAL # 36 cols
py scripts/fetch_tradingview.py pivots NASDAQ:AAPL # 17 cols
py scripts/fetch_tradingview.py performance NYSE:JPM # returns W/1M/3M/6M/Y/YTD/5Y/All
Financials
bash
py scripts/fetch_tradingview.py financials NASDAQ:AAPL # balance + income + cashflow + ratios
py scripts/fetch_tradingview.py earnings NASDAQ:GGAL # past + forecast
py scripts/fetch_tradingview.py targets NASDAQ:NVDA # analyst targets + recos
py scripts/fetch_tradingview.py dividends NYSE:KO # yield + DPS + payout
py scripts/fetch_tradingview.py ownership NASDAQ:NVDA # float + inst + insiders + short
Screening
bash
# Filtros arbitrarios — pasar JSON con la sintaxis del Scanner
py scripts/fetch_tradingview.py screen \
--filter '[["sector","equal","Finance"],["market_cap_basic","greater",100000000000]]' \
--sort market_cap_basic:desc --limit 10
# Atajos
py scripts/fetch_tradingview.py country Argentina --limit 30
py scripts/fetch_tradingview.py sector Finance --market america --limit 20
py scripts/fetch_tradingview.py market crypto --limit 20
Symbol Search
bash
py scripts/fetch_tradingview.py search "GGAL" # auto type
py scripts/fetch_tradingview.py search "Apple" --type stocks --exchange NASDAQ
py scripts/fetch_tradingview.py search "BTC" --type crypto
py scripts/fetch_tradingview.py search "US3999091008" # por ISIN
News
bash
py scripts/fetch_tradingview.py news NASDAQ:AAPL # hasta 200 items
py scripts/fetch_tradingview.py news-global # global headlines
py scripts/fetch_tradingview.py story "/news/DJN_DN20260604009289:0/" # body de noticia
HTML scraping
bash
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL technicals # subpage HTML
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL financials-income-statement
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL options-chain
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL forecast
Catalogos
bash
py scripts/fetch_tradingview.py columns # todas las columnas
py scripts/fetch_tradingview.py columns technicals # un grupo
py scripts/fetch_tradingview.py groups # todos los bundles
py scripts/fetch_tradingview.py markets # mercados validos
Combinado
bash
py scripts/fetch_tradingview.py all NASDAQ:GGAL # 6 requests en 1
py scripts/fetch_tradingview.py all NASDAQ:GGAL -o ggal_full.json # guarda a archivo
Custom columns
bash
py scripts/fetch_tradingview.py quote NASDAQ:GGAL \
--columns "name,close,RSI,MACD.macd,Recommend.All,price_target_average"
Output / silencio
bash
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -o ggal_quote.json # archivo
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -q # silencioso
Formato de simbolos
| Donde | Formato | Ejemplos |
|---|
| Scanner / News / Search (JSON APIs) | | , , |
| HTML subpages | | (en URL) |
Conversion automatica: el script convierte
→
cuando arma URLs HTML.
Markets soportados
| Market | Cobertura | Tickers tipo |
|---|
| Todos los mercados (100k+) | Cualquier |
| US: NYSE, NASDAQ, AMEX, OTC (15k+) | |
| BCBA / BYMA (300+) | |
| B3 / Bovespa (500+) | |
| BME (200+) | |
| Borsa Italiana (400+) | |
| Xetra / FWB (1k+) | |
| LSE (2k+) | |
| Euronext Paris (800+) | |
| MOEX (200+) | |
| Cryptos (50k+) | |
| Forex pairs (1k+) | |
| Bonos globales (TVC) | |
Detalles completos en references/MARKETS_EXCHANGES.md.
Tipos de instrumento ( field)
| Tipo | Descripcion |
|---|
| Acciones comunes |
| Depositary Receipt (ADRs en US, CEDEARs en BCBA, BDRs en BMFBOVESPA) |
| Exchange-Traded Fund |
| Mutual fund |
| Producto estructurado |
| Bono |
| Criptomoneda |
| Par de monedas |
| Indice |
| Futuro |
| Opcion |
Ratings BUY/SELL (Recommend.*)
TradingView calcula 3 ratings agregados a partir de los indicadores:
| Campo | Calculado a partir de |
|---|
| TODOS los indicadores (medias moviles + osciladores) |
| Solo medias moviles (SMA/EMA 10..200, VWMA, Ichimoku, HullMA) |
| Solo osciladores (RSI, Stoch, MACD, ADX, CCI, BBP, UO, W%R, AO) |
Valores en
. Mapeo a buckets:
| Rango | Bucket | UI label |
|---|
| -1.00 a -0.50 | | Venta fuerte |
| -0.50 a -0.10 | | Venta |
| -0.10 a +0.10 | | Neutral |
| +0.10 a +0.50 | | Compra |
| +0.50 a +1.00 | | Compra fuerte |
El script tiene
para conversion directa.
Asset estructurado en
assets/recommend_ratings.json.
Flags principales
| Flag | Descripcion |
|---|
| Market del Scanner (default: ) |
| Columnas custom (override del bundle del modo) |
| Filtro JSON para (ver SCANNER_FILTERS.md) |
| Sort (ej: ) |
| Limite de resultados (default: 30) |
| Offset para paginacion (default: 0) |
| search_type para (, , , etc.) |
| Filtro exchange para |
| Idioma para news/search (default: ) |
| Guardar output a archivo (JSON o markdown) |
| / | Modo silencioso (sin logs INFO) |
Diferencial vs otros skills del repo
| Feature | TradingView | Yahoo Finance | Finnhub | Investing.com | Morningstar |
|---|
| API publica sin key | ✅ | ✅ | Freemium | ✅ | ✅ |
| Quote real-time | ⚠️ delayed | ⚠️ delayed | ✅ | ⚠️ delayed | ❌ |
| Indicadores tecnicos pre-calc (~30+) | ✅ UNICO | ❌ | ❌ | ❌ | ❌ |
| Ratings BUY/SELL agregados | ✅ UNICO | ❌ | ⚠️ | ⚠️ | ❌ |
| Pivots S/R (5 metodos) | ✅ UNICO | ❌ | ❌ | ❌ | ❌ |
| Financials | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| Analyst targets | ✅ | ⚠️ | ✅ | ✅ | ❌ |
| ISIN/CUSIP/CIK en search | ✅ UNICO | ❌ | ⚠️ | ❌ | ❌ |
| Screener multi-pais | ✅ (~100k+) | ⚠️ | ⚠️ | ⚠️ | ✅ |
| News | ✅ (200 items) | ✅ | ✅ | ✅ | ❌ |
| Cobertura cryptos | ✅ (50k+) | ⚠️ | ⚠️ | ✅ | ❌ |
Ventajas unicas de TradingView:
- Indicadores tecnicos pre-calculados del lado servidor (RSI, MACD, EMAs, ratings) — no hay que calcular nada cliente-side.
- Pivots mensuales con 5 metodos (Classic, Fibonacci, Camarilla, Woodie, DeMark).
- Symbol Search con ISIN/CUSIP/CIK — directamente joineable con SEC EDGAR.
- Screener masivo con filtros tipo SQL sobre 100k+ instrumentos en un sola request.
Cuando NO usar TradingView:
- News para stocks chicos no-US → mejor Yahoo Finance.
- Real-time tick-by-tick → requiere WebSocket (no implementado).
- Datos historicos OHLCV largos → no expone REST publico; usar Alpha Vantage o Yahoo Finance.
- Fundamentals con multiples periodos (5 años de income statements) → mejor SEC EDGAR para US, simplywallst para coverage global.
Consideraciones tecnicas
Sin auth
Ningun endpoint requiere API key, token, cookie ni session ID. Funciona
desde scripts headless, CI/CD, Docker, etc.
Headers recomendados
Ya configurados en el script:
python
HEADERS = {
"User-Agent": "Mozilla/5.0 ...",
"Accept": "*/*",
"Accept-Language": "es-AR,es;q=0.9,en;q=0.8",
"Origin": "https://es.tradingview.com",
"Referer": "https://es.tradingview.com/",
}
Rate limiting
No documentado. Observado:
- Scanner: tolera ~5 req/s.
- News: ~3 req/s.
- Symbol Search: ~5 req/s.
- HTML subpages: ~1 req/s (WAF de CloudFlare).
Recomendacion:
entre requests. El modo
lo usa automaticamente.
Encoding
UTF-8 valido. En consolas Windows (cp1252) pueden aparecer
en lugar
de caracteres especiales. El script reconfigura
a UTF-8
automaticamente al inicio.
Manejo de errores
| Status | Causa tipica |
|---|
| 200 | OK. Para Scanner verificar . |
| 400 | Payload invalido (columna desconocida, filter mal formado, body null) |
| 403 | Path inexistente o headers faltantes |
| 404 | Subpage HTML que no existe (ej: ) |
| 405 | Metodo erroneo (ej: GET no existe, solo v2) |
Limitaciones conocidas
- No hay endpoint OHLCV historico via REST: solo returns en el Scanner. Para historicos largos usar otros skills.
- News con coverage desigual: stocks grandes US = 200 items, stocks chicos = 1-5.
- en news: casi vacio. Usar por defecto.
- WebSocket real-time no implementado (
wss://data.tradingview.com
).
- Argentina market: para argentina, para america — NO intercambiables.
Aviso comercial
- API no documentada → puede cambiar.
- No abusar: respetar rate limits razonables.
- Para uso comercial intensivo, contratar la TradingView REST API oficial (de pago).
Documentacion completa
| Documento | Contenido |
|---|
| references/REFERENCE.md | Overview general de los 4 endpoints HTTP + arquitectura |
| references/SCANNER_COLUMNS.md | Lista exhaustiva de 130+ columnas con tablas |
| references/SCANNER_FILTERS.md | Operaciones de filtro + queries complejos + ejemplos |
| references/MARKETS_EXCHANGES.md | Mercados validos + exchanges por pais + formato tickers |
| references/NEWS_API.md | News API deep dive: providers, schema, story detail |
| references/SYMBOL_SEARCH.md | Symbol Search v3 deep dive: ISIN/CUSIP/CIK |
| references/HTML_SCRAPING.md | Extraccion de prs.init-data+json + casos donde scrapear |
| references/COOKBOOK.md | 30 recetas listas para copy-paste |
| assets/scanner_columns.json | Catalogo de columnas con descripciones |
| assets/column_groups.json | Bundles pre-armados por caso de uso |
| assets/markets.json | Mercados validos + cobertura |
| assets/recommend_ratings.json | Mapeo Recommend.* a buckets |
Casos de uso destacados
30 recetas completas en references/COOKBOOK.md.
bash
# Top 10 acciones US por market cap
py scripts/fetch_tradingview.py screen \
--filter '[["country","equal","United States"],["type","equal","stock"]]' \
--sort market_cap_basic:desc --limit 10
# Stocks oversold con high dividend
py scripts/fetch_tradingview.py screen \
--filter '[["RSI","less",30],["dividend_yield_recent","greater",5]]' \
--sort dividend_yield_recent:desc --limit 20
# Empresas argentinas en cualquier mercado
py scripts/fetch_tradingview.py country Argentina --limit 30
# Pipeline: search → quote → news
py scripts/fetch_tradingview.py search "Apple" -q | jq -r '.symbols[0].symbol'
py scripts/fetch_tradingview.py quote NASDAQ:AAPL
py scripts/fetch_tradingview.py news NASDAQ:AAPL
# Joinear con SEC EDGAR via CIK
py scripts/fetch_tradingview.py search "GGAL" -q | jq -r '.symbols[0].cik_code'
# -> 0001114700 (usar este CIK en sec-data skill)