Finviz Scraper
Pricing
from $1.00 / 1,000 records
Finviz Scraper
Extract the Finviz fundamentals snapshot for any US ticker: 80-plus fields covering valuation, margins, growth, institutional and insider ownership, short interest, float and analyst target. Export data, run via API, schedule and monitor runs, or integrate with other tools.
Pricing
from $1.00 / 1,000 records
Rating
5.0
(1)
Developer
Public Money
Maintained by ApifyActor stats
1
Bookmarked
4
Total users
3
Monthly active users
21 hours ago
Last modified
Categories
Share
Finviz packs the densest free fundamentals table on the web, more than 80 fields on one page, and charges for the API that would let you read it. This Actor reads the snapshot for any US-listed ticker and returns every field as a structured record: valuation, margins, growth, profitability, ownership, short interest and float, and the analyst target and recommendation. A second mode returns the news Finviz aggregates for the ticker.
What it does
- Returns more than 80 fields per ticker in one record, which is the whole Finviz snapshot table rather than a selection of it.
- Gives the key ratios twice: as Finviz prints them (
marketCapreads3.85T) and as numbers you can sort on (marketCapNumericreads3850000000000). - Carries short interest and float (
shortFloat,shortRatio), which almost no free quote source publishes. - Carries institutional and insider ownership with their transaction percentages, so you can see who is accumulating.
- Reports the analyst price target and recommendation score next to the current price.
- Reads through a US residential egress, because Finviz blocks datacenter traffic. It is handled for you and there is nothing to configure.
- Has a second mode for news, one record per story Finviz aggregates for the ticker.
Use cases
| You need to | How this Actor does it |
|---|---|
| Screen on short interest | Sort on shortFloat and shortRatio across a ticker list |
| Find what institutions are buying | Read instOwn next to instTrans |
| Compare a ticker against its target | Divide targetPrice by value |
| Build a valuation table | Use the Numeric fields so the sort is on numbers, not strings |
| Screen for margin quality | Read gross, operating and profit margin in the same record |
| Feed a finance agent | Call the Actor over MCP and let the model ask for the symbol it needs |
Quick start
- Click Try for free.
- Add your tickers, one per line:
AAPL,MSFT,NVDA. Finviz covers US-listed tickers. - Leave Mode on
snapshot, or switch it tonews. - Click Start. Rows appear within seconds.
- Export as JSON, CSV, Excel or XML, or read the dataset over the API.
Input
| Field | Type | Default | What it controls |
|---|---|---|---|
tickers | array | AAPL | US-listed tickers to read |
mode | string | snapshot | snapshot returns the fundamentals table, news a record per story |
newsPerTicker | integer | 20 | Stories per ticker in news mode |
maxItems | integer | 0 | Caps how many tickers are read. 0 reads them all |
{"tickers": ["AAPL","MSFT","NVDA"],"mode": "snapshot","maxItems": 0}
Output
One dataset item per ticker. Finviz prints a dash for a field it has no value for, and the Actor drops those rather than returning the dash, so a record carries what the ticker actually has.
| Field group | Fields |
|---|---|
| Identity | status, tickerSymbol, company, sector, industry, country, url |
| Price | value, change, prevClose, volume, avgVolume, relVolume |
| Valuation | marketCap, marketCapNumeric, pE, pENumeric, forwardPE, pS, pB, peg |
| Earnings | epsTtm, epsTtmNumeric, epsNextY, epsGrowthThisY, epsGrowthNext5Y |
| Margins | grossMargin, operMargin, profitMargin, roa, roe, roi |
| Ownership | instOwn, instTrans, insiderOwn, insiderTrans |
| Short interest | shortFloat, shortRatio, shortInterest |
| Analyst | targetPrice, recommendation |
| News mode | headline, publisher, datePublished, url |
| Timing | validFrom, scrapedAt |
{"status": "ok","tickerSymbol": "AAPL","company": "Apple Inc.","sector": "Technology","industry": "Consumer Electronics","country": "USA","value": 319.97,"marketCap": "4.67T","marketCapNumeric": 4670000000000,"pE": "36.65","pENumeric": 36.65,"epsTtm": "8.73","epsTtmNumeric": 8.73,"profitMargin": "26.30%","roe": "151.31%","instOwn": "62.40%","insiderOwn": "0.06%","shortFloat": "0.62%","shortRatio": 1.18,"targetPrice": 352.18,"recommendation": 1.9,"validFrom": "2026-09-04T20:00:01.000Z","url": "https://finviz.com/quote.ashx?t=AAPL"}
What does news mode return?
mode: "news" returns the stories Finviz aggregates on the ticker page, which pulls from several publishers rather than one newsroom: headline, publisher, datePublished and url, plus the tickerSymbol the story was found under. News is charged as news items rather than as snapshot records.
Integrations
Run it over the API and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/publicmoney~finviz-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"tickers": ["AAPL", "MSFT", "NVDA"], "mode": "snapshot", "maxItems": 0}'
From Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("publicmoney/finviz-scraper").call(run_input={"tickers": ["AAPL", "MSFT", "NVDA"], "mode": "snapshot", "maxItems": 0})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["tickerSymbol"], item["value"], item["validFrom"])
Give an AI agent the Actor over MCP:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=publicmoney/finviz-scraper"}}}
Schedules run it on any cron, webhooks fire when a run finishes, and platform integrations push the dataset to Google Sheets, Slack, Airtable, Zapier or your own endpoint.
Cost
Pay per event, so you pay for records rather than compute time.
| Event | Free tier | Top volume tier |
|---|---|---|
| Record with data | $0.002 | $0.0007 |
| News article | $0.001 | $0.00035 |
| Actor start | $0.00005 per GB | Same |
A record that returned no data is published as a failure row and is never charged. Six volume tiers apply, so the per-record price falls with monthly volume.
Troubleshooting
| Issue | Solution |
|---|---|
Every ticker returns failed | Finviz is blocking the egress this Actor uses. It is not settable from the input, so open an issue on the Issues tab and we will move it. |
| A non-US ticker fails | Finviz covers US listings. Use the FT Markets Actor in this fleet for international instruments. |
| A field is missing that Finviz shows as a dash | That dash means Finviz has no value. The Actor drops the field rather than returning a dash you would have to parse. |
| I want to sort and the value is a string | Use the Numeric twin of the field. marketCap is 3.85T for display and marketCapNumeric is the number. |
recommendation is a number, not a word | That is Finviz's own scale, where 1 is a strong buy and 5 a strong sell. |
FAQ
Is there a free Finviz API?
No. Finviz sells an API and export as part of Finviz Elite, and there is no free tier. This Actor reads the public snapshot page instead and is charged per record.
Can I use this as a stock screener API?
It reads the fundamentals snapshot for tickers you name, so you screen by pulling your candidate list and filtering on the numeric fields yourself. It does not run Finviz's own screener query.
Why are there two versions of each ratio?
Finviz prints values for humans, so market cap reads 3.85T. Every key field also comes back with a Numeric twin holding the plain number, so you can sort and compute without parsing.
Does it return historical prices?
No. Each record is the current snapshot as the source publishes it. To build a series, schedule the Actor and let the dataset accumulate a row per input per run. Each row carries validFrom, so the series is correctly timestamped.
Which tickers are covered?
US listings. Finviz does not cover international instruments, and for those the FT Markets Actor in this fleet is the one to use.
Do I need a Finviz API key?
No. You need an Apify token to call the Actor over the API. No Finviz credential is involved anywhere.
Can I get this data in Python?
Yes, with the apify-client package as shown above. It returns parsed JSON, so there is no HTML or response handling on your side.
Can I get the data into Excel or Google Sheets?
Yes. Export the dataset as XLSX or CSV, or connect the Google Sheets integration so each run appends to a sheet.
Can an AI agent call this Actor?
Yes. Add it to an MCP client with the config above and the model can request what it needs on its own. Every record is flat JSON with named fields, so no post-processing is needed.
Is it legal to scrape Finviz?
This Actor reads public Finviz data that needs no login and collects no personal data. Scraping public data is generally lawful, and how you store, redistribute or act on market data is governed by your own agreements and local rules. Take your own legal advice for your use case.
Changelog
- 0.0.2 Added news mode and the numeric twin for every key ratio.
- 0.0.1 First release. The full Finviz fundamentals snapshot per ticker.
Feedback
Found a field Finviz publishes that this Actor misses, or an input it rejects? Open an issue on the Issues tab with the input and what you expected. A daily test runs every Actor in the fleet against live sources, so parser fixes ship fast.