TradingView Screener Scraper — Stocks, Crypto & Forex avatar

TradingView Screener Scraper — Stocks, Crypto & Forex

Pricing

from $1.50 / 1,000 results

Go to Apify Store
TradingView Screener Scraper — Stocks, Crypto & Forex

TradingView Screener Scraper — Stocks, Crypto & Forex

Scrape TradingView's screener for stocks, crypto and forex: symbol, price, % change, volume, market cap, sector, RSI, P/E, EPS, dividend yield and 52-week range. Filter by market cap, RSI, sector; sort and paginate. Fast, no key, no login.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

TradingView Screener Scraper — Stocks, Crypto & Forex Data

This TradingView scraper turns the TradingView screener into a clean, structured dataset — price, % change, volume, market cap, sector, industry, RSI, P/E, EPS, dividend yield and 52-week range for thousands of stocks, cryptocurrencies and forex pairs. Filter by market cap, RSI or sector, sort by any field, and scrape TradingView straight to a table. No login, no API key, no coding.

Export to JSON, CSV, Excel, or API.

Built for quant researchers, retail and professional traders, fintech and market-data teams, crypto analysts, dividend and value investors, and anyone who needs a repeatable TradingView data feed instead of copy-pasting from a chart.


🔎 Why scrape TradingView?

TradingView is one of the most widely used market-data and charting platforms in the world, and its screener is a goldmine: price, momentum, valuation and technical indicators for virtually every listed stock, thousands of crypto markets and the full forex grid — all in one place. But the screener lives behind a JSON endpoint with cryptic field names and returns raw, index-ordered arrays. There is no official export button for bulk data and no documented public API, so pulling the numbers by hand means squinting at a web table and copy-pasting rows.

A TradingView scraper solves that. This Actor speaks the screener's request format for you, maps each symbol into a labelled row (ticker, name, price, change, market cap, RSI, P/E and more), paginates through the entire result set, de-duplicates it, and hands you an analysis-ready table. Whether you want a one-off snapshot of the 20,000+ US stocks, a ranking of 64,000+ crypto pairs, or a daily scheduled feed for a time series, you get the same clean output every time.

Collecting this manually is slow and error-prone: the screener caps the visible rows, field meanings differ between stocks and crypto, and values change minute to minute. Automating it with a TradingView API-style scraper gives you fresh, structured, repeatable TradingView data on demand — in one run of this screener scraper you can pull hundreds of fully-populated symbols in seconds.

Common reasons people scrape TradingView:

  • Build custom stock screeners (large-cap tech under RSI 30, high-dividend financials, top gainers) and export them.
  • Rank and monitor crypto markets by market cap or 24h volume across exchanges.
  • Assemble clean cross-sectional datasets (price + fundamentals + technicals) for quant research and backtesting.
  • Track oversold / overbought signals with RSI thresholds across any market.
  • Pull an entire sector or country market for valuation and momentum analysis.
  • Feed dashboards, spreadsheets, alerts and models with a scheduled market data snapshot.
  • Screen forex pairs with live bid/ask, price and % change.

✨ What this TradingView scraper does

  • ✅ Screens 14 markets — US Stocks plus 11 country stock markets (Turkey, Germany, UK, India, Canada, Australia, France, Spain, Italy, Brazil, Japan), Crypto, and Forex.
  • ✅ Automatic pagination through the whole result set (US stocks 20,000+, crypto 64,000+, forex 6,000+), returning de-duplicated rows — controlled by a simple maxItems cap.
  • ✅ Rich stock fields: symbol, exchange, ticker, name, price, changePercent, changeAbs, volume, marketCap, sector, industry, rsi (14-day), peRatio, eps, dividendYield, high52Week, low52Week, tradingViewUrl, scrapedAt.
  • ✅ Crypto fields: ticker, name, price, changePercent, changeAbs, volume24h, marketCap, circulatingSupply, rsi.
  • ✅ Forex fields: ticker, name, price, changePercent, changeAbs, bid, ask.
  • ✅ Built-in filters: minimum market cap, max RSI (oversold), min RSI (overbought), sector, and minimum volume — applied server-side so you only download what matches.
  • ✅ Sort by any TradingView field (change, volume, RSI, close, price_earnings_ttm…) ascending or descending.
  • ✅ Extra columns: add any other TradingView field (MACD.macd, Volatility.D, average_volume_10d_calc, and hundreds more) via extraColumns.
  • ✅ No key, no login — reads publicly available screener data over a fast HTTP API; works with or without a proxy.
  • ✅ Export to JSON, CSV, Excel, or HTML, and push to Google Sheets, webhooks, Make or Zapier.

