| name | tradingview |
| description | Datos de mercado de TradingView via APIs publicas internas sin auth: Scanner (~300 columnas con quote/indicadores tecnicos/financials/earnings/ratings/targets), Symbol Search v3 (ISIN/CUSIP/CIK), News Headlines, scraping HTML de subpages (technicals/financials/forecast/options/ideas). Cobertura GLOBAL: 100k+ stocks, 50k+ cryptos, indices, forex, bonos. 24 modos CLI. |
| license | MIT |
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 (
technicals, financials-*, forecast,
options-chain, ideas, etc.) con extraccion de prs.init-data+json.
- 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
py scripts/fetch_tradingview.py quote NASDAQ:GGAL
py scripts/fetch_tradingview.py all NASDAQ:GGAL
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 news NASDAQ:AAPL
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 |
|---|
quote SYM | quote_basic (14 cols) | Quote basico |
quote-extended SYM | quote_extended (30 cols) | Quote + indicadores + valuacion |
technicals SYM | technicals (36 cols) | RSI, MACD, EMAs, SMAs, ratings |
pivots SYM | pivots (17 cols) | Pivots mensuales (5 metodos) |
financials SYM | financials (35 cols) | Balance + income + cashflow + ratios |
earnings SYM | earnings (12 cols) | Earnings pasados + forecast |
targets SYM | targets (10 cols) | Price targets + analyst recommendations |
performance SYM | performance (18 cols) | Returns (W/1M/3M/6M/Y/YTD/5Y/All) + volatilidad + beta |
dividends SYM | dividends (8 cols) | Yield + DPS + payout + crecimiento |
ownership SYM | ownership (10 cols) | Float + institucional + insiders + short |
screen | custom | Screener generico con filtros + sort + paginacion |
country COUNTRY | quote_basic | Stocks de un pais |
sector SECTOR | quote_basic | Stocks de un sector |
market MARKET | quote_basic | Listar mercado completo |
Symbol Search v3 (1 endpoint, 1 modo)
GET https://symbol-search.tradingview.com/symbol_search/v3/
| Modo | Descripcion |
|---|
search QUERY | Busqueda global con ISIN, CUSIP, CIK, logoid, exchange |
News API (1 endpoint, 3 modos)
GET https://news-headlines.tradingview.com/v2/headlines
| Modo | Descripcion |
|---|
news SYM | Headlines de un simbolo (hasta 200 items) |
news-global | Headlines globales del mercado (hasta 200 items) |
story STORY_PATH | Detalle/body de una noticia (scraping HTML) |
HTML Scraping (1 endpoint, 1 modo)
GET https://es.tradingview.com/symbols/{EX}-{SYM}/{path}/
| Modo | Descripcion |
|---|
subpage SYM PATH | Fetch HTML + extrae bloques prs.init-data+json |
Catalogos locales (3 modos)
| Modo | Descripcion |
|---|
columns [GROUP] | Listar columnas (todas o un grupo concreto) |
groups | Listar bundles pre-armados |
markets | Listar mercados validos |
Combinado (1 modo)
| Modo | Descripcion |
|---|
all SYM | Combina 6 requests (quote_extended + technicals + financials + earnings + targets + news) |
Uso rapido — ejemplos por categoria
Quote y tecnicos
py scripts/fetch_tradingview.py quote NASDAQ:GGAL
py scripts/fetch_tradingview.py quote-extended NASDAQ:AAPL
py scripts/fetch_tradingview.py technicals NASDAQ:GGAL
py scripts/fetch_tradingview.py pivots NASDAQ:AAPL
py scripts/fetch_tradingview.py performance NYSE:JPM
Financials
py scripts/fetch_tradingview.py financials NASDAQ:AAPL
py scripts/fetch_tradingview.py earnings NASDAQ:GGAL
py scripts/fetch_tradingview.py targets NASDAQ:NVDA
py scripts/fetch_tradingview.py dividends NYSE:KO
py scripts/fetch_tradingview.py ownership NASDAQ:NVDA
Screening
py scripts/fetch_tradingview.py screen \
--filter '[["sector","equal","Finance"],["market_cap_basic","greater",100000000000]]' \
--sort market_cap_basic:desc --limit 10
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
py scripts/fetch_tradingview.py search "GGAL"
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"
News
py scripts/fetch_tradingview.py news NASDAQ:AAPL
py scripts/fetch_tradingview.py news-global
py scripts/fetch_tradingview.py story "/news/DJN_DN20260604009289:0/"
HTML scraping
py scripts/fetch_tradingview.py subpage NASDAQ:GGAL technicals
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
py scripts/fetch_tradingview.py columns
py scripts/fetch_tradingview.py columns technicals
py scripts/fetch_tradingview.py groups
py scripts/fetch_tradingview.py markets
Combinado
py scripts/fetch_tradingview.py all NASDAQ:GGAL
py scripts/fetch_tradingview.py all NASDAQ:GGAL -o ggal_full.json
Custom columns
py scripts/fetch_tradingview.py quote NASDAQ:GGAL \
--columns "name,close,RSI,MACD.macd,Recommend.All,price_target_average"
Output / silencio
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -o ggal_quote.json
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -q
Formato de simbolos
| Donde | Formato | Ejemplos |
|---|
| Scanner / News / Search (JSON APIs) | {EXCHANGE}:{TICKER} | NASDAQ:GGAL, BCBA:YPF, BINANCE:BTCUSDT |
| HTML subpages | {EXCHANGE}-{TICKER} | NASDAQ-GGAL (en URL) |
Conversion automatica: el script convierte : → - cuando arma URLs HTML.
Markets soportados
| Market | Cobertura | Tickers tipo |
|---|
global | Todos los mercados (100k+) | Cualquier EX:TKR |
america | US: NYSE, NASDAQ, AMEX, OTC (15k+) | NASDAQ:AAPL |
argentina | BCBA / BYMA (300+) | BCBA:GGAL |
brazil | B3 / Bovespa (500+) | BMFBOVESPA:PETR4 |
spain | BME (200+) | BME:SAN |
italy | Borsa Italiana (400+) | MIL:ENI |
germany | Xetra / FWB (1k+) | XETR:SAP |
uk | LSE (2k+) | LSE:HSBA |
france | Euronext Paris (800+) | EURONEXT:MC |
russia | MOEX (200+) | MOEX:SBER |
crypto | Cryptos (50k+) | BINANCE:BTCUSDT |
forex | Forex pairs (1k+) | FX:EURUSD |
bonds | Bonos globales (TVC) | TVC:US10Y |
Detalles completos en references/MARKETS_EXCHANGES.md.
Tipos de instrumento (type field)
| Tipo | Descripcion |
|---|
stock | Acciones comunes |
dr | Depositary Receipt (ADRs en US, CEDEARs en BCBA, BDRs en BMFBOVESPA) |
etf | Exchange-Traded Fund |
fund | Mutual fund |
structured | Producto estructurado |
bond | Bono |
crypto | Criptomoneda |
forex | Par de monedas |
index | Indice |
future | Futuro |
option | Opcion |
Ratings BUY/SELL (Recommend.*)
TradingView calcula 3 ratings agregados a partir de los indicadores:
| Campo | Calculado a partir de |
|---|
Recommend.All | TODOS los indicadores (medias moviles + osciladores) |
Recommend.MA | Solo medias moviles (SMA/EMA 10..200, VWMA, Ichimoku, HullMA) |
Recommend.Other | Solo osciladores (RSI, Stoch, MACD, ADX, CCI, BBP, UO, W%R, AO) |
Valores en [-1.0, +1.0]. Mapeo a buckets:
| Rango | Bucket | UI label |
|---|
| -1.00 a -0.50 | STRONG_SELL | Venta fuerte |
| -0.50 a -0.10 | SELL | Venta |
| -0.10 a +0.10 | NEUTRAL | Neutral |
| +0.10 a +0.50 | BUY | Compra |
| +0.50 a +1.00 | STRONG_BUY | Compra fuerte |
El script tiene recommend_label(value) para conversion directa.
Asset estructurado en assets/recommend_ratings.json.
Flags principales
| Flag | Descripcion |
|---|
--market X | Market del Scanner (default: global) |
--columns "a,b,c" | Columnas custom (override del bundle del modo) |
--filter '[...]' | Filtro JSON para screen (ver SCANNER_FILTERS.md) |
--sort field:order | Sort (ej: market_cap_basic:desc) |
--limit N | Limite de resultados (default: 30) |
--offset N | Offset para paginacion (default: 0) |
--type X | search_type para search (stocks, crypto, forex, etc.) |
--exchange X | Filtro exchange para search |
--lang X | Idioma para news/search (default: en) |
-o archivo | Guardar output a archivo (JSON o markdown) |
-q / --quiet | 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:
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: time.sleep(0.3) entre requests. El modo all lo usa automaticamente.
Encoding
UTF-8 valido. En consolas Windows (cp1252) pueden aparecer ? en lugar
de caracteres especiales. El script reconfigura sys.stdout a UTF-8
automaticamente al inicio.
Manejo de errores
| Status | Causa tipica |
|---|
| 200 | OK. Para Scanner verificar totalCount > 0. |
| 400 | Payload invalido (columna desconocida, filter mal formado, body null) |
| 403 | Path inexistente o headers faltantes |
| 404 | Subpage HTML que no existe (ej: /news/) |
| 405 | Metodo erroneo (ej: /v3/headlines GET no existe, solo v2) |
Limitaciones conocidas
- No hay endpoint OHLCV historico via REST: solo
Perf.* returns en el Scanner. Para historicos largos usar otros skills.
- News con coverage desigual: stocks grandes US = 200 items, stocks chicos = 1-5.
lang=es en news: casi vacio. Usar lang=en por defecto.
- WebSocket real-time no implementado (
wss://data.tradingview.com).
- Argentina market:
BCBA:GGAL para argentina, NASDAQ:GGAL 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
Casos de uso destacados
30 recetas completas en references/COOKBOOK.md.
py scripts/fetch_tradingview.py screen \
--filter '[["country","equal","United States"],["type","equal","stock"]]' \
--sort market_cap_basic:desc --limit 10
py scripts/fetch_tradingview.py screen \
--filter '[["RSI","less",30],["dividend_yield_recent","greater",5]]' \
--sort dividend_yield_recent:desc --limit 20
py scripts/fetch_tradingview.py country Argentina --limit 30
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
py scripts/fetch_tradingview.py search "GGAL" -q | jq -r '.symbols[0].cik_code'