
Tradingview Reader
- 841 installs
- 3.1k repo stars
- Updated July 21, 2026
- himself65/finance-skills
tradingview-reader is a Claude Code skill that pulls real-time and historical market data, indicators, and charts from TradingView into agents or scripts for developers who automate financial data access.
About
tradingview-reader is a Claude Code skill from himself65/finance-skills that connects agents and scripts to TradingView market data, technical indicators, and chart outputs. The skill targets developers building trading dashboards, signal bots, or research automations that need live quotes and historical series without manual browser copying. tradingview-reader lists 518 installs on skills.sh and ranks in the finance-skills collection for agent-side market data retrieval. Reach for this skill when wiring OHLCV feeds, indicator values, or chart snapshots into Python or agent workflows backed by TradingView sources.
- Fetches real-time and historical price data from TradingView
- Retrieves technical indicators, screeners, and chart metadata
- Exposes structured JSON output for agent consumption
- Supports symbol search and multiple timeframes
- Runs as a lightweight MCP-compatible skill
Tradingview Reader by the numbers
- 841 all-time installs (skills.sh)
- +39 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #177 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/himself65/finance-skills --skill tradingview-readerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 841 |
|---|---|
| repo stars | ★ 3.1k |
| Last updated | July 21, 2026 |
| Repository | himself65/finance-skills ↗ |
How do you fetch TradingView market data in code?
Pull real-time and historical market data, indicators, and charts directly into their own agents or scripts.
Who is it for?
Developers building trading bots, market dashboards, or quantitative research agents that need TradingView-sourced quotes and indicators programmatically.
Skip if: Teams requiring licensed exchange direct feeds, compliance-audited market data vendors, or non-TradingView data sources only.
When should I use this skill?
A developer asks to read TradingView charts, pull live or historical market data, or embed indicator values into an agent workflow.
What you get
Market data payloads, indicator readings, and chart data structures ready for agent or script consumption.
- quote payloads
- indicator series
- chart data exports
By the numbers
- 518 installs listed on skills.sh
- Source repository: himself65/finance-skills
Files
TradingView Reader (Read-Only)
Reads TradingView's desktop macOS app for quotes, options chains, and chart state via opencli and a CDP attach to the running TradingView.app process. Powered by the tradingview plugin in this repo's `opencli-plugins/tradingview` tree (a separate plugin from opencli's built-in adapters, installed via opencli's monorepo subpath syntax).
This skill is read-only. Designed for analysis: pulling options chains, checking IV/greeks, capturing chart state. It does NOT place trades, post ideas, modify watchlists, or change chart layouts.
Important: Unlike browser-based opencli readers (twitter, linkedin), this one talks directly to a running TradingView desktop app over Chrome DevTools Protocol. The user must (a) have TradingView.app installed, and (b) be logged in inside that app. The plugin handles relaunching with the debug port.
How it works: data commands harvest session cookies via CDP Storage.getCookies, then fire HTTP requests from Node directly. Page-context fetch is blocked by browser CORS preflight even from TradingView's own pages — the desktop app uses Electron's main process (Node network stack) to bypass this, and we replicate that path. No Browser Bridge extension required, no apps.yaml registration needed.
---
Step 1: Ensure opencli + Plugin Are Installed and Ready
Current environment status:
!`(command -v opencli && opencli tradingview status 2>&1 | head -5 && echo "READY" || echo "SETUP_NEEDED") 2>/dev/null || echo "NOT_INSTALLED"`If the status above shows READY, skip to Step 2. Otherwise:
NOT_INSTALLED — Install opencli
npm install -g @jackwener/opencliRequires Node.js >= 21 (or Bun >= 1.0).
SETUP_NEEDED — Install the TradingView plugin and launch with CDP
The TradingView adapter is not built into opencli — it's a separate plugin:
# Install the plugin
opencli plugin install github:himself65/finance-skills/tradingview
# Relaunch TradingView.app with CDP enabled (one-time per session)
opencli tradingview launchThe launch step quits the running TradingView and reopens it with --remote-debugging-port=9222. Warn the user to save chart layouts first if they have unsaved drawings.
Common setup issues
| Symptom | Fix |
|---|---|
opencli: command not found | npm install -g @jackwener/opencli (Node ≥ 22 for built-in WebSocket) |
Unknown command: tradingview | opencli plugin install github:himself65/finance-skills/tradingview |
Cannot reach CDP at http://127.0.0.1:9222 | App not launched with debug port — run opencli tradingview launch |
No tradingview.com cookies found | App is open but logged out — log in inside the desktop app |
No TradingView tab found | Open any chart or symbol page in TradingView, then retry |
| Empty chain / 0 contracts | Subscription tier on the logged-in account doesn't include options for this symbol |
---
Step 2: Identify What the User Needs
Setup / chart inspection
| User Request | Command | Key Flags |
|---|---|---|
| Setup / connection check | opencli tradingview status | — |
| Relaunch app with CDP | opencli tradingview launch | --port 9222 |
| What's on the chart | opencli tradingview chart-state | --tab <id> |
| Screenshot a chart | opencli tradingview screenshot --output ~/charts/nvda.png | --tab <id> |
Quotes + options
| User Request | Command | Key Flags |
|---|---|---|
| Spot quote | opencli tradingview quote --ticker X | --exchange NASDAQ |
| Options chain (full) | opencli tradingview options-chain --ticker X | --exchange |
| Options chain (one expiry, ATM band) | opencli tradingview options-chain --ticker X --expiry YYYY-MM-DD | `--type call\ |
| List expiries | opencli tradingview options-expiries --ticker X | — |
Screener
| User Request | Command | Key Flags |
|---|---|---|
| Generic screener (stocks/crypto/forex/futures/bonds) | opencli tradingview screener --market america --columns ... | --filter <json>, --sort field:desc, --limit N, --label-product |
| US stocks with RSI < 30, sorted by volume | `opencli tradingview screener --market america --columns "name,close,RSI\ | 60,volume" --filter '[{"left":"RSI\ |
| Top crypto by market cap | opencli tradingview screener --market coin --columns "name,close,change,market_cap_calc" --sort market_cap_calc:desc --limit 50 | — |
| Symbol search / autocomplete | opencli tradingview search --query "nvidia" | `--type stock\ |
News
| User Request | Command | Key Flags |
|---|---|---|
| Global news headlines | opencli tradingview news --limit 25 | --category, --area, --section, --provider |
| News for a specific ticker | opencli tradingview news --symbol NASDAQ:AAPL | --limit, `--section analysis\ |
| Full story by id | opencli tradingview news --id <story-id> | --lang en |
Watchlists + alerts
| User Request | Command | Key Flags |
|---|---|---|
| List all watchlists | opencli tradingview watchlists | — |
| Symbols in one watchlist | opencli tradingview watchlists --id <wl-id> | — |
| Colored-flag list (red/orange/yellow/green/blue/purple) | opencli tradingview watchlists --color red | — |
| List all alerts | opencli tradingview alerts --type list | — |
| Active alerts | opencli tradingview alerts --type active | — |
| Recently triggered alerts | opencli tradingview alerts --type triggered | — |
| Alerts that fired while offline | opencli tradingview alerts --type offline | — |
| Full alert log | opencli tradingview alerts --type log | — |
---
Step 3: Execute the Command
General pattern
# Use -f json or -f yaml for structured output
opencli tradingview options-chain --ticker SNDK --expiry 2026-05-22 -f json
opencli tradingview options-chain --ticker NVDA --strikes-around-spot 8 -f csv
opencli tradingview quote --ticker SPY --exchange NYSEARCA -f jsonKey rules
1. Run `opencli tradingview status` first if connectivity is uncertain — it reports CDP connection state and active TradingView tabs. 2. Use `-f json` for programmatic processing (LLM context, downstream skills). 3. Filter by expiry and `--strikes-around-spot` — full chains can be 3,000+ rows; an unfiltered dump is rarely what the user wants. 4. Default `--exchange NASDAQ` for US equities; require explicit --exchange for ETFs (e.g. SPY = NYSEARCA, QQQ = NASDAQ) or non-US listings. 5. For `screener`, `--columns` is critical — it controls both the request and the output table. Include name and any field used in --filter or --sort. Append |TF for an indicator's timeframe, e.g. RSI|60 for 1-hour RSI. The default columns are sensible for stocks but should be replaced for crypto / forex / futures (different field catalogs). 6. For `screener`, `--filter` is JSON — array of {left, operation, right} clauses. Always single-quote the JSON in shell to avoid escaping issues. See references/commands.md for the operations cheat sheet. 7. For `news`, narrow the feed early — the global feed is firehose-level. Use --symbol, --category, --section, or --provider before raising --limit. 8. For `search`, prefer it over guessing — when the user gives an ambiguous ticker (e.g. "SPY" without exchange), run search --query SPY first to confirm the listing, then pass --exchange to subsequent commands. 9. For `watchlists` and `alerts`, default to summary — a user asking "what's in my watchlists?" wants list names + counts, not every symbol. 10. NEVER call any write operation. This skill is read-only — no trades, no watchlist edits, no alert creation/deletion, no chart writes. The plugin intentionally does not expose write endpoints (/append, /replace, /create_alert, etc.).
Output format flag (-f)
| Format | Flag | Best for |
|---|---|---|
| Table | -f table (default) | Human-readable terminal output |
| JSON | -f json | Programmatic processing, LLM context |
| YAML | -f yaml | Structured output, readable |
| Markdown | -f md | Documentation, reports |
| CSV | -f csv | Spreadsheet export |
Output columns
quote—symbol,close,change,change_abs,currency,timeoptions-chain—expiry,dte,strike,type,bid,ask,mid,iv,delta,gamma,theta,vega,rho,theo,bid_iv,ask_iv,symboloptions-expiries—expiry,dte,contracts_countscreener— dynamic; one column per--columnsentry, plussymbol. (Default:name,close,change,volume,market_cap_basic,sector.tr.)search—symbol,description,type,exchange,country,currencynews(list mode) —id,published,provider,title,urgency,related_symbols,linknews(story mode,--idset) —id,published,provider,title,body,tags,linkwatchlists—id,name,symbol_count,symbolsalerts—id,name,symbol,type,condition,value,active,status,fired_atchart-state—layout_id,symbol,interval,urlscreenshot—path,bytes
---
Step 4: Present the Results
1. Lead with the structure summary — for an options chain, state spot price, expiry being shown, ATM strike, and IV regime first; then the table. For a screener, lead with the count of matches and the filters applied. 2. Filter aggressively before showing — never paste a 3,000-row chain or a 500-row screener. Default to ATM ± 6 strikes per expiry for chains; for screeners cap to top 20 unless the user asks for more. 3. Highlight skew — when showing both calls and puts, note IV skew direction if material. 4. For chart-state, report layout id + symbol + interval + URL succinctly; offer to screenshot. 5. For news (list mode), group by provider and lead with timestamps in the user's likely timezone (or always UTC ISO if uncertain). Include the link so the user can open the story. For story mode (--id set), the body is plain text — present it as-is, optionally trimmed. 6. For watchlists, summarize counts before listing symbols (e.g. "3 watchlists: Earnings (24 syms), AI plays (12 syms), Hedges (8 syms)"). Don't dump 100-symbol watchlist contents unless asked. 7. For alerts, group by status (active vs triggered/fired) and order recent firings by fired_at desc. Don't expose alert ids unless the user explicitly asks. 8. For screener results, surface the top movers / extreme values in plain prose first (e.g. "highest market cap NVDA at $4.2T, 12 names below the RSI<30 threshold"), then the table. 9. Treat sessions as private — never expose CDP target IDs, cookies, or layout IDs unless the user asks. 10. Cross-reference with Funda when the user is making a trade decision — TradingView's options/screener data is convenient but can lag; for trade entry analysis, also fetch from the funda-data skill and reconcile.
---
Step 5: Diagnostics
opencli tradingview statusReturns CDP connection state and active TradingView tabs. If CDP is down, run opencli tradingview launch to relaunch with the debug port.
---
Error Reference
| Error | Cause | Fix |
|---|---|---|
Unknown command: tradingview | Plugin not installed | opencli plugin install github:himself65/finance-skills/tradingview |
Cannot reach CDP at http://127.0.0.1:9222 | App launched without debug port | opencli tradingview launch |
No tradingview.com cookies found | Logged out of TradingView | Log in inside the desktop app |
No TradingView tab found | App open but no TradingView page loaded | Open any chart or symbol page, then retry |
scanner 400 / Empty chain / totalCount=0 | Subscription tier doesn't cover this symbol's options | Check account tier in the desktop app |
Symbol not found | Wrong exchange | Pass --exchange explicitly, or run opencli tradingview search --query <name> first |
| Rate limited | Too many requests | Wait a few seconds, then retry |
---
Reference Files
references/commands.md— Every command with all flags, output examples, and analyst workflows
tradingview-reader
Read-only TradingView desktop reader for market data via opencli + the `tradingview` opencli plugin shipped alongside this skill.
What it does
Reads TradingView's macOS desktop app for market data via Chrome DevTools Protocol — no API keys, no cookie extraction, no scraping. Capabilities include:
- Quote — spot quote for any symbol (close, change, currency)
- Options chain — full chain or filtered by expiry / type / ATM band, with full greeks (delta, gamma, theta, vega, rho), IV, bid/ask IVs, and theoretical price
- Options expiries — list available expirations with DTE and contracts count
- Chart state — current symbol, interval, and layout of an active chart tab
- Screenshot — PNG capture of a chart tab
- Status / launch — CDP connection diagnostics and one-shot relaunch helper
This skill is read-only. It does NOT place trades, modify watchlists, post ideas, or change chart layouts.
Authentication
No API key, no token. The adapter attaches to the user's already-logged-in TradingView desktop app over CDP. Just have TradingView.app installed and logged in.
Triggers
- "options chain for X", "what's the IV on Y", "show me SNDK puts"
- "what's the bid/ask on AAPL options", "TradingView IV skew"
- "what symbol is on my TradingView chart", "screenshot my NVDA chart"
- "TradingView quote for", "TV options for", "what expiries does X have"
- Any mention of TradingView in context of reading market data, options data, or charts
Platform
Works on Claude Code and other CLI-based agents on macOS. Does not work on Claude.ai — the sandbox restricts network access and binaries required by opencli + CDP.
The plugin is currently macOS-only (relies on open -a TradingView --args).
Setup
# As a plugin (recommended — installs all skills in this group)
npx plugins add himself65/finance-skills --plugin finance-data-providers
# Or install just this skill
npx skills add himself65/finance-skills --skill tradingview-readerSee the main README for more installation options.
Prerequisites
- Node.js >= 21 — for
npm install -g @jackwener/opencli TradingView.appinstalled on macOS, logged in- The
tradingviewopencli plugin:opencli plugin install github:himself65/finance-skills/tradingview(installs from this repo's monorepo subpath) - Relaunch with CDP enabled:
opencli tradingview launch(one-time per session — warn the user to save chart layouts first)
Reference files
references/commands.md— Complete read command reference with all flags, output schemas, and analyst workflows
opencli TradingView Command Reference (Read-Only)
Complete read-only reference for the tradingview opencli adapter that lives in this repo's `opencli-plugins/tradingview` tree, scoped to financial research use cases.
Install: npm install -g @jackwener/opencli && opencli plugin install github:himself65/finance-skills/tradingview
This skill is read-only. No write operations, no trade execution.
---
Setup
The adapter connects to a running TradingView.app over Chrome DevTools Protocol (CDP) — no bot account, no API key, no Browser Bridge extension.
Requirements: 1. Node.js >= 21 (or Bun >= 1.0) 2. TradingView.app installed on macOS, logged in 3. App launched with --remote-debugging-port=9222 (the launch command handles this)
Launch with CDP:
opencli tradingview launch # default port 9222
opencli tradingview launch --port 9333 # custom portThe launch step quits any running TradingView and reopens it with the debug port. Warn the user to save chart layouts first.
Verify connectivity:
opencli tradingview status---
Read Operations
launch
Quits any running TradingView and re-launches it with --remote-debugging-port enabled. Polls /json/version until the app is reachable.
opencli tradingview launch
opencli tradingview launch --port 9333
opencli tradingview launch -f json| Flag | Required | Default | Notes |
|---|---|---|---|
--port | no | 9222 | CDP port |
-f, --format | no | table | `table\ |
Output columns: port, pid, ready
---
status
Reports CDP connection state and lists active TradingView tabs (chart, symbol page, options page).
opencli tradingview status
opencli tradingview status -f jsonOutput columns: connected, tabs[] (each tab has id, type, url, title)
Use OPENCLI_CDP_TARGET=tradingview.com to disambiguate when multiple Electron CDP sessions are running on the host.
---
quote
Single-symbol spot quote, backed by scanner.tradingview.com/global/scan2.
opencli tradingview quote --ticker AAPL
opencli tradingview quote --ticker SPY --exchange NYSEARCA -f json
opencli tradingview quote --ticker BABA --exchange NYSE| Flag | Required | Default | Notes |
|---|---|---|---|
--ticker | yes | — | Symbol (e.g. AAPL) |
--exchange | no | NASDAQ | TradingView exchange code (NASDAQ, NYSE, NYSEARCA, ...) |
-f, --format | no | table | `table\ |
Output columns: symbol, close, change, change_abs, currency, time
---
options-chain
Full options chain or filtered slice. Backed by scanner.tradingview.com/options/scan2. Returns one row per (expiry × strike × type) tuple — the response is the entire chain in one request, not paginated.
# Full chain (every expiry, every strike, calls + puts) — can be 3,000+ rows
opencli tradingview options-chain --ticker SNDK -f json
# One expiry, ATM ± 6 strikes, both call and put
opencli tradingview options-chain --ticker SNDK --expiry 2026-05-22 \
--strikes-around-spot 6 -f json
# Calls only, full strike list, single expiry
opencli tradingview options-chain --ticker NVDA --expiry 2026-06-19 \
--type call --strikes-around-spot 0 -f json
# CSV export for spreadsheet analysis
opencli tradingview options-chain --ticker AAPL --expiry 2026-05-15 -f csv| Flag | Required | Default | Notes |
|---|---|---|---|
--ticker | yes | — | Underlying ticker |
--exchange | no | NASDAQ | TradingView exchange code |
--expiry | no | all | ISO date (YYYY-MM-DD) |
--type | no | both | call or put |
--strikes-around-spot | no | 6 | Half-band; total strikes = 2N+1. 0 = full strike list. |
-f, --format | no | table | `table\ |
Output columns: expiry, dte, strike, type, bid, ask, mid, iv, delta, gamma, theta, vega, rho, theo, bid_iv, ask_iv, symbol
Symbol format: OPRA:<ROOT><YY><MM><DD><C|P><STRIKE> (OCC-style, e.g. OPRA:SNDK260522C2090.0).
Sample row (JSON):
{
"expiry": "2026-05-22", "dte": 12, "strike": 2090, "type": "call",
"bid": 12.9, "ask": 18.4, "mid": 15.65, "iv": 1.0953,
"delta": 0.1035, "gamma": 0.000542, "theta": -2.177, "vega": 0.5456, "rho": 0.0552,
"theo": 15.0, "bid_iv": 1.0546, "ask_iv": 1.1540,
"symbol": "OPRA:SNDK260522C2090.0"
}Common analyst workflows
- IV regime check:
--strikes-around-spot 0 --expiry <next-monthly>→ look at ATM IV vs IV at ±20%. - Skew measurement: filter calls and puts at equidistant OTM strikes (e.g. ±10% from spot), compare IVs to quantify put skew.
- Liquidity scan before structure: sort by
(ask - bid)/midto flag wide spreads before placing a multi-leg order. - Theoretical edge: compare
midtotheoper row — large positivetheo - midsuggests a market mispricing (or stale data — verify with the bid IV / ask IV envelope).
---
options-expiries
Lists every available expiration for a ticker with DTE and contract counts. Useful before pulling a full chain to know what's available.
opencli tradingview options-expiries --ticker SNDK
opencli tradingview options-expiries --ticker SPY --exchange NYSEARCA -f json| Flag | Required | Default | Notes |
|---|---|---|---|
--ticker | yes | — | Underlying ticker |
--exchange | no | NASDAQ | TradingView exchange code |
-f, --format | no | table | `table\ |
Output columns: expiry, dte, contracts_count
---
chart-state
Returns the current symbol/interval/layout of an active chart tab via CDP Runtime.evaluate.
opencli tradingview chart-state # picks the first chart tab
opencli tradingview chart-state --tab abc123 # specific tab id (from `status`)
opencli tradingview chart-state -f json| Flag | Required | Default | Notes |
|---|---|---|---|
--tab | no | first chart tab | Tab id from opencli tradingview status |
-f, --format | no | table | `table\ |
Output columns: layout_id, symbol, interval, url
---
screenshot
Captures a PNG of a chart tab via CDP Page.captureScreenshot.
opencli tradingview screenshot --output ~/charts/nvda.png
opencli tradingview screenshot --tab abc123 --output ./snap.png| Flag | Required | Default | Notes |
|---|---|---|---|
--tab | no | first chart tab | Tab id from opencli tradingview status |
--output | no | autogenerated | Output path (PNG) |
-f, --format | no | table | `table\ |
Output columns: path, bytes
---
Output Formats
All commands support the -f / --format flag:
| Format | Flag | Description |
|---|---|---|
| Table | -f table (default) | Rich CLI table |
| JSON | -f json | Pretty-printed JSON (2-space indent) |
| YAML | -f yaml | Structured YAML |
| Markdown | -f md | Pipe-delimited markdown tables |
| CSV | -f csv | Comma-separated values |
---
Financial Research Workflows
Quick IV / skew check on a single ticker
# 1. List expiries, pick the front month
opencli tradingview options-expiries --ticker NVDA -f json
# 2. Pull ATM band for that expiry, both call and put
opencli tradingview options-chain --ticker NVDA --expiry 2026-05-15 \
--strikes-around-spot 6 -f json
# 3. Compare ATM call IV vs ATM put IV → skew directionLiquidity check before a multi-leg structure
# Pull the legs you plan to trade
opencli tradingview options-chain --ticker AAPL --expiry 2026-06-19 \
--strikes-around-spot 8 -f csv > aapl_chain.csv
# In the CSV: sort by (ask-bid)/mid descending → widest spreads at the top
# Avoid legs with > 5–10% relative spread on liquid namesCross-reference TradingView vs Funda
TradingView's options data is convenient (no API key, runs against your logged-in session) but can lag. For trade entry decisions:
# 1. Pull the chain from TradingView
opencli tradingview options-chain --ticker SNDK --expiry 2026-05-22 \
--strikes-around-spot 6 -f json > tv_chain.json
# 2. Cross-reference with Funda (different skill — see funda-data)
# GET /v1/options/stock?ticker=SNDK&type=option-chains&expiry=2026-05-22
# 3. Reconcile bid/ask/IV/greeks; flag any large divergenceCapture a chart for research notes
# 1. Identify what's currently shown
opencli tradingview chart-state -f json
# 2. Snapshot it
opencli tradingview screenshot --output ~/research/sndk-2026-05-10.png---
Error Reference
| Error | Cause | Fix |
|---|---|---|
Unknown command: tradingview | Plugin not installed | opencli plugin install github:himself65/finance-skills/tradingview |
CDP not reachable on :9222 | App launched without debug port | opencli tradingview launch |
No tab matches tradingview.com | App open but no TradingView page loaded | Open any chart in TradingView, then retry |
Empty chain / totalCount=0 | Subscription tier doesn't cover this symbol's options | Check account tier in the desktop app |
Symbol not found | Wrong exchange | Pass --exchange explicitly |
| Multiple Electron CDP targets | Other Electron apps on the same port | Set OPENCLI_CDP_TARGET=tradingview.com |
| Rate limited / stale data | Too many requests | Wait a few seconds; the plugin caches options/scan2 for ~5–10 s per ticker |
---
---
screener
Generic stock / crypto / forex / futures / bond screener via scanner.tradingview.com/{market}/scan2. Same backend powers all of TradingView's screener, movers, and heatmap pages.
# US stocks with RSI(1h) below 30, sorted by volume
opencli tradingview screener \
--market america \
--columns "name,close,RSI|60,volume,market_cap_basic,sector.tr" \
--filter '[{"left":"RSI|60","operation":"less","right":30}]' \
--sort volume:desc \
--limit 25 -f json
# Top 50 crypto by market cap
opencli tradingview screener \
--market coin \
--columns "name,close,change,market_cap_calc,total_volume_calc" \
--sort market_cap_calc:desc --limit 50 -f json
# Specific ticker subset (skip filter, supply tickers explicitly)
opencli tradingview screener \
--market america \
--tickers "NASDAQ:AAPL,NASDAQ:MSFT,NASDAQ:NVDA" \
--columns "name,close,change,market_cap_basic,price_earnings_ttm" -f json| Flag | Required | Default | Notes |
|---|---|---|---|
--market | no | america | Market path segment (see "Market codes" below) |
--columns | no | name,close,change,volume,market_cap_basic,sector.tr | CSV. Append ` |
--filter | no | — | JSON array of {left, operation, right} clauses |
--sort | no | volume:desc | field:asc or field:desc |
--tickers | no | — | Comma-separated EXCH:SYM list. Bypasses filter when set. |
--label-product | no | screener-stock | Server-side analytics tag (screener-stock, screener-crypto, ...) |
--limit | no | 50 | Max rows; clamped to [1, 500] |
--offset | no | 0 | Pagination start |
Market codes
- Stocks (per country):
america,uk,germany,france,japan,india,china,hongkong,korea,taiwan,singapore,australia,canada,brazil,mexico,israel,saudi, etc. (~70 codes) - Cross-class:
crypto(CEX pairs),coin(crypto coins, different schema),forex,futures,bond,cfd,economics2,options,global
Filter operations
equal, nequal, greater, egreater, less, eless, in_range, not_in_range, empty, nempty, match (substring), nmatch, crosses, crosses_above, crosses_below, above%, below%, in_range%. For boolean composition use the filter2: {operator, operands} field directly via the page-context API (not currently exposed via --filter).
Field catalog
3,000+ stock fields (1,018 deduplicated). See TradingView-Screener fields reference for the full list. Common ones:
- Price:
close,open,high,low,change,change_abs,gap,volume,volume_change - Fundamentals:
market_cap_basic,price_earnings_ttm,price_book_fq,dividend_yield_recent,earnings_per_share_basic_ttm,revenue_ttm,total_debt,return_on_equity_fy - Technicals:
RSI,RSI|<tf>,MACD.macd,MACD.signal,BB.upper,BB.lower,ATR,ADX,Aroon.Up,Aroon.Down,MOM,Mom,Stoch.K,Stoch.D - Recommendation:
Recommend.All,Recommend.MA,Recommend.Other(range -1..1) - Categorical:
type,subtype,sector,sector.tr(translated),industry,industry.tr,country,exchange
Common analyst workflows
- Oversold scan:
--filter '[{"left":"RSI|60","operation":"less","right":30}]' --sort volume:desc→ high-volume names with 1h RSI < 30. - Earnings beats:
--filter '[{"left":"earnings_per_share_basic_ttm","operation":"egreater","right":0},{"left":"eps_surprise_percent_fq","operation":"greater","right":5}]'. - Sector rotation: group results by
sector.trafter pulling top 200 bychange. - Index constituents: use
--tickerswith the SP500 / Nasdaq100 list to pull the same row set across multiple metrics in one call.
---
search
Symbol / instrument autocomplete. Backed by symbol-search.tradingview.com/symbol_search/v3/. Use this whenever the user's ticker is ambiguous (e.g. "SPY" matches multiple listings) or to discover available exchanges for a name.
opencli tradingview search --query "nvidia" -f json
opencli tradingview search --query "BTC" --type crypto --exchange BINANCE -f json
opencli tradingview search --query "9988" --country HK| Flag | Required | Default | Notes |
|---|---|---|---|
--query | yes | — | Search text; supports EXCH:SYM parsing |
--type | no | all | stock, funds, index, futures, forex, crypto, bond, economic, dr, cfd, option, structured |
--exchange | no | — | NASDAQ, NYSE, NYSEARCA, BINANCE, OANDA, ... |
--country | no | — | ISO-2 (US, GB, JP, HK, DE, ...) |
--lang | no | en | Description language |
--limit | no | 20 | Max results |
--offset | no | 0 | Pagination start |
Output columns: symbol (full EXCH:SYM), description, type, exchange, country, currency.
---
news
TradingView's news headlines feed (or full story). Backed by news-headlines.tradingview.com/v2/. Two modes:
- List (default): paginated headlines, filterable by symbol / category / area / section / provider.
- Story (
--id <story-id>): one row with the full story body flattened to plain text.
# Global news feed
opencli tradingview news --limit 25 -f json
# Ticker-specific news
opencli tradingview news --symbol NASDAQ:AAPL --limit 10 -f json
# Analyst notes only, on Reuters
opencli tradingview news --section analysis --provider reuters -f json
# Full story by id
opencli tradingview news --id "tag:reuters.com,2026:newsml_..." -f json| Flag | Required | Default | Notes |
|---|---|---|---|
--id | no | — | When set, fetch full story instead of list |
--symbol | no | — | EXCH:SYM filter (omit for global feed) |
--category | no | — | base, stock, etf, futures, forex, crypto, index, bond, economic |
--area | no | — | WLD, AME, EUR, ASI, OCN, AFR |
--section | no | — | press_release, financial_statement, insider_trading, esg, corp_activity, analysis, recommendation, prediction, markets_today, survey |
--provider | no | — | Single source (reuters, dow_jones, cointelegraph, ...) |
--lang | no | en | Story language |
--limit | no | 25 | Max headlines |
Output columns (list mode): id, published, provider, title, urgency, related_symbols, link.
Output columns (story mode): id, published, provider, title, body (plain-text rendering of the AST), tags, link.
Common analyst workflows
- Pre-market scan:
news --section markets_today --area AME --limit 20for the morning brief. - Earnings call follow-up:
news --symbol <S> --section press_release→ original release text vianews --id <id>for AI summarization. - Recommendation tracking:
news --section recommendation --symbol <S>for upgrades/downgrades.
---
watchlists
Read-only access to the user's watchlists.
# List all custom watchlists (id, name, count, symbols)
opencli tradingview watchlists -f json
# Symbols in one watchlist
opencli tradingview watchlists --id rRwIJoVm -f json
# Colored-flag list (red, orange, yellow, green, blue, purple)
opencli tradingview watchlists --color red -f json| Flag | Required | Default | Notes |
|---|---|---|---|
--id | no | — | 8-char watchlist id (mutually exclusive with --color) |
--color | no | — | One of: red, orange, yellow, green, blue, purple |
Output columns: id, name, symbol_count, symbols (comma-separated for table; array in JSON).
Note: This skill does not expose write endpoints (/append/, /replace/). Modifying watchlists must be done through the TradingView UI.
---
alerts
Read-only access to pricealerts.tradingview.com. One command, multiple modes via --type.
opencli tradingview alerts --type list # all alerts (active + paused)
opencli tradingview alerts --type active # currently armed
opencli tradingview alerts --type triggered # recently fired
opencli tradingview alerts --type offline # fired while user was offline
opencli tradingview alerts --type log # full historical fire log| Flag | Required | Default | Notes |
|---|---|---|---|
--type | no | list | One of: list, active, triggered, offline, log |
Output columns: id, name, symbol, type, condition, value, active, status, fired_at.
Tier sensitivity: TradingView caps the number of saved alerts by tier (Free=1, Essential=10, Plus=20, Premium=400, Ultimate=unlimited). The API surface is identical; only the saved set changes.
Note: Write endpoints (/create_alert, /edit_alert, /remove_alert, /restart_alert) are intentionally NOT exposed.
---
Limitations
- macOS only — the
launchhelper relies onopen -a TradingView --args. Linux / Windows desktop apps are not supported by this plugin. - Logged-in app required — no auth bypass; data tier matches what the user sees in the app.
- Read-only in this skill — even if the plugin grows write commands later (alerts, watchlists), this skill forbids them.
- Single attached app at a time — if multiple Electron CDP sessions exist, set
OPENCLI_CDP_TARGET. - Field positions are read from the response — never hard-code field indices; if the plugin breaks because TradingView changes the wire format, file an issue at the plugin repo.
---
Best Practices
- Filter aggressively — full chains are 3,000+ rows. Default to ATM ± 6 strikes per expiry.
- Use `-f json` for programmatic processing and LLM context.
- Use `-f csv` for spreadsheet analysis of chains.
- Run `status` before `options-chain` if you suspect connectivity issues.
- Treat CDP endpoints as private — never log or display debug URLs, target ids, or layout ids.
- Spot self-consistency check —
quote.closeshould fall within[min_strike, max_strike]of the chain. If not, suspect stale data or wrong exchange.
Related skills
How it compares
Use tradingview-reader when TradingView is already the charting source of truth and you need agent-accessible quotes instead of building a separate vendor API integration.
FAQ
What data can tradingview-reader retrieve?
tradingview-reader pulls real-time and historical market data, technical indicators, and chart information from TradingView into agents or scripts. Outputs are structured for downstream trading dashboards, bots, or research pipelines.
Who maintains the tradingview-reader skill?
tradingview-reader ships from the himself65/finance-skills repository on skills.sh, where the listing shows 518 installs. Developers invoke it when automating TradingView-sourced quotes and indicators.