FinViz Stock Screener avatar

FinViz Stock Screener

Pricing

from $20.00 / 1,000 results

Go to Apify Store
FinViz Stock Screener

FinViz Stock Screener

Screen US stocks and ETFs from FinViz. Stocks: 68 fields each (valuation, fundamentals, technicals, performance, ownership), 110 with analyst targets, plus optional 10-year financials, revenue breakdown, insiders and top holders. ETFs: ~6,100 funds with expense ratio, AUM and flows.

Pricing

from $20.00 / 1,000 results

Rating

0.0

(0)

Developer

Sheshinmcfly

Sheshinmcfly

Maintained by Community

Actor stats

2

Bookmarked

180

Total users

27

Monthly active users

6 days ago

Last modified

Share

📈 FinViz Stock Screener

Screen the US market and get up to 108 data points per stock — or screen ~6,100 ETFs by expense ratio, assets, fund flows and returns. No API key, no login, no CSV wrangling.

FinViz is the screener traders open every morning. This actor turns any of its screens into clean JSON or CSV: pick a signal (top gainers, unusual volume, oversold…) or a chart pattern (channels, wedges, head & shoulders), narrow by sector, market cap, country or theme, and get back a full fundamental and technical snapshot per ticker — not just the overview row. Switch to ETF mode to screen every US-listed ETF by category, issuer, expense ratio, fund flows, total return or tracked index.

⚡ Fast~12s for 200 stocks; the full ETF list in about 20s.
📊 Deep66 fields from 6 merged FinViz views, plus 42 optional analyst/valuation/growth fields.
🧺 ETF screener~6,100 ETFs: expense ratio, AUM, holdings, fund flows (1M/3M/YTD), returns (1/3/5Y).
🎯 26 signals9 market screens + 17 chart-pattern scans, all verified to return live data.
📋 Or your own listSkip the screener entirely and pass a watchlist of stock or ETF tickers.
✅ CompleteEvery row is validated before it ships — no half-filled records, no silent gaps.
🔓 No credentialsNothing to sign up for. Point it at a screener and run.

What data does it extract?

Core: ticker, company, sector, industry, country, marketCap, price, changePercent, volume, website

Valuation: pe, forwardPe, peg, ps, pb, pc, pfcf, epsThisY, epsNextY, epsPast5Y, epsNext5Y, salesPast5Y

Financial: dividend, roa, roe, roic, currentRatio, quickRatio, debtEq, ltDebtEq, grossMargin, operMargin, profitMargin, earningsDate

Technical: beta, atr, sma20, sma50, sma200, high52w, low52w, rsi, gap, changeFromOpen

Performance: perfWeek, perfMonth, perfQuarter, perfHalf, perfYtd, perfYear, perf3Y, perf5Y, perf10Y, volatilityWeek, volatilityMonth, avgVolume, relVolume

Ownership: sharesOutstanding, float, insiderOwn, insiderTrans (6-month change), instOwn, instTrans (3-month change), shortFloat, shortRatio

Each stock comes as a single record covering FinViz's Overview, Valuation, Financial, Technical, Performance and Ownership data.

Optional: analyst ratings & company data

Turn on Add analyst ratings & company data to append 42 more fields per stock that no screener table exposes:

Analyst coverage: analystRecom (1=Buy … 5=Sell), analystRecomLabel, targetPrice, targetUpsidePercent

Company profile: employees, ipoDate, optionable, shortable, indexMembership, exchange

Growth: epsPast3Y, salesPast3Y, dividendGrowth1Y, dividendGrowth3Y, dividendGrowth5Y

Today's price action: open, dayHigh, dayLow, prevClose, high50d, low50d (distance from the 50-day high/low)

Enterprise valuation: enterpriseValue, evEbitda, evSales, bookPerShare, cashPerShare, income, sales

Dividend detail: dividendEst, dividendTtm, dividendExDate, payoutRatio

Earnings detail: epsTtm, epsNextQ, epsQoQ, salesQoQ, epsYoYTtm, salesYoYTtm, earningsSurprisePercent, salesSurprisePercent. The field epsNextYEstimate is present in the output for compatibility but is not currently populated — FinViz publishes next year's EPS growth rate rather than the dollar estimate, and this actor does not compute a figure and present it as a reported one.

Short interest: shortInterest

It adds no extra time. ETFs and newly listed tickers legitimately lack some of these (no analyst coverage, no employee count, no dividend history), in which case the field comes back null rather than guessed.

Optional: financial history, revenue breakdown, insiders & top holders

Turn on Add financial history, revenue breakdown, insiders & top holders (includeDeepData) to attach, per stock:

