# Finviz Stock Screener Scraper (`crawlerbros/finviz-scraper`) Actor

Scrape Finviz stock screener - filter stocks by exchange, sector, industry, market cap, P/E ratio, and 50+ other criteria. Get overview data and news for specific tickers.

- **URL**: https://apify.com/crawlerbros/finviz-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, News, Developer tools
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Finviz Stock Screener Scraper

Scrape **Finviz** — the popular stock screener and market-visualization platform used by traders and investors. Screen thousands of US-listed stocks with 90+ fundamental, technical, and ownership filters, pull a full fundamentals snapshot for any ticker, fetch a ticker's latest news, monitor market-wide insider (SEC Form 4) transactions, or pull sector/industry/country/market-cap aggregate performance.

### What this actor does

- **Five modes:** `screener` (default), `stockOverview`, `newsForTicker`, `insiderTrading`, `groupPerformance`
- **Stock screener** with 90+ combinable filters — exchange, sector, industry, market cap, country, index, theme/subtheme, valuation, growth, ownership, technical, and signal-based (Top Gainers, Unusual Volume, chart patterns, etc.)
- **Stock overview** returns a rich fundamentals snapshot for one ticker — valuation, ownership, technicals, and performance
- **Optional extended metrics** on the screener (`includeExtendedMetrics`) add ~45 more fields per row (Forward P/E, PEG, P/B, ROE/ROA/ROIC, margins, ownership %, moving averages, etc.)
- **Insider trading** and **group performance** modes cover market-wide SEC Form 4 filings and sector/industry/country/cap-tier aggregate stats
- **Empty fields are omitted** — a field only appears on a record if Finviz actually published a value for it

### Output: per stock (mode = `screener`)

- `ticker`, `company`
- `sector`, `industry`, `country`
- `marketCap`, `peRatio`, `price`, `change`, `volume`
- `avgVolume`, `float`, `short`, `analyst`
- `performanceWeek`, `performanceMonth`, `performanceQuarter`, `performanceYear`, `performanceYTD`
- `earningsDate`
- `finvizUrl` — link to the stock's Finviz page
- `recordType: "stock"`, `scrapedAt`

With `includeExtendedMetrics: true`, rows are additionally enriched with (when published): `forwardPE`, `peg`, `ps`, `pb`, `pc`, `pfcf`, `epsThisYear`, `epsNextYear`, `epsPast5Y`, `epsNext5Y`, `salesPast5Y`, `sharesOutstanding`, `insiderOwn`, `insiderTrans`, `instOwn`, `instTrans`, `shortRatio`, `performanceHalfYear`, `performance3Y`, `performance5Y`, `performance10Y`, `volatilityWeek`, `volatilityMonth`, `relVolume`, `dividendYield`, `roa`, `roe`, `roic`, `currentRatio`, `quickRatio`, `ltDebtEq`, `debtEq`, `grossMargin`, `operMargin`, `profitMargin`, `beta`, `atr`, `sma20`, `sma50`, `sma200`, `pctFromHigh52w`, `pctFromLow52w`, `rsi`, `changeFromOpen`, `gap`.

### Output: stock fundamentals (mode = `stockOverview`)

Only the fields Finviz publishes for the given ticker are included — up to 80+ of:

- `ticker`, `company`, `description`, `finvizUrl`
- `sector`, `industry`, `country`, `exchange`, `website`, `index`
- Valuation: `marketCap`, `enterpriseValue`, `income`, `sales`, `bookPerShare`, `cashPerShare`, `peRatio`, `forwardPE`, `peg`, `ps`, `pb`, `pc`, `pfcf`, `evEbitda`, `evSales`
- Dividends: `dividend`, `dividendYield`, `dividendEst`, `dividendTTM`, `dividendExDate`, `dividendGrowth3_5Y`, `payout`
- Growth & EPS: `eps`, `epsNextYear`, `epsNextYearGrowth`, `epsNextQ`, `epsThisYear`, `epsNext5Y`, `epsPast5Y`, `epsPast3_5Y`, `salesPast5Y`, `salesPast3_5Y`, `epsYoYTTM`, `salesYoYTTM`, `epsQoQ`, `salesQoQ`, `epsSalesSurprise`
- Ownership: `insiderOwn`, `insiderTrans`, `instOwn`, `instTrans`, `sharesOutstanding`, `float`, `short`, `shortRatio`, `shortInterest`
- Financial health: `quickRatio`, `currentRatio`, `debtEq`, `ltDebtEq`, `roa`, `roe`, `roi`, `roic`, `grossMargin`, `operMargin`, `profitMargin`
- Technicals: `sma20`, `sma50`, `sma200`, `high52w`, `low52w`, `pctFromHigh52w`, `pctFromLow52w`, `volatility`, `atr`, `rsi`, `beta`, `relVolume`, `avgVolume`, `volume`, `trades`, `optionable`, `shortable`, `optionShort`
- Company info: `employees`, `ipoDate`
- Performance: `performanceWeek`, `performanceMonth`, `performanceQuarter`, `performanceHalfYear`, `performanceYTD`, `performanceYear`, `performance3Y`, `performance5Y`, `performance10Y`
- Trading: `analyst`, `targetPrice`, `prevClose`, `price`, `change`, `earningsDate`
- `recordType: "stockOverview"`, `scrapedAt`