🎯 Use cases

  • Retail & professional traders — build repeatable screens (oversold large-caps, top gainers, most active) and export them instead of re-filtering a web table each morning.
  • Quant researchers & backtesters — assemble clean, structured cross-sectional TradingView data (price, fundamentals, technicals) for models and research.
  • Crypto analysts — rank 64,000+ crypto pairs by market cap or 24h volume and track price, change and RSI across exchanges.
  • Dividend & value investors — sort stocks by dividend yield or P/E and filter by market cap to surface income and value candidates.
  • Fintech & market-data teams — power dashboards, alerts and internal tools with a scheduled screener feed and no fragile browser automation.
  • Sector & macro analysts — pull an entire sector or country market and study valuation, momentum and size distributions.
  • Forex desks — scrape the full forex grid with live bid/ask, price and % change.
  • Content & newsletter creators — generate daily market movers tables automatically.

📥 Input

Configure the run in the Apify Console UI or pass JSON via the API. Every field is optional — the defaults screen US stocks sorted by market cap.

FieldTypeDescription
marketselectWhich market to screen: america, crypto, forex, or a country (turkey, germany, uk, india, canada, australia, france, spain, italy, brazil, japan). Default america.
minMarketCapintegerOnly symbols with market cap ≥ this value (e.g. 1000000000 = $1B). Leave empty for no minimum.
maxRSIintegerOnly symbols with 14-day RSI ≤ this (e.g. 30 = oversold). Leave empty to skip.
minRSIintegerOnly symbols with 14-day RSI ≥ this (e.g. 70 = overbought). Leave empty to skip.
sectorstringFilter stocks by sector, e.g. Technology Services, Electronic Technology, Finance, Energy Minerals, Health Technology. Leave empty for all.
minVolumeintegerOnly symbols with volume ≥ this value. Leave empty for no minimum.
sortBystringTradingView field to sort by. Default: market cap. Examples: change, volume, RSI, close, price_earnings_ttm.
sortOrderselectSort direction: desc (default) or asc.
extraColumnsarrayExtra TradingView field names to include, e.g. MACD.macd, Volatility.D, average_volume_10d_calc.
maxItemsintegerMaximum number of symbols to return. Default 100.
proxyConfigurationobjectOptional. The scraper works fine without a proxy.

Example input — oversold large-cap US stocks

{
"market": "america",
"minMarketCap": 10000000000,
"maxRSI": 30,
"sortBy": "market_cap_basic",
"sortOrder": "desc",
"maxItems": 100
}

Example input — crypto by market cap

{
"market": "crypto",
"sortBy": "market_cap_calc",
"sortOrder": "desc",
"maxItems": 250
}

📤 Output

Each symbol becomes one dataset record. The example below is a real row from a fresh run (US stocks, sorted by market cap):

{
"symbol": "NASDAQ:AAPL",
"exchange": "NASDAQ",
"ticker": "AAPL",
"name": "Apple Inc.",
"price": 344.63,
"changePercent": -1.2266773666561661,
"changeAbs": -4.28000000000003,
"volume": 67840642,
"marketCap": 5029592216964,
"sector": "Electronic Technology",
"industry": "Telecommunications Equipment",
"rsi": 55.3486424619546,
"peRatio": 39.50683800855181,
"eps": 8.7566,
"dividendYield": 0.3133795664915997,
"high52Week": 351.73,
"low52Week": 243.42,
"tradingViewUrl": "https://www.tradingview.com/symbols/NASDAQ-AAPL/",
"scrapedAt": "2026-11-02T01:29:06.970Z"
}