FieldWhat it holds
fundamentalsAnnual, fundamentalsQuarterlyUp to 10 years + TTM and 9 quarters of eps (GAAP), salesMillions and sharesOutstandingMillions
incomeStatementLatest fiscal years: totalRevenue, grossProfit, operatingIncome, netIncome, researchAndDevelopment, interestExpense, incomeTaxes… (incomeStatementUnit: millions, incomeStatementCurrency)
revenueByProduct, revenueByRegion, revenueBySegmentRevenue per product line, geography and business segment, by fiscal year
insiderActivity, insiderNetValue13m13 months of insider buying and selling (value and number of transactions) and the net total
topInstitutionalHolders, topFundHoldersTop 10 investment managers and top 10 funds with their ownership %
{
"ticker": "AAPL",
"fundamentalsAnnual": [{ "period": "2025", "eps": 7.465, "salesMillions": 416161, "sharesOutstandingMillions": 14773.26 }],
"incomeStatement": [{ "period": "2025FY", "totalRevenue": 416161, "grossProfit": 195201, "operatingIncome": 133050, "netIncome": 112010 }],
"revenueByProduct": [{ "name": "iPhone", "fiscalYear": "2025", "revenue": 209586000000 }],
"insiderNetValue13m": -265820817,
"topInstitutionalHolders": [{ "name": "BlackRock, Inc.", "percent": 7.92 }]
}

It adds about 7 seconds for 10 stocks and 15 seconds for 40. Not every company publishes every block (many have no segment breakdown), so missing parts come back as empty lists.


ETF screener

Set What to screen to ETFs ("mode": "etfs") to screen ~6,100 US-listed ETFs instead of stocks. Each ETF comes back with:

Fund: ticker, name, category, assetType, tags, trackedIndex, expenseRatio (%), totalHoldings, aum (assets under management, USD), website

Fund flows: netFlows1M, netFlows3M, netFlowsYtd (USD) and the same as % of assets: netFlows1MPercent, netFlows3MPercent, netFlowsYtdPercent

Returns: return1Y, return3Y, return5Y (total return, %)

Market data: price, changePercent, volume, avgVolume, relVolume, dividendYield, perfWeek … perf5Y, sma20, sma50, sma200, rsi, high52w, low52w, beta, atr

ETF values are plain numbers (0.03 means an expense ratio of 0.03%), ready for sorting and math.

Filters (all combine): category, asset type, max expense ratio, fund flows, total return, dividend yield, issuer (e.g. Vanguard, iShares, SPDR), tag (e.g. semiconductors, covered-call, bitcoin, or a stock ticker like NVDA) and tracked index (e.g. S&P 500 Index). Issuer, tag and index are typed as plain text and matched against FinViz's official lists — a name that matches nothing stops the run with suggestions instead of quietly returning every ETF.

Sort by: assets (default), expense ratio, fund flows, 1/3/5-year return, dividend yield, today's % change (top gainers or losers), volume or relative volume.


Available screeners

26 signals, all verified to return live results. Combine as many as you like in one run.

Market signals

ScreenerDescription
ta_topgainersStocks with the highest % gain today
ta_toplosersStocks with the highest % loss today
ta_newhighStocks hitting 52-week highs
ta_newlowStocks hitting 52-week lows
ta_mostactiveHighest trading volume stocks
ta_unusualvolumeStocks with unusual volume spikes
ta_mostvolatileMost volatile stocks today
ta_overboughtStocks with RSI > 70
ta_oversoldStocks with RSI < 30

Chart-pattern scans

FinViz's own technical pattern recognition — screen for setups instead of raw movers.

ScreenerPattern
ta_p_channelup / ta_p_channeldown / ta_p_channelAscending, descending or horizontal channel
ta_p_wedgeup / ta_p_wedgedown / ta_p_wedgeRising, falling or symmetrical wedge
ta_p_wedgeresistance / ta_p_wedgesupportAscending / descending triangle
ta_p_doubletop / ta_p_doublebottomDouble top / double bottom reversal
ta_p_multipletop / ta_p_multiplebottomMultiple top / multiple bottom
ta_p_headandshoulders / ta_p_headandshouldersinvHead & shoulders, and its inverse
ta_p_horizontalHorizontal support / resistance
ta_p_tlresistance / ta_p_tlsupportTrendline resistance / support

Who uses this, and for what