### Output: per article (mode = `newsForTicker`)

- `ticker`
- `headline`
- `source`
- `url`
- `publishedAt`
- `recordType: "news"`, `scrapedAt`

### Output: per transaction (mode = `insiderTrading`)

- `ticker`, `finvizUrl`
- `company`
- `owner` — name of the insider
- `relationship` — e.g. CEO, Director, 10% Owner
- `transactionDate`
- `transactionType` — Buy / Sale / Option Exercise
- `costPerShare`
- `shares`
- `value`
- `sharesTotal` — post-transaction holding
- `secFormUrl` — link to the official SEC filing
- `secFormFiledAt`
- `recordType: "insiderTrading"`, `scrapedAt`

### Output: per group (mode = `groupPerformance`)

- `groupName`, `groupBy`, `view`
- `stocksCount`
- Fields present depend on the chosen `groupView`:
  - `overview` — `marketCap`, `dividendYield`, `peRatio`, `forwardPE`, `peg`, `debtEq`, `ltDebtEq`, `shortFloat`, `analystRecom`, `change`, `volume`
  - `valuation` — `peRatio`, `forwardPE`, `peg`, `ps`, `pb`, `pc`, `pfcf`, `epsPast5Y`, `epsNext5Y`, `salesPast5Y`, `change`, `volume`
  - `performance` — `performanceWeek`, `performanceMonth`, `performanceQuarter`, `performanceHalfYear`, `performanceYear`, `performanceYTD`, `avgVolume`, `relVolume`, `change`, `volume`
  - `financial` — `roa`, `roe`, `roic`, `currentRatio`, `quickRatio`, `grossMargin`, `operMargin`, `profitMargin`, `change`, `volume`