Example (crypto):

{
"symbol": "BITFINEX:BTCUSD",
"exchange": "BITFINEX",
"ticker": "BTC",
"name": "Bitcoin",
"price": 78547,
"changePercent": 0.16833513996046676,
"changeAbs": 132,
"volume24h": 13063477336.763317,
"marketCap": 1579216104655,
"circulatingSupply": 20105365,
"rsi": 40.418130755751314,
"tradingViewUrl": "https://www.tradingview.com/symbols/BITFINEX-BTCUSD/",
"scrapedAt": "2026-11-02T01:30:01.688Z"
}

Field reference

FieldDescription
symbolFull TradingView symbol, EXCHANGE:TICKER (e.g. NASDAQ:AAPL).
exchangeExchange code parsed from the symbol (e.g. NASDAQ, NYSE, BITFINEX).
tickerTicker / base currency (e.g. AAPL, BTC).
nameFull instrument name.
priceLast price (close).
changePercentPercent change on the day.
changeAbsAbsolute price change on the day.
volumeVolume (stocks/forex).
volume24h24-hour traded value (crypto).
marketCapMarket capitalization.
sectorSector (stocks), e.g. Electronic Technology. Present when available.
industryIndustry (stocks), e.g. Telecommunications Equipment. Present when available.
rsi14-day Relative Strength Index.
peRatioPrice/earnings TTM (stocks). Present when available.
epsEarnings per share TTM (stocks). Present when available.
dividendYieldDividend yield (stocks). Present when available (often null for non-dividend payers).
high52Week / low52Week52-week high / low (stocks).
circulatingSupplyCirculating supply (crypto).
bid / askBid / ask price (forex).
tradingViewUrlDirect link to the symbol page on TradingView.
scrapedAtISO 8601 timestamp of when the row was scraped.

In a fresh 500-symbol US-stock run, the identity and primary fields — symbol, exchange, ticker, name, price, volume, marketCap, sector, industry, tradingViewUrl — came back 100% populated, with rsi, changePercent and high52Week/low52Week at ~99%. Fundamental fields such as peRatio (~96%), eps (~97%) and dividendYield (~91%) populate for stocks that report them and may be null for the rest — this is expected, not a gap. Add any further TradingView field via extraColumns and it appears as its own output column.

🔁 Pagination & scale

The screener returns results in pages of 100. The Actor starts at offset 0, requests a page, writes each new row, then advances the offset by 100 and repeats — until it has collected maxItems, reaches the end of the matched set (totalCount), or a page returns no new rows. Every symbol is de-duplicated by its full EXCHANGE:TICKER symbol as it is saved, so you never get duplicates across pages.

That means the scraper can return hundreds to thousands of symbols in a single run — the matched universe is large (US stocks 20,000+, crypto 65,000+, forex 6,000+). In a fresh verification run it paged through 500 US stocks in under 17 seconds with zero duplicates. Set maxItems to cap the run, or set it high to pull a full market. Server-side filters (minMarketCap, maxRSI, minRSI, sector, minVolume) shrink the matched set before pagination, so a filtered screen downloads only what matches.

⚙️ How to use

  1. Open the Actor on the Apify Console and click Try for free.
  2. Choose a Market (US Stocks, Crypto, Forex, or a country).
  3. Optionally set filters: Min market cap, Max RSI (oversold), Min RSI (overbought), Sector, Min volume.
  4. Set Sort by, Sort order and Max symbols, then click Start.
  5. When the run finishes, export the dataset as JSON, CSV, Excel or HTML, or fetch it via the Apify API.
  6. Automate it: run on a Schedule for a daily market snapshot, or integrate with Make, Zapier, Google Sheets, a webhook or a database.