WhoWhat they run it for
📈 Day tradersCatch top movers and unusual volume before the close
🔄 Swing tradersFind overbought/oversold setups for entries and exits
🤖 Algo & bot buildersFeed live fundamentals and technicals into systematic strategies
🧮 Quant researchersPull value/momentum/quality factors across a screened universe
📰 Newsletters & finance mediaGenerate screened tables for daily market commentary
💼 Portfolio managersWatch holdings hitting 52-week highs, lows or analyst target changes
🎓 Students & educatorsBuild coursework datasets without paying for a market-data API

Quick start — copy an input and run

Today's biggest movers (fastest, good first run)

{ "screeners": ["ta_topgainers"], "maxResults": 50 }

Undervalued large-cap tech, with analyst targets

{
"screeners": ["ta_mostactive"],
"sector": "technology",
"marketCap": "large",
"includeQuoteData": true,
"maxResults": 100
}

Oversold S&P 500 names (mean-reversion candidates)

{ "screeners": ["ta_oversold"], "index": "sp500", "maxResults": 50 }

Breakout setups by chart pattern (ascending triangles and upward channels)

{ "screeners": ["ta_p_wedgeresistance", "ta_p_channelup"], "maxResults": 50 }

Your own watchlist — skip the screener and name the tickers

{ "tickers": ["AAPL", "MSFT", "NVDA", "TSLA"], "includeQuoteData": true }

AI-theme stocks — any FinViz filter code works via customFilters

{ "screeners": ["ta_mostactive"], "customFilters": "theme_artificialintelligence" }

Cheapest corporate-bond ETFs

{ "mode": "etfs", "etfCategory": "bondscorporate", "etfMaxExpense": "u01", "etfSort": "expenseRatio" }

Where the money is going — ETFs with the largest inflows this year

{ "mode": "etfs", "etfSort": "flowsYtd", "maxResults": 50 }

Every Vanguard ETF, or the whole ETF universe

{ "mode": "etfs", "etfSponsor": "Vanguard", "maxResults": 10000 }

Semiconductor ETFs up more than 10% over a year

{ "mode": "etfs", "etfTag": "semiconductors", "etfReturn": "1yo10", "etfSort": "return1Y" }

Run it every morning

A screener is most useful on a schedule. Set one up once and the data is waiting for you before the open:

  1. Run the actor once with the input you want.
  2. On the run page, select Actions → Schedule.
  3. Pick a time — most users go with a weekday run shortly before the market opens.

Common setups:

What you wantHow
🌅 Daily movers before the openta_topgainers + ta_toplosers, scheduled on weekdays
👀 Your portfolio, every morningwatchlist mode with your tickers + Add analyst ratings on
📉 Oversold watchta_oversold, filtered by sector or market cap
🔔 Pattern scansany of the 17 chart-pattern screeners, weekly
🧺 ETF fund-flow trackerETF mode sorted by fund flows, weekly — see where money moves

Each run writes to its own dataset, so you build a history you can compare over time, and you can pull any run straight from the API.

How to use

  1. Open the actor and configure:
    • What to screen: Stocks (default) or ETFs
    • Screeners: Select one or more technical screener filters (top gainers, oversold, etc.) — stocks only
    • Max results: Cap the number of stocks per screener, or of ETFs
    • Sector / Industry / Market Cap / Country / Index (optional): narrow the stock universe before screening
    • ETF screener section (optional): category, asset type, expense ratio, fund flows, return, dividend yield, issuer, tag, tracked index and sort order
    • Custom FinViz filters (advanced, optional): paste any raw FinViz filter code — e.g. theme_artificialintelligence to screen by Theme (AI, EV, Crypto, Cloud, etc.), or an_recom_buy for analyst recommendation. Combines with the filters above.
  2. Click Start
  3. Download results as JSON, CSV, or Excel

Input filters reference

FieldTypeExampleNotes
modeselectstocksstocks (default) or etfs
screenersarray["ta_topgainers"]One or more technical screener signals (stocks)
tickersarray["AAPL","MSFT"]Watchlist mode — fetch these exact symbols (stocks, or ETFs in ETF mode) and ignore the screener/filters
maxResultsinteger100Stocks: max per screener (up to 500). ETFs: max ETFs (up to the full ~6,100)
sectorselecttechnology11 FinViz sectors
industrytextsemiconductorsAny FinViz industry slug
marketCapselectlargemega / large / mid / small / micro / nano
countryselectusausa / notusa
indexselectsp500sp500 / ndx / dji / rut
customFilterstexttheme_artificialintelligenceAdvanced — any raw FinViz filter code(s), comma-separated (ETF codes in ETF mode, checked before use)
includeQuoteDatabooleanfalseAppend 42 analyst/company/valuation/growth fields (adds ~10s per 100 stocks)
etfCategoryselectbondscorporateETF mode — 34 categories
etfAssetTypeselectequitiesstocksETF mode — 28 asset types
etfMaxExpenseselectu02ETF mode — net expense ratio under 0.1% … 1.0%
etfFundFlowsselectytdo10ETF mode — net flows over/under a % for 1M, 3M, YTD or 1Y
etfReturnselect3yo10ETF mode — total return over/under a % for 1, 3, 5, 10 years or since inception
etfDividendYieldselecto3ETF mode — yield threshold
etfSponsortextVanguardETF mode — issuer name
etfTagtextcovered-callETF mode — one theme tag or stock ticker
etfTrackedIndextextNasdaq 100 IndexETF mode — index the fund tracks
etfSortselectflowsYtdETF mode — sort order (default: largest assets first)

