mcpField
T
tradingview

tradingview

github.com/gauss314Data & databases252326 installsUpdated 19w ago
Repository

About tradingview

A Python skill that retrieves market data from TradingView’s undocumented public APIs and HTML pages. It is intended for market-data analysis, with technical indicators, screening, search, and news available through CLI modes; data is typically delayed.

Key features

  1. 01Quotes and precomputed technical indicators
  2. 02Financials, earnings, and analyst targets
  3. 03Filters, sorting, and paginated screening
  4. 04Symbol search with ISIN, CUSIP, and CIK
  5. 05Symbol and global news headlines
  6. 06HTML subpage data extraction

Use cases

  1. 01Review technical indicators for a symbol
  2. 02Screen instruments by market and filters
  3. 03Search for securities by identifier
  4. 04Gather market headlines and financial data

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/gauss314/skills --skill tradingview

After installing, type/tradingviewin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/
column_groups.json
markets.json
recommend_ratings.json
scanner_columns.json
references/
COOKBOOK.md
HTML_SCRAPING.md
MARKETS_EXCHANGES.md
NEWS_API.md
REFERENCE.md
SCANNER_COLUMNS.md
SCANNER_FILTERS.md
SYMBOL_SEARCH.md
scripts/
fetch_tradingview.py

Details

From the project README

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

# 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

ModoBundle de columnasDescripcion
quote SYMquote_basic (14 cols)Quote basico
quote-extended SYMquote_extended (30 cols)Quote + indicadores + valuacion
technicals SYMtechnicals (36 cols)RSI, MACD, EMAs, SMAs, ratings
pivots SYMpivots (17 cols)Pivots mensuales (5 metodos)
financials SYMfinancials (35 cols)Balance + income + cashflow + ratios
earnings SYMearnings (12 cols)Earnings pasados + forecast
targets SYMtargets (10 cols)Price targets + analyst recommendations
performance SYMperformance (18 cols)Returns (W/1M/3M/6M/Y/YTD/5Y/All) + volatilidad + beta
dividends SYMdividends (8 cols)Yield + DPS + payout + crecimiento
ownership SYMownership (10 cols)Float + institucional + insiders + short
screencustomScreener generico con filtros + sort + paginacion
country COUNTRYquote_basicStocks de un pais
sector SECTORquote_basicStocks de un sector
market MARKETquote_basicListar mercado completo
Symbol Search v3 (1 endpoint, 1 modo)

GET https://symbol-search.tradingview.com/symbol_search/v3/

ModoDescripcion
search QUERYBusqueda global con ISIN, CUSIP, CIK, logoid, exchange
News API (1 endpoint, 3 modos)

GET https://news-headlines.tradingview.com/v2/headlines

ModoDescripcion
news SYMHeadlines de un simbolo (hasta 200 items)
news-globalHeadlines globales del mercado (hasta 200 items)
story STORY_PATHDetalle/body de una noticia (scraping HTML)
HTML Scraping (1 endpoint, 1 modo)

GET https://es.tradingview.com/symbols/{EX}-{SYM}/{path}/

ModoDescripcion
subpage SYM PATHFetch HTML + extrae bloques prs.init-data+json
Catalogos locales (3 modos)
ModoDescripcion
columns [GROUP]Listar columnas (todas o un grupo concreto)
groupsListar bundles pre-armados
marketsListar mercados validos
Combinado (1 modo)
ModoDescripcion
all SYMCombina 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                  # 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
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
# 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
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
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
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
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
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
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   # archivo
py scripts/fetch_tradingview.py quote NASDAQ:GGAL -q                    # silencioso

Formato de simbolos

DondeFormatoEjemplos
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

MarketCoberturaTickers tipo
globalTodos los mercados (100k+)Cualquier EX:TKR
americaUS: NYSE, NASDAQ, AMEX, OTC (15k+)NASDAQ:AAPL
argentinaBCBA / BYMA (300+)BCBA:GGAL
brazilB3 / Bovespa (500+)BMFBOVESPA:PETR4
spainBME (200+)BME:SAN
italyBorsa Italiana (400+)MIL:ENI
germanyXetra / FWB (1k+)XETR:SAP
ukLSE (2k+)LSE:HSBA
franceEuronext Paris (800+)EURONEXT:MC
russiaMOEX (200+)MOEX:SBER
cryptoCryptos (50k+)BINANCE:BTCUSDT
forexForex pairs (1k+)FX:EURUSD
bondsBonos globales (TVC)TVC:US10Y