- `recordType: "groupPerformance"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `screener` | `screener` / `stockOverview` / `newsForTicker` / `insiderTrading` / `groupPerformance` |
| `ticker` | string | – | Stock ticker, e.g. `AAPL` (required for `stockOverview` and `newsForTicker`) |
| `exchange` | string | – | AMEX / CBOE / NASDAQ / NYSE (`screener`) |
| `sector` | string | – | One of 11 market sectors (`screener`) |
| `industry` | string | – | One of 145+ granular industry sub-classifications, more specific than `sector` (`screener`) |
| `index` | string | – | S\&P 500 / NASDAQ 100 / DJIA / Russell 2000 (`screener`) |
| `signal` | string | – | Technical/fundamental event, e.g. Top Gainers, Unusual Volume, chart patterns (`screener`) |
| `marketCap` | string | – | mega / large / mid / small / micro / nano (`screener`) |
| `country` | string | – | One of 60+ countries/regions (`screener`) |
| `priceFilter` | string | – | Share price range, e.g. Under $10, $5–$50 (`screener`) |
| `avgVolumeFilter` | string | – | 3-month average daily volume tier (`screener`) |
| `dividendYieldFilter` | string | – | None / Positive / High / Very High / threshold (`screener`) |
| `analystRecomFilter` | string | – | Strong Buy through Strong Sell, incl. "or better/worse" (`screener`) |
| `shortFloatFilter` | string | – | Short interest as % of float (`screener`) |
| `ipoDateFilter` | string | – | How long ago the stock IPO'd (`screener`) |
| `earningsDateFilter` | string | – | Scheduled earnings-report timing (`screener`) |
| `theme` | string | – | Finviz thematic classification, e.g. AI, Cybersecurity, EVs (`screener`) |
| `subtheme` | string | – | Fine-grained slice within a `theme`, 268 options (`screener`) |
| `targetPriceFilter` | string | – | Analyst target price vs. current price (`screener`) |
| `currentVolumeFilter` | string | – | Today's trading volume (`screener`) |
| `floatFilter` | string | – | Public float, absolute or % of shares outstanding (`screener`) |
| `relativeVolumeFilter` | string | – | Today's volume relative to 3-month average (`screener`) |
| `sharesOutstandingFilter` | string | – | Total shares outstanding (`screener`) |
| `optionableShortableFilter` | string | – | Has listed options and/or is shortable (`screener`) |
| `peFilter` | string | – | Trailing P/E ratio (`screener`) |
| `forwardPeFilter` | string | – | Forward P/E ratio (`screener`) |
| `pegFilter` | string | – | PEG ratio (`screener`) |
| `pbFilter` | string | – | Price/Book ratio (`screener`) |
| `psFilter` | string | – | Price/Sales ratio (`screener`) |
| `roeFilter` | string | – | Return on Equity (`screener`) |
| `debtEquityFilter` | string | – | Total Debt/Equity ratio (`screener`) |
| `epsGrowthThisYearFilter` | string | – | This year's EPS growth (`screener`) |
| `rsiFilter` | string | – | 14-day RSI (`screener`) |
| `betaFilter` | string | – | Beta / volatility vs. market (`screener`) |
| `performanceFilter` | string | – | Price performance over today/week/month/quarter/half/year/YTD (`screener`) |
| `roaFilter` | string | – | Return on Assets (`screener`) |
| `roiFilter` | string | – | Return on Investment (`screener`) |
| `currentRatioFilter` | string | – | Current ratio (`screener`) |
| `quickRatioFilter` | string | – | Quick ratio (`screener`) |
| `grossMarginFilter` | string | – | Gross profit margin (`screener`) |
| `operMarginFilter` | string | – | Operating profit margin (`screener`) |
| `netMarginFilter` | string | – | Net profit margin (`screener`) |
| `insiderOwnFilter` | string | – | % owned by company insiders (`screener`) |
| `instOwnFilter` | string | – | % owned by institutions (`screener`) |
| `evEbitdaFilter` | string | – | EV/EBITDA ratio (`screener`) |
| `pfcfFilter` | string | – | Price/Free Cash Flow ratio (`screener`) |
| `epsGrowthTTMFilter` | string | – | Trailing-12-month EPS growth vs. prior TTM (`screener`) |
| `salesGrowthTTMFilter` | string | – | Trailing-12-month revenue growth vs. prior TTM (`screener`) |
| `insiderTransFilter` | string | – | % change in insider ownership, last 6 months (`screener`) |
| `instTransFilter` | string | – | % change in institutional ownership, last 3 months (`screener`) |
| `highLow52wFilter` | string | – | Proximity to 52-week high/low (`screener`) |
| `smaFilter50` | string | – | Price relative to 50-day SMA, incl. crossovers (`screener`) |
| `smaFilter20` | string | – | Price relative to 20-day SMA, incl. crossovers (`screener`) |
| `smaFilter200` | string | – | Price relative to 200-day SMA, incl. crossovers (`screener`) |
| `todayChangeFilter` | string | – | Today's price change % (`screener`) |
| `gapFilter` | string | – | Today's opening gap % vs. prior close (`screener`) |
| `ltDebtEqFilter` | string | – | Long-term Debt/Equity ratio (`screener`) |
| `evSalesFilter` | string | – | EV/Sales ratio (`screener`) |
| `priceCashFilter` | string | – | Price/Cash ratio (`screener`) |
| `payoutRatioFilter` | string | – | Dividend payout ratio (`screener`) |
| `epsGrowthNext5YFilter` | string | – | Analyst-estimated 5-year EPS growth (`screener`) |
| `epsGrowthNextYearFilter` | string | – | Estimated EPS growth for next year (`screener`) |
| `epsGrowthPast3YFilter` | string | – | EPS growth over past 3 years (`screener`) |
| `epsGrowthPast5YFilter` | string | – | EPS growth over past 5 years (`screener`) |
| `salesGrowthPast3YFilter` | string | – | Revenue growth over past 3 years (`screener`) |
| `salesGrowthPast5YFilter` | string | – | Revenue growth over past 5 years (`screener`) |
| `epsGrowthQoQFilter` | string | – | EPS growth vs. prior quarter (`screener`) |
| `salesGrowthQoQFilter` | string | – | Revenue growth vs. prior quarter (`screener`) |
| `dividendGrowthFilter` | string | – | Dividend growth over 1/3/5-year or streak windows (`screener`) |
| `allTimeHighLowFilter` | string | – | Proximity to all-time high/low (`screener`) |
| `highLow20DFilter` | string | – | Proximity to 20-day trading high/low (`screener`) |
| `highLow50DFilter` | string | – | Proximity to 50-day trading high/low (`screener`) |
| `atrFilter` | string | – | Average True Range (`screener`) |
| `changeFromOpenFilter` | string | – | % change from today's open (`screener`) |
| `volatilityFilter` | string | – | Weekly/monthly price volatility (`screener`) |
| `performance2Filter` | string | – | Extended performance windows incl. 3/5/10-year (`screener`) |
| `patternFilter` | string | – | Detected technical chart pattern (`screener`) |
| `candlestickFilter` | string | – | Detected candlestick pattern on latest bar (`screener`) |
| `etfAssetType` | string | – | Restrict to ETFs of a given asset class instead of stocks (`screener`) |
| `sortBy` | string | – | Column to sort screener results by (`screener`) |
| `sortDescending` | boolean | `false` | Sort highest-to-lowest instead of lowest-to-highest (`screener`) |
| `includeExtendedMetrics` | boolean | `false` | Enrich every row with ~45 extra valuation/ownership/technical/performance fields — makes more requests per page (`screener`) |
| `insiderTransactionType` | string | `all` | `all` / `buy` / `sale` (`insiderTrading`) |
| `groupBy` | string | `sector` | `sector` / `industry` / `country` / `capitalization` (`groupPerformance`) |
| `groupView` | string | `overview` | `overview` / `valuation` / `performance` / `financial` (`groupPerformance`) |
| `industrySector` | string | – | Narrow `groupBy=industry` to one parent sector (`groupPerformance`) |
| `maxItems` | integer | `50` | Maximum number of records to return (1–5000) |
| `proxyConfiguration` | object | Apify residential proxy | Proxy settings — residential proxy is required (see FAQ) |

#### Example: screen large-cap tech stocks

```json
{
  "mode": "screener",
  "exchange": "NASDAQ",
  "sector": "Technology",
  "industry": "semiconductors",
  "marketCap": "large",
  "maxItems": 100
}
```

#### Example: today's top gainers with extended metrics

```json
{
  "mode": "screener",
  "signal": "ta_topgainers",
  "includeExtendedMetrics": true,
  "maxItems": 50
}
```

#### Example: full fundamentals for one ticker

```json
{
  "mode": "stockOverview",
  "ticker": "AAPL"
}
```

#### Example: market-wide insider buying

```json
{
  "mode": "insiderTrading",
  "insiderTransactionType": "buy",
  "maxItems": 50
}
```

#### Example: sector performance leaderboard

```json
{
  "mode": "groupPerformance",
  "groupBy": "sector",
  "groupView": "performance"
}
```

### Use cases

- **Investment research** — build custom screens combining valuation, growth, ownership, and technical criteria
- **Portfolio monitoring** — track live performance and technical metrics for a watchlist
- **Quantitative screening** — feed screener output into algorithmic trading or backtesting pipelines
- **News monitoring** — track headlines for tickers you follow
- **Insider-activity tracking** — spot clusters of insider buying or selling across the whole market
- **Sector and market analysis** — compare sector/industry/country performance and valuation at a glance

### FAQ

**Q: How many stocks can I scrape per run?**
A: Up to 5,000 records in `screener` mode via `maxItems`.

**Q: How current is the data?**
A: Finviz displays delayed quotes (typically 15–20 minutes), which is what this actor reflects. It does not use Finviz Elite real-time data.

**Q: What markets/exchanges are covered?**
A: NYSE, NASDAQ, AMEX, and CBOE — US-listed equities and ETFs, matching what Finviz's public screener exposes.

**Q: Can I filter by multiple sectors or industries in one run?**
A: Each run takes one `sector`/`industry` value. Run the actor multiple times with different values and merge the results if you need several.

**Q: Can I screen for event-driven signals like "Top Gainers" or "Unusual Volume"?**
A: Yes — the `signal` input covers Top/Bottom movers, New High/Low, Most Active/Volatile, Unusual Volume, Overbought/Oversold, Analyst Upgrades/Downgrades, Recent Insider Buying/Selling, Major News, and chart patterns, and can be combined with any other filter.

**Q: What does `includeExtendedMetrics` add, and why is it off by default?**
A: It enriches each screener row with ~45 additional valuation, ownership, technical, and multi-year performance fields sourced from Finviz's extra screener views. It's off by default because it takes noticeably longer per page of results.

**Q: Is `insiderTrading` mode ticker-specific?**
A: No — it returns the latest market-wide SEC Form 4 transactions across all tickers, optionally filtered to buys or sales only. Finviz's free tier exposes roughly the latest 200 transactions per type.

**Q: Why is residential proxy required?**
A: Finviz blocks requests coming from datacenter IP ranges. Residential proxy IPs are treated as regular browser traffic and load pages reliably, so the actor requires Apify's residential proxy group by default.

**Q: Is this actor affiliated with Finviz?**
A: No, this is an independent third-party actor that reads Finviz's public website; it is not affiliated with or endorsed by Finviz.

# Actor input Schema

## `mode` (type: `string`):

What to scrape.

## `ticker` (type: `string`):

Stock ticker symbol (e.g. AAPL, TSLA). Required for modes stockOverview and newsForTicker.

## `exchange` (type: `string`):

Filter by stock exchange (screener mode).

## `sector` (type: `string`):

Filter by market sector (screener mode).

## `industry` (type: `string`):

Filter by specific industry sub-classification (screener mode). More granular than Sector.

## `index` (type: `string`):

Filter by stock market index membership (screener mode).

## `signal` (type: `string`):

Screen by a technical/fundamental event signal instead of (or in addition to) the filters above (screener mode).

## `marketCap` (type: `string`):

Filter by market capitalization range.

## `country` (type: `string`):

Filter by country of incorporation (screener mode).

## `priceFilter` (type: `string`):

Filter by share price range (screener mode).

## `avgVolumeFilter` (type: `string`):

Filter by 3-month average daily trading volume (screener mode).

## `dividendYieldFilter` (type: `string`):

Filter by dividend yield (screener mode).

## `analystRecomFilter` (type: `string`):

Filter by average analyst recommendation (screener mode).

## `shortFloatFilter` (type: `string`):

Filter by short interest as a percent of float (screener mode).

## `ipoDateFilter` (type: `string`):

Filter by how long ago the stock IPO'd (screener mode).

## `earningsDateFilter` (type: `string`):

Filter by scheduled earnings-report timing (screener mode).

## `theme` (type: `string`):

Filter by Finviz thematic classification (screener mode), e.g. Artificial Intelligence, Cybersecurity, Electric Vehicles.

## `subtheme` (type: `string`):

Filter by Finviz fine-grained subtheme classification (screener mode) — a more specific slice within a broader Theme, e.g. AI - Foundation Models & Platforms, EVs - Batteries.

## `targetPriceFilter` (type: `string`):

Filter by analyst average target price relative to current share price (screener mode).

## `currentVolumeFilter` (type: `string`):

Filter by today's current trading volume (screener mode). Distinct from Average volume, which is the 3-month average.

## `floatFilter` (type: `string`):

Filter by number of shares in the public float, as an absolute count or as a percent of shares outstanding (screener mode).

## `relativeVolumeFilter` (type: `string`):

Filter by today's volume relative to the 3-month average volume, e.g. 'Over 2' = trading at 2x its normal volume (screener mode).

## `sharesOutstandingFilter` (type: `string`):

Filter by total shares outstanding (screener mode).

## `optionableShortableFilter` (type: `string`):

Filter by whether the stock has listed options and/or is available to short (screener mode).

## `sortBy` (type: `string`):

Column to sort screener results by (screener mode).

## `sortDescending` (type: `boolean`):

Sort results highest-to-lowest instead of lowest-to-highest (screener mode).

## `includeExtendedMetrics` (type: `boolean`):

Enrich each screener row with ~45 additional fields (Forward P/E, PEG, P/B, ROE/ROA/ROIC, margins, ownership %, beta, RSI, moving averages, 52-week high/low, multi-year performance, etc.) by fetching Finviz's Valuation/Ownership/Performance/Financial/Technical screener views for every page and merging them in by ticker. This makes ~6x more requests per page, so runs take longer — leave off for fast, lightweight results.

## `peFilter` (type: `string`):

Filter by price-to-earnings ratio (screener mode).

## `forwardPeFilter` (type: `string`):

Filter by price-to-estimated-next-year-earnings ratio (screener mode).

## `pegFilter` (type: `string`):

Filter by PEG ratio (P/E adjusted for growth) (screener mode).

## `pbFilter` (type: `string`):

Filter by price-to-book ratio (screener mode).

## `psFilter` (type: `string`):

Filter by price-to-sales ratio (screener mode).

## `roeFilter` (type: `string`):

Filter by return on equity (screener mode).

## `debtEquityFilter` (type: `string`):

Filter by total debt-to-equity ratio (screener mode).

## `epsGrowthThisYearFilter` (type: `string`):

Filter by this year's EPS growth (screener mode).

## `rsiFilter` (type: `string`):

Filter by 14-day Relative Strength Index — overbought/oversold technical indicator (screener mode).

## `betaFilter` (type: `string`):

Filter by beta (volatility relative to the overall market) (screener mode).

## `performanceFilter` (type: `string`):

Filter by recent price performance over a specific period (today, week, month, quarter, half year, year, or YTD) and magnitude (screener mode).

## `roaFilter` (type: `string`):

Filter by return on assets (screener mode).

## `roiFilter` (type: `string`):

Filter by return on investment (screener mode).

## `currentRatioFilter` (type: `string`):

Filter by current ratio (current assets / current liabilities) (screener mode).

## `quickRatioFilter` (type: `string`):

Filter by quick ratio (acid-test liquidity ratio) (screener mode).

## `grossMarginFilter` (type: `string`):

Filter by gross profit margin (screener mode).

## `operMarginFilter` (type: `string`):

Filter by operating profit margin (screener mode).

## `netMarginFilter` (type: `string`):

Filter by net profit margin (screener mode).

## `insiderOwnFilter` (type: `string`):

Filter by percent of shares owned by company insiders (screener mode).

## `instOwnFilter` (type: `string`):

Filter by percent of shares owned by institutions (screener mode).

## `evEbitdaFilter` (type: `string`):

Filter by enterprise value to EBITDA ratio (screener mode).

## `pfcfFilter` (type: `string`):

Filter by price to free cash flow ratio (screener mode).

## `epsGrowthTTMFilter` (type: `string`):

Filter by trailing-twelve-months EPS growth vs. the prior TTM period (screener mode).

## `salesGrowthTTMFilter` (type: `string`):

Filter by trailing-twelve-months revenue growth vs. the prior TTM period (screener mode).

## `insiderTransFilter` (type: `string`):

Filter by percent change in insider ownership over the last 6 months (screener mode).

## `instTransFilter` (type: `string`):

Filter by percent change in institutional ownership over the last 3 months (screener mode).

## `highLow52wFilter` (type: `string`):

Filter by how close the price is to its 52-week high or low (screener mode).

## `smaFilter50` (type: `string`):

Filter by the stock's price relative to its 50-day simple moving average, including SMA20/SMA200 crossovers (screener mode).

## `smaFilter20` (type: `string`):

Filter by the stock's price relative to its 20-day simple moving average, including SMA50/SMA200 crossovers (screener mode).

## `smaFilter200` (type: `string`):

Filter by the stock's price relative to its 200-day simple moving average, including SMA20/SMA50 crossovers (screener mode).

## `todayChangeFilter` (type: `string`):

Filter by today's price change percentage (screener mode).

## `gapFilter` (type: `string`):

Filter by today's opening gap percentage vs. the prior close (screener mode).

## `ltDebtEqFilter` (type: `string`):

Filter by long-term debt-to-equity ratio (screener mode).

## `evSalesFilter` (type: `string`):

Filter by enterprise-value-to-sales ratio (screener mode).

## `priceCashFilter` (type: `string`):

Filter by price-to-cash-per-share ratio (screener mode).

## `payoutRatioFilter` (type: `string`):

Filter by dividend payout ratio (screener mode).

## `epsGrowthNext5YFilter` (type: `string`):

Filter by analyst-estimated long-term (5-year) EPS growth rate (screener mode).

## `epsGrowthNextYearFilter` (type: `string`):

Filter by estimated EPS growth for next year (screener mode).

## `epsGrowthPast3YFilter` (type: `string`):

Filter by EPS growth over the past 3 years (screener mode).

## `epsGrowthPast5YFilter` (type: `string`):

Filter by EPS growth over the past 5 years (screener mode).

## `salesGrowthPast3YFilter` (type: `string`):

Filter by revenue growth over the past 3 years (screener mode).

## `salesGrowthPast5YFilter` (type: `string`):

Filter by revenue growth over the past 5 years (screener mode).

## `epsGrowthQoQFilter` (type: `string`):

Filter by EPS growth vs. the prior quarter (screener mode).

## `salesGrowthQoQFilter` (type: `string`):

Filter by revenue growth vs. the prior quarter (screener mode).

## `dividendGrowthFilter` (type: `string`):

Filter by dividend growth over 1/3/5-year and consecutive-year-streak windows (screener mode).

## `allTimeHighLowFilter` (type: `string`):

Filter by proximity to the stock's all-time high or low price (screener mode).

## `highLow20DFilter` (type: `string`):

Filter by proximity to the 20-day trading high or low (screener mode).

## `highLow50DFilter` (type: `string`):

Filter by proximity to the 50-day trading high or low (screener mode).

## `atrFilter` (type: `string`):

Filter by Average True Range, a volatility measure in price units (screener mode).

## `changeFromOpenFilter` (type: `string`):

Filter by percent change of current price from today's opening price (screener mode).

## `volatilityFilter` (type: `string`):

Filter by weekly or monthly price volatility (screener mode).

## `performance2Filter` (type: `string`):

Filter by price performance over an extended set of periods, including 3/5/10-year windows not covered by the standard Performance filter (screener mode).

## `patternFilter` (type: `string`):

Filter by detected technical chart pattern (screener mode).

## `candlestickFilter` (type: `string`):

Filter by detected candlestick pattern on the latest bar (screener mode).

## `etfAssetType` (type: `string`):

Restrict screener results to ETFs of a specific asset class (screener mode). Finviz's screener merges stocks and ETFs by default; use this to fetch only ETFs of the chosen type instead of stocks.

## `insiderTransactionType` (type: `string`):

Filter which transaction types to include (insiderTrading mode). Finviz's free tier exposes the latest ~200 market-wide transactions per type.

## `groupBy` (type: `string`):

How to aggregate stocks into groups (groupPerformance mode).

## `groupView` (type: `string`):

Which metric set to return for each group (groupPerformance mode).

## `industrySector` (type: `string`):

Optionally narrow the industry breakdown to industries within one parent sector (only applies when Group by = Industry).

## `maxItems` (type: `integer`):

Maximum number of records to return.

## `proxyConfiguration` (type: `object`):

Finviz blocks Apify's datacenter IPs, so Apify Proxy (residential) is used by default to reliably fetch pages.

## Actor input object example

```json
{
  "mode": "screener",
  "ticker": "AAPL",
  "exchange": "",
  "sector": "Technology",
  "industry": "",
  "index": "",
  "signal": "",
  "marketCap": "",
  "country": "",
  "priceFilter": "",
  "avgVolumeFilter": "",
  "dividendYieldFilter": "",
  "analystRecomFilter": "",
  "shortFloatFilter": "",
  "ipoDateFilter": "",
  "earningsDateFilter": "",
  "theme": "",
  "subtheme": "",
  "targetPriceFilter": "",
  "currentVolumeFilter": "",
  "floatFilter": "",
  "relativeVolumeFilter": "",
  "sharesOutstandingFilter": "",
  "optionableShortableFilter": "",
  "sortBy": "",
  "sortDescending": false,
  "includeExtendedMetrics": false,
  "peFilter": "",
  "forwardPeFilter": "",
  "pegFilter": "",
  "pbFilter": "",
  "psFilter": "",
  "roeFilter": "",
  "debtEquityFilter": "",
  "epsGrowthThisYearFilter": "",
  "rsiFilter": "",
  "betaFilter": "",
  "performanceFilter": "",
  "roaFilter": "",
  "roiFilter": "",
  "currentRatioFilter": "",
  "quickRatioFilter": "",
  "grossMarginFilter": "",
  "operMarginFilter": "",
  "netMarginFilter": "",
  "insiderOwnFilter": "",
  "instOwnFilter": "",
  "evEbitdaFilter": "",
  "pfcfFilter": "",
  "epsGrowthTTMFilter": "",
  "salesGrowthTTMFilter": "",
  "insiderTransFilter": "",
  "instTransFilter": "",
  "highLow52wFilter": "",
  "smaFilter50": "",
  "smaFilter20": "",
  "smaFilter200": "",
  "todayChangeFilter": "",
  "gapFilter": "",
  "ltDebtEqFilter": "",
  "evSalesFilter": "",
  "priceCashFilter": "",
  "payoutRatioFilter": "",
  "epsGrowthNext5YFilter": "",
  "epsGrowthNextYearFilter": "",
  "epsGrowthPast3YFilter": "",
  "epsGrowthPast5YFilter": "",
  "salesGrowthPast3YFilter": "",
  "salesGrowthPast5YFilter": "",
  "epsGrowthQoQFilter": "",
  "salesGrowthQoQFilter": "",
  "dividendGrowthFilter": "",
  "allTimeHighLowFilter": "",
  "highLow20DFilter": "",
  "highLow50DFilter": "",
  "atrFilter": "",
  "changeFromOpenFilter": "",
  "volatilityFilter": "",
  "performance2Filter": "",
  "patternFilter": "",
  "candlestickFilter": "",
  "etfAssetType": "",
  "insiderTransactionType": "all",
  "groupBy": "sector",
  "groupView": "overview",
  "industrySector": "",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `stocks` (type: `string`):

Dataset containing all scraped Finviz stock records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "screener",
    "ticker": "AAPL",
    "exchange": "",
    "sector": "Technology",
    "industry": "",
    "index": "",
    "signal": "",
    "marketCap": "",
    "country": "",
    "priceFilter": "",
    "avgVolumeFilter": "",
    "dividendYieldFilter": "",
    "analystRecomFilter": "",
    "shortFloatFilter": "",
    "ipoDateFilter": "",
    "earningsDateFilter": "",
    "theme": "",
    "subtheme": "",
    "targetPriceFilter": "",
    "currentVolumeFilter": "",
    "floatFilter": "",
    "relativeVolumeFilter": "",
    "sharesOutstandingFilter": "",
    "optionableShortableFilter": "",
    "sortBy": "",
    "sortDescending": false,
    "includeExtendedMetrics": false,
    "peFilter": "",
    "forwardPeFilter": "",
    "pegFilter": "",
    "pbFilter": "",
    "psFilter": "",
    "roeFilter": "",
    "debtEquityFilter": "",
    "epsGrowthThisYearFilter": "",
    "rsiFilter": "",
    "betaFilter": "",
    "performanceFilter": "",
    "roaFilter": "",
    "roiFilter": "",
    "currentRatioFilter": "",
    "quickRatioFilter": "",
    "grossMarginFilter": "",
    "operMarginFilter": "",
    "netMarginFilter": "",
    "insiderOwnFilter": "",
    "instOwnFilter": "",
    "evEbitdaFilter": "",
    "pfcfFilter": "",
    "epsGrowthTTMFilter": "",
    "salesGrowthTTMFilter": "",
    "insiderTransFilter": "",
    "instTransFilter": "",
    "highLow52wFilter": "",
    "smaFilter50": "",
    "smaFilter20": "",
    "smaFilter200": "",
    "todayChangeFilter": "",
    "gapFilter": "",
    "ltDebtEqFilter": "",
    "evSalesFilter": "",
    "priceCashFilter": "",
    "payoutRatioFilter": "",
    "epsGrowthNext5YFilter": "",
    "epsGrowthNextYearFilter": "",
    "epsGrowthPast3YFilter": "",
    "epsGrowthPast5YFilter": "",
    "salesGrowthPast3YFilter": "",
    "salesGrowthPast5YFilter": "",
    "epsGrowthQoQFilter": "",
    "salesGrowthQoQFilter": "",
    "dividendGrowthFilter": "",
    "allTimeHighLowFilter": "",
    "highLow20DFilter": "",
    "highLow50DFilter": "",
    "atrFilter": "",
    "changeFromOpenFilter": "",
    "volatilityFilter": "",
    "performance2Filter": "",
    "patternFilter": "",
    "candlestickFilter": "",
    "etfAssetType": "",
    "insiderTransactionType": "all",
    "groupBy": "sector",
    "groupView": "overview",
    "industrySector": "",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/finviz-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "screener",
    "ticker": "AAPL",
    "exchange": "",
    "sector": "Technology",
    "industry": "",
    "index": "",
    "signal": "",
    "marketCap": "",
    "country": "",
    "priceFilter": "",
    "avgVolumeFilter": "",
    "dividendYieldFilter": "",
    "analystRecomFilter": "",
    "shortFloatFilter": "",
    "ipoDateFilter": "",
    "earningsDateFilter": "",
    "theme": "",
    "subtheme": "",
    "targetPriceFilter": "",
    "currentVolumeFilter": "",
    "floatFilter": "",
    "relativeVolumeFilter": "",
    "sharesOutstandingFilter": "",
    "optionableShortableFilter": "",
    "sortBy": "",
    "sortDescending": False,
    "includeExtendedMetrics": False,
    "peFilter": "",
    "forwardPeFilter": "",
    "pegFilter": "",
    "pbFilter": "",
    "psFilter": "",
    "roeFilter": "",
    "debtEquityFilter": "",
    "epsGrowthThisYearFilter": "",
    "rsiFilter": "",
    "betaFilter": "",
    "performanceFilter": "",
    "roaFilter": "",
    "roiFilter": "",
    "currentRatioFilter": "",
    "quickRatioFilter": "",
    "grossMarginFilter": "",
    "operMarginFilter": "",
    "netMarginFilter": "",
    "insiderOwnFilter": "",
    "instOwnFilter": "",
    "evEbitdaFilter": "",
    "pfcfFilter": "",
    "epsGrowthTTMFilter": "",
    "salesGrowthTTMFilter": "",
    "insiderTransFilter": "",
    "instTransFilter": "",
    "highLow52wFilter": "",
    "smaFilter50": "",
    "smaFilter20": "",
    "smaFilter200": "",
    "todayChangeFilter": "",
    "gapFilter": "",
    "ltDebtEqFilter": "",
    "evSalesFilter": "",
    "priceCashFilter": "",
    "payoutRatioFilter": "",
    "epsGrowthNext5YFilter": "",
    "epsGrowthNextYearFilter": "",
    "epsGrowthPast3YFilter": "",
    "epsGrowthPast5YFilter": "",
    "salesGrowthPast3YFilter": "",
    "salesGrowthPast5YFilter": "",
    "epsGrowthQoQFilter": "",
    "salesGrowthQoQFilter": "",
    "dividendGrowthFilter": "",
    "allTimeHighLowFilter": "",
    "highLow20DFilter": "",
    "highLow50DFilter": "",
    "atrFilter": "",
    "changeFromOpenFilter": "",
    "volatilityFilter": "",
    "performance2Filter": "",
    "patternFilter": "",
    "candlestickFilter": "",
    "etfAssetType": "",
    "insiderTransactionType": "all",
    "groupBy": "sector",
    "groupView": "overview",
    "industrySector": "",
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/finviz-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "screener",
  "ticker": "AAPL",
  "exchange": "",
  "sector": "Technology",
  "industry": "",
  "index": "",
  "signal": "",
  "marketCap": "",
  "country": "",
  "priceFilter": "",
  "avgVolumeFilter": "",
  "dividendYieldFilter": "",
  "analystRecomFilter": "",
  "shortFloatFilter": "",
  "ipoDateFilter": "",
  "earningsDateFilter": "",
  "theme": "",
  "subtheme": "",
  "targetPriceFilter": "",
  "currentVolumeFilter": "",
  "floatFilter": "",
  "relativeVolumeFilter": "",
  "sharesOutstandingFilter": "",
  "optionableShortableFilter": "",
  "sortBy": "",
  "sortDescending": false,
  "includeExtendedMetrics": false,
  "peFilter": "",
  "forwardPeFilter": "",
  "pegFilter": "",
  "pbFilter": "",
  "psFilter": "",
  "roeFilter": "",
  "debtEquityFilter": "",
  "epsGrowthThisYearFilter": "",
  "rsiFilter": "",
  "betaFilter": "",
  "performanceFilter": "",
  "roaFilter": "",
  "roiFilter": "",
  "currentRatioFilter": "",
  "quickRatioFilter": "",
  "grossMarginFilter": "",
  "operMarginFilter": "",
  "netMarginFilter": "",
  "insiderOwnFilter": "",
  "instOwnFilter": "",
  "evEbitdaFilter": "",
  "pfcfFilter": "",
  "epsGrowthTTMFilter": "",
  "salesGrowthTTMFilter": "",
  "insiderTransFilter": "",
  "instTransFilter": "",
  "highLow52wFilter": "",
  "smaFilter50": "",
  "smaFilter20": "",
  "smaFilter200": "",
  "todayChangeFilter": "",
  "gapFilter": "",
  "ltDebtEqFilter": "",
  "evSalesFilter": "",
  "priceCashFilter": "",
  "payoutRatioFilter": "",
  "epsGrowthNext5YFilter": "",
  "epsGrowthNextYearFilter": "",
  "epsGrowthPast3YFilter": "",
  "epsGrowthPast5YFilter": "",
  "salesGrowthPast3YFilter": "",
  "salesGrowthPast5YFilter": "",
  "epsGrowthQoQFilter": "",
  "salesGrowthQoQFilter": "",
  "dividendGrowthFilter": "",
  "allTimeHighLowFilter": "",
  "highLow20DFilter": "",
  "highLow50DFilter": "",
  "atrFilter": "",
  "changeFromOpenFilter": "",
  "volatilityFilter": "",
  "performance2Filter": "",
  "patternFilter": "",
  "candlestickFilter": "",
  "etfAssetType": "",
  "insiderTransactionType": "all",
  "groupBy": "sector",
  "groupView": "overview",
  "industrySector": "",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call crawlerbros/finviz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/finviz-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/JYWaciFiOYTKtAqMZ/builds/0fYgaerKDBG5jnN73/openapi.json