Agent-ready via x402: AI agents can run this actor directly with USDC on Base — no Apify account needed. See x402 protocol docs.


Example output (JSON)

{
"screener": "ta_topgainers",
"ticker": "AAPL",
"company": "Apple Inc",
"sector": "Technology",
"industry": "Consumer Electronics",
"country": "USA",
"marketCap": "3.12T",
"price": 185.42,
"changePercent": 5.21,
"volume": 52341800,
"pe": 32.5,
"forwardPe": 28.1,
"peg": 2.4,
"ps": 8.2,
"pb": 45.3,
"roe": "147.40%",
"profitMargin": "25.30%",
"debtEq": 1.95,
"beta": 1.29,
"rsi": 58.4,
"sma200": "12.30%",
"perfYear": "40.20%",
"perfYtd": "18.30%",
"instOwn": "60.50%",
"instTrans": "0.25%",
"shortFloat": "0.65%",
"website": "http://www.apple.com",
"url": "https://finviz.com/stock?t=AAPL",
"extractedAt": "2026-06-11T12:00:00.000Z"
}

ETF mode (one row, abridged)

{
"screener": "etf",
"ticker": "VOO",
"name": "Vanguard S&P 500 ETF",
"category": "US Equities - Broad Market & Size",
"assetType": "Equities (Stocks)",
"trackedIndex": "S&P 500 Index",
"expenseRatio": 0.03,
"totalHoldings": 517,
"aum": 1053558099623,
"price": 707.52,
"dividendYield": 1.05,
"netFlowsYtd": 114841576368,
"netFlowsYtdPercent": 12.23,
"return1Y": 15.24,
"return3Y": 23.08,
"return5Y": 12.91,
"perfYear": 12.3,
"url": "https://finviz.com/stock?t=VOO"
}

Performance

Measured runs:

RequestStocksTime
Top gainers, default100~6 s
2 screeners × 40, with analyst data80~5 s
Most volatile, with analyst data200~6 s
3 chart-pattern screeners, with analyst data177~8 s
10 tickers with financial history & holders10~13 s
Top gainers 40, analyst data + financial history & holders40~20 s

Analyst & company data adds no time; financial history & holders adds a few seconds per 10 stocks.

ETF mode: filtered runs and up to 1,000 ETFs typically finish in under 10 seconds; the full list of ~6,100 ETFs in about 20 seconds.

Times vary run to run depending on live site conditions. Every result you receive is complete and validated — no partial or silently-missing fields.


Pricing

Pay-per-event: $20.00 per 1,000 results ($0.02 per stock or ETF returned) + $0.00005 per Actor start. Extracting 100 stocks costs approximately $2.00 USD. Set Max results to control spend — you are only charged for rows actually returned.



FAQ

Do I need a FinViz account or API key? No. This actor extracts publicly available screener data — no login, subscription, or API key required.

Which screeners can I scrape? 26 stock screeners — 9 market signals (top gainers, top losers, new highs, new lows, most active, unusual volume, most volatile, overbought, oversold) and 17 chart-pattern scans — plus the ETF screener. Select one or more per run.

Can it screen ETFs? Yes. Set What to screen to ETFs to get ~6,100 US-listed ETFs with expense ratio, assets under management, holdings count, fund flows and 1/3/5-year returns, filtered by category, issuer, tag, tracked index and more, and sorted however you like.

How fresh is the data? It reflects FinViz at the moment of the run — effectively real-time intraday market data.

Can I extract more than 100 stocks? Yes. Each screener signal holds up to 200 stocks and you get all of them with Max results 200; a ticker list can hold up to 1,000 symbols; ETF mode goes up to the full list. You are only charged for rows actually returned — never for repeats.

Do I need proxies? No setup needed — keep the default proxy settings.

What export formats are available? JSON, CSV, and Excel — download from the run's dataset or pull via the Apify API.