Detalles completos en references/MARKETS_EXCHANGES.md.


Tipos de instrumento (type field)

TipoDescripcion
stockAcciones comunes
drDepositary Receipt (ADRs en US, CEDEARs en BCBA, BDRs en BMFBOVESPA)
etfExchange-Traded Fund
fundMutual fund
structuredProducto estructurado
bondBono
cryptoCriptomoneda
forexPar de monedas
indexIndice
futureFuturo
optionOpcion

Ratings BUY/SELL (Recommend.*)

TradingView calcula 3 ratings agregados a partir de los indicadores:

CampoCalculado a partir de
Recommend.AllTODOS los indicadores (medias moviles + osciladores)
Recommend.MASolo medias moviles (SMA/EMA 10..200, VWMA, Ichimoku, HullMA)
Recommend.OtherSolo osciladores (RSI, Stoch, MACD, ADX, CCI, BBP, UO, W%R, AO)

Valores en [-1.0, +1.0]. Mapeo a buckets:

RangoBucketUI label
-1.00 a -0.50STRONG_SELLVenta fuerte
-0.50 a -0.10SELLVenta
-0.10 a +0.10NEUTRALNeutral
+0.10 a +0.50BUYCompra
+0.50 a +1.00STRONG_BUYCompra fuerte

El script tiene recommend_label(value) para conversion directa. Asset estructurado en assets/recommend_ratings.json.


Flags principales

FlagDescripcion
--market XMarket 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:orderSort (ej: market_cap_basic:desc)
--limit NLimite de resultados (default: 30)
--offset NOffset para paginacion (default: 0)
--type Xsearch_type para search (stocks, crypto, forex, etc.)
--exchange XFiltro exchange para search
--lang XIdioma para news/search (default: en)
-o archivoGuardar output a archivo (JSON o markdown)
-q / --quietModo silencioso (sin logs INFO)

Diferencial vs otros skills del repo

FeatureTradingViewYahoo FinanceFinnhubInvesting.comMorningstar
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:

  1. Indicadores tecnicos pre-calculados del lado servidor (RSI, MACD, EMAs, ratings) — no hay que calcular nada cliente-side.
  2. Pivots mensuales con 5 metodos (Classic, Fibonacci, Camarilla, Woodie, DeMark).
  3. Symbol Search con ISIN/CUSIP/CIK — directamente joineable con SEC EDGAR.
  4. 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
StatusCausa tipica
200OK. Para Scanner verificar totalCount > 0.
400Payload invalido (columna desconocida, filter mal formado, body null)
403Path inexistente o headers faltantes
404Subpage HTML que no existe (ej: /news/)
405Metodo erroneo (ej: /v3/headlines GET no existe, solo v2)
Limitaciones conocidas
  1. No hay endpoint OHLCV historico via REST: solo Perf.* returns en el Scanner. Para historicos largos usar otros skills.
  2. News con coverage desigual: stocks grandes US = 200 items, stocks chicos = 1-5.
  3. lang=es en news: casi vacio. Usar lang=en por defecto.
  4. WebSocket real-time no implementado (wss://data.tradingview.com).
  5. 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

DocumentoContenido
references/REFERENCE.mdOverview general de los 4 endpoints HTTP + arquitectura
references/SCANNER_COLUMNS.mdLista exhaustiva de 130+ columnas con tablas
references/SCANNER_FILTERS.mdOperaciones de filtro + queries complejos + ejemplos
references/MARKETS_EXCHANGES.mdMercados validos + exchanges por pais + formato tickers
references/NEWS_API.mdNews API deep dive: providers, schema, story detail
references/SYMBOL_SEARCH.mdSymbol Search v3 deep dive: ISIN/CUSIP/CIK
references/HTML_SCRAPING.mdExtraccion de prs.init-data+json + casos donde scrapear
references/COOKBOOK.md30 recetas listas para copy-paste
assets/scanner_columns.jsonCatalogo de columnas con descripciones
assets/column_groups.jsonBundles pre-armados por caso de uso
assets/markets.jsonMercados validos + cobertura
assets/recommend_ratings.jsonMapeo Recommend.* a buckets

Casos de uso destacados

30 recetas completas en references/COOKBOOK.md.

# 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)

Comments

Markdown supported