Run via API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"market": "america",
"minMarketCap": 1000000000, # $1B+
"sortBy": "change",
"sortOrder": "desc",
"maxItems": 200,
}
run = client.actor("haketa/tradingview-scraper").call(run_input=run_input)
for s in client.dataset(run["defaultDatasetId"]).iterate_items():
print(s["ticker"], s["price"], s["changePercent"], "% RSI", s["rsi"])

Run via API (Node.js)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/tradingview-scraper').call({
market: 'crypto',
sortBy: 'market_cap_calc',
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map(i => `${i.ticker} $${i.price}`));

💡 Tips

  • Oversold screen: maxRSI: 30 finds oversold candidates; overbought: minRSI: 70. Combine with minMarketCap to keep it to liquid names.
  • Top movers: sortBy: "change" with sortOrder: "desc" (or asc for the biggest losers).
  • Dividend screen: sortBy: "dividends_yield" and filter by minMarketCap to surface quality income stocks.
  • Add indicators: use extraColumns for MACD.macd, Volatility.D, average_volume_10d_calc, or any other TradingView field — it becomes its own column.
  • Full market pull: raise maxItems (e.g. several thousand) to export an entire market; leave filters empty.
  • Time series: schedule the same input daily and append runs to build your own historical dataset.

❓ FAQ

Is scraping TradingView legal? This Actor collects only publicly available screener data for research and informational purposes, and is not affiliated with or endorsed by TradingView. It is not financial, investment or trading advice. You are responsible for complying with TradingView's Terms of Service, robots directives and the laws that apply to you, and for using reasonable request volumes.

Do I need a TradingView account or API key? No. There is no login and no key — the scraper reads the public screener endpoint directly.

Is there an official TradingView API? There is no documented public bulk-data API for the screener. This Actor acts as a convenient TradingView API layer: it speaks the screener's request format and returns clean, labelled JSON.

How many symbols can I get and how fast? As many as match your filters — the US market alone has 20,000+ symbols and crypto 65,000+. Results come in pages of 100 over a fast HTTP endpoint; a fresh run pulled 500 US stocks in under 17 seconds. Use maxItems to cap the run.

Do I need a proxy? No. The screener endpoint has no anti-bot blocking, so the scraper runs fine without a proxy. You can still attach an Apify proxy via proxyConfiguration if you prefer.

Which export formats are supported? JSON, CSV, Excel, HTML, or via the Apify API — plus Google Sheets, webhooks, Make and Zapier.

How fresh is the data? Rows reflect the latest screener values at scrape time — the same real-time or slightly delayed figures shown on the TradingView site, depending on the exchange. Every record carries a scrapedAt timestamp.

Can I filter by sector or RSI? Yes. Set sector to a TradingView sector name, maxRSI/minRSI for oversold/overbought, and minMarketCap/minVolume for size and liquidity. Filters are applied before pagination.

Can I add fields that aren't in the presets? Yes — put TradingView field names in extraColumns (e.g. MACD.macd, Volatility.D) and each appears as its own output column.

Can I scrape crypto and forex too, not just stocks? Yes. Set market to crypto for 64,000+ crypto pairs (with volume24h and circulatingSupply) or forex for the full currency grid (with bid/ask). Each market returns the fields that make sense for it.

Can I schedule it? Yes — use Apify Schedules for a daily market snapshot and build a time series.


This Actor collects only publicly available market data for research and informational purposes. It is not financial, investment, or trading advice. Market data may be delayed and should not be relied upon for trading decisions. Respect TradingView's Terms of Service and robots directives, do not use the data for unlawful purposes, and use reasonable request volumes. This project is an independent tool and is not affiliated with, endorsed by, or sponsored by TradingView.


Ready to screen the markets? Click Try for free, pick a market, and export your first TradingView dataset in seconds.