Keywords

finviz stock screener, stock market scraper, top gainers losers, unusual volume stocks, stock screener data, day trading scanner, market movers, NYSE NASDAQ stocks, overbought oversold stocks, finviz scraper, etf screener, etf data, etf expense ratio, etf fund flows, etf list


Changelog

  • v1.9 (2026-10-29) — Much faster, new financial history option, and no more repeated rows. A 100-stock run now takes about 6 seconds instead of ~50, and analyst & company data no longer adds time. New option Add financial history, revenue breakdown, insiders & top holders: 10 years and 9 quarters of EPS, sales and shares outstanding, income statements, revenue by product/region/segment, 13 months of insider activity and the top 10 institutional and fund holders. Ticker lists now accept up to 1,000 symbols. Fixed: asking for more stocks than a screener holds could return some stocks twice — every stock now appears once per screener. All existing fields keep exactly the same format.
  • v1.8 (2026-10-27) — New ETF screener, and 16 more fields per stock. Set What to screen to ETFs to screen ~6,100 US-listed ETFs by category, asset type, issuer, expense ratio, fund flows, total return, dividend yield, tag or tracked index — with expense ratio, assets under management, holdings count, fund flows (1M/3M/YTD) and 1/3/5-year returns per fund; the full list takes about 20 seconds. Every stock now also includes its website, change from the open, and insider and institutional transactions; with Add analyst ratings & company data on you additionally get exchange, 3-year EPS and sales growth, 1/3/5-year dividend growth, today's open/high/low, previous close and distance from the 50-day high/low. All existing fields keep exactly the same format. The README now states the actual price per result ($0.02), which has not changed.
  • v1.7 (2026-10-25) — Adapted to FinViz's redesigned website. FinViz rolled out a new site in October, and runs started during the rollout could finish without returning stocks. Results are back to full coverage — all screener views plus the optional analyst and company data — and every field keeps exactly the format earlier versions published, so existing integrations need no changes. The url field now points to FinViz's new stock page address.
  • v1.6 (2026-10-06) — Analyst and company data now arrives on every stock, and far faster. With Add analyst ratings & company data turned on, a 200-stock request previously returned those extra fields for only part of the list on a bad run; it now covers the whole list and takes about a quarter as long. A full 500-result request with the extra data finished in 73 seconds in testing, down from 241. Dates and the dividend fields keep exactly the format earlier versions published. One field, epsNextYEstimate, is no longer populated — see Earnings detail above for why.
  • v1.5 (2026-10-05) — Complete screener data on large requests, and faster. Requests for several hundred results now return every screener field for every stock — previously a handful of rows could come back missing their valuation, financial, performance or ownership figures. The largest requests also finish in roughly half the time. No change to pricing or to the fields you get.
  • v1.4 (2026-08-18) — Analyst coverage and company data, plus watchlist mode. Turn on Add analyst ratings & company data to append 30 fields no screener table carries: analyst consensus and mean target price, enterprise value and EV/EBITDA, employees, IPO date, short interest, earnings-surprise history and the full dividend block — up to 92 fields per stock. You can also skip the screener entirely and pass your own list of tickers. Screener presets went from 9 to 26, adding 17 chart-pattern scans (channels, wedges, triangles, double tops and bottoms, head & shoulders, trendlines).
  • v1.3 (2026-07-09) — Reliability + speed improvements: fixed an issue where requests for more than ~20 results could return fewer items than requested. Larger requests (100+ results) are now both significantly faster and guaranteed complete.
  • v1.2 (2026-07-09) — New pre-filters: narrow the universe by Sector, Industry, Market Cap, Country, or Theme (Artificial Intelligence, Cloud Computing, Electric Vehicles, Cybersecurity, Robotics, Semiconductors — a filter no other FinViz actor offers) before running a screener — plus an advanced "Custom FinViz filters" field to use any FinViz filter code directly. Same ~60-field output, same price.
  • v1.1 (2026-06-11) — Much richer data: each stock now includes ~50 fields — valuation ratios (Forward P/E, PEG, P/S, P/B), financial fundamentals (ROE, ROA, margins, debt), technicals (Beta, RSI, SMA20/50/200), performance (week → year) and ownership (institutional, insider, short float) — merged from FinViz's six screener views into one record, at the same low price.
  • v1.0.20 (2026-06-01) — Reliability improvements, at no extra cost to you.
  • v1.0.18 (2026-05-26) — Added a data-quality report at the end of each run; code cleanup and faster item counting.
  • v1.0 — Initial release: 9 technical screeners, real-time market data, JSON/CSV/Excel export.