Finviz Stock Quote & News Scraper avatar

Finviz Stock Quote & News Scraper

Pricing

Pay per event

Go to Apify Store
Finviz Stock Quote & News Scraper

Finviz Stock Quote & News Scraper

Extract Finviz quotes, fundamentals, valuation, growth, ownership, margins, technical indicators, price, volume, and timestamped company news. No Finviz login or API key required.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract Finviz stock quotes, fundamentals, valuation ratios, technical indicators, and company news for any ticker symbol. This Finviz scraper accepts a watchlist or public quote URLs and returns one export-ready record per stock β€” no Finviz login or API key required.

Use it to refresh portfolio snapshots, monitor company headlines, enrich research databases, or supply structured market context to AI and quant workflows. The Actor uses lightweight HTTP extraction rather than a browser, so small watchlists finish quickly and economically.

What does Finviz Stock Quote & News Scraper do?

Finviz Stock Quote & News Scraper reads public ticker quote pages such as quote.ashx?t=AAPL and transforms their server-rendered tables into clean JSON.

For every ticker, it collects:

  • πŸ“ˆ Current price, daily change, volume, and relative volume
  • πŸ’° Market cap, P/E, forward P/E, PEG, P/S, P/B, and enterprise-value ratios
  • 🧾 Income, sales, book value, cash per share, dividends, debt, and liquidity
  • πŸš€ EPS and sales growth across quarterly and multi-year windows
  • 🏒 Insider and institutional ownership, transactions, employees, and IPO date
  • πŸ“Š Margins, returns, moving averages, RSI, beta, volatility, and performance
  • πŸ“° Recent news with timestamps, headlines, publishers, and outbound article URLs

Every original Finviz snapshot label remains available in the metrics object, while popular fields are also normalized into typed top-level columns for easy filtering.

Who is this Finviz scraper for?

Investors and portfolio managers

  • Refresh watchlist valuation and momentum snapshots before market review
  • Compare price, volume, technical, profitability, and ownership signals
  • Monitor recent headlines around held or prospective positions

Quant analysts and data scientists

  • Collect consistent point-in-time features for research pipelines
  • Join Finviz metrics with price history, SEC filings, or alternative datasets
  • Feed structured fundamentals and news links into scoring or alert systems

Financial-data and FinTech teams

  • Enrich internal security masters with public company attributes
  • Power research dashboards without maintaining a browser crawler
  • Schedule repeat quote extraction through Apify API or webhooks

AI workflow builders

  • Give agents concise company and market context for a ticker list
  • Build daily briefings from fresh metrics and linked company news
  • Export JSON to retrieval, summarization, or portfolio-analysis pipelines

Why use this Finviz quote extractor?

  • ⚑ HTTP-first extraction β€” 256 MB memory and no browser overhead
  • πŸ”‘ No login or API key β€” works with public Finviz quote pages
  • 🧩 Complete snapshot preservation β€” original labels stay in metrics
  • πŸ”’ Typed popular fields β€” prices, ratios, volumes, and counts are numbers
  • πŸ“° News included β€” headlines are nested beside the ticker they describe
  • πŸ” Watchlist batching β€” submit multiple symbols or quote URLs in one run
  • πŸ›‘οΈ Resilient requests β€” bounded retries, backoff, deduplication, and optional proxy routing
  • πŸ“¦ Flexible exports β€” download JSON, CSV, Excel, XML, or RSS through Apify
  • πŸ—“οΈ Automation-ready β€” schedule runs and deliver results by API or webhook

What Finviz stock data can you extract?

CategoryExample fields
Identityticker, company name, website, sector, industry, country, indexes
Valuationmarket cap, enterprise value, P/E, forward P/E, PEG, P/S, P/B, P/FCF
Financialsincome, sales, book/cash per share, dividends, payout, debt ratios
GrowthEPS and sales growth, quarterly changes, multi-year estimates
Ownershipinsider ownership/transactions, institutional ownership/transactions
ProfitabilityROA, ROE, ROIC, gross margin, operating margin, profit margin
TechnicalsSMA20/50/200, RSI, ATR, beta, volatility, 52-week high/low
Performanceweek, month, quarter, half-year, YTD, 1/3/5/10-year performance
Tradingcurrent/previous price, daily change, volume, average and relative volume
Eventsearnings date, surprises, ex-dividend date, recommendation, target price
Newstimestamp, original time label, headline, publisher, article URL

Finviz can display different fields for different security types. The metrics object preserves whichever labeled values the source provides instead of inventing missing values.

How much does it cost to scrape Finviz stock quotes?

This Actor uses pay-per-event pricing: one small run-start charge plus one charge per saved ticker record. You are not charged separately for every metric or nested news headline.

PlanPrice per ticker record
Free$0.00022159
Starter / BRONZE$0.00019269
Scale / SILVER$0.00015030
Business / GOLD$0.00011561
PLATINUM$0.000077074
DIAMOND$0.000053952

A one-time $0.005 run-start event applies. At BRONZE pricing, 10 tickers cost about $0.0069, and 100 tickers cost about $0.0243.

With the Apify Free plan's included credits, you can test many small watchlists before scaling. Final cost appears in the run console before export.

How to scrape Finviz quotes and news

  1. Open Finviz Stock Quote & News Scraper.
  2. Click Try for free.
  3. Add ticker symbols such as AAPL, MSFT, or NVDA.
  4. Optionally add public Finviz quote URLs.
  5. Choose whether to include news and set the per-ticker news limit.
  6. Keep concurrency low for your first run.
  7. Click Start.
  8. Review the Stock quotes dataset view.
  9. Export results or connect an integration.

Minimal ticker input

{
"tickerSymbols": ["AAPL"]
}

Watchlist input

{
"tickerSymbols": ["AAPL", "MSFT", "NVDA", "SPY"],
"includeNews": true,
"maxNewsItems": 20,
"maxConcurrency": 3
}

Public quote URL input

{
"startUrls": [
{ "url": "https://finviz.com/quote.ashx?t=BRK-B&p=d" }
],
"maxNewsItems": 10
}

Input parameters

ParameterTypeDefaultDescription
tickerSymbolsarray[]US stock or ETF symbols, for example AAPL, SPY, or BRK-B
startUrlsarray[]Public Finviz quote.ashx?t= URLs
includeNewsbooleantrueInclude nested news records for each ticker
maxNewsItemsinteger20Maximum recent news rows per ticker, from 0 to 100
maxConcurrencyinteger3Parallel quote requests, from 1 to 10
proxyConfigurationobjectdirectOptional Apify Proxy configuration for repeated blocks

At least one valid ticker symbol or quote URL is required. Symbols and URL-derived tickers are normalized to uppercase and deduplicated.

This V1 deliberately supports quote detail pages only. Finviz screener and search URLs are not accepted.

Output example

{
"ticker": "AAPL",
"companyName": "Apple Inc",
"companyUrl": "http://www.apple.com",
"quoteUrl": "https://finviz.com/quote.ashx?t=AAPL&p=d",
"sector": "Technology",
"industry": "Consumer Electronics",
"country": "USA",
"indexMemberships": ["DJIA", "NDX", "S&P 500"],
"price": 314.86,
"changePercent": -0.77,
"marketCap": "4624.46B",
"pe": 38.09,
"forwardPe": 30.12,
"targetPrice": 275.53,
"volume": 43210000,
"averageVolume": 52140000,
"relativeVolume": 0.83,
"employees": 166000,
"earnings": "Jul 30 AMC",
"metrics": {
"Market Cap": "4624.46B",
"P/E": "38.09",
"Gross Margin": "46.60%",
"RSI (14)": "63.22"
},
"news": [
{
"publishedAt": "2026-07-15T02:42:00.000Z",
"sourceDateTime": "Today 10:42PM",
"headline": "Example company headline",
"source": "Example Publisher",
"url": "https://example.com/article"
}
],
"newsCount": 1,
"scrapedAt": "2026-07-15T03:00:00.000Z"
}

The values above illustrate the schema. Market values change continuously, so compare live output with the source timestamp.

Understanding the metrics object

Finviz labels some values with units and time windows. The Actor preserves the displayed string so meaning is not lost.

  • Percentages retain % inside metrics.
  • Market-cap and financial abbreviations retain K, M, B, or T.
  • Dates and announcement timing retain the Finviz label.
  • Missing source cells remain absent or use the source's - value.
  • Popular fields are normalized separately for sorting and calculations.

Use metrics["Gross Margin"] for full source fidelity, or price, pe, and volume for typed analysis.

Working with Finviz company news

Each ticker record contains a news array, ordered as shown by Finviz.

A news item includes:

  • publishedAt β€” normalized ISO 8601 timestamp
  • sourceDateTime β€” original Finviz date/time text
  • headline β€” article headline
  • source β€” publisher displayed by Finviz
  • url β€” outbound article URL

Set includeNews to false or maxNewsItems to 0 when you need only quote and fundamental data.

The Actor deduplicates news by outbound URL within each ticker record.

Tips for reliable Finviz extraction

  • 🎯 Start with one to five tickers and inspect the schema before a large refresh.
  • 🐒 Keep concurrency at 3 or below unless you have verified a larger workload.
  • πŸ” Schedule periodic runs instead of issuing rapid duplicate runs.
  • πŸ“° Lower maxNewsItems when headlines are not central to your workflow.
  • πŸ”’ Enable Apify Proxy only after repeated direct 403 or 429 responses.
  • 🧹 Deduplicate records across scheduled runs using ticker plus scrapedAt.
  • πŸ•’ Treat quotes as point-in-time observations, not historical bars.
  • πŸ“‰ Expect ETFs and other security types to expose a different subset of metrics.

Finviz watchlist monitoring workflow

Create an Apify Schedule that runs before market open or after market close with your portfolio tickers.

Then:

  1. Save the latest dataset ID in your workflow.
  2. Compare price, changePercent, relativeVolume, and valuation fields.
  3. Compare outbound news URLs with the previous run.
  4. Alert only on new URLs or threshold changes.
  5. Archive full metrics objects for point-in-time research.

For repeat runs, use a webhook to trigger your database or automation as soon as extraction finishes.

Integrations

Finviz β†’ Google Sheets

Run a daily watchlist and append ticker, price, daily change, valuation, target price, and headline count to a tracking sheet.

Finviz β†’ Slack or Discord

Use Make or Zapier to send an alert when relative volume, daily change, or a new article URL crosses your rules.

Finviz β†’ PostgreSQL, BigQuery, or Snowflake

Store normalized top-level fields for analysis and retain the complete metrics JSON for future feature engineering.

Finviz β†’ LLM briefing

Send the quote snapshot and latest headlines to an LLM that produces a cited morning watchlist summary. Follow outbound links only when your downstream process is authorized to fetch them.

Scheduled portfolio snapshots

Use Apify Scheduler and webhooks to create repeatable snapshots without keeping your own server online.

Using the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/finviz-stock-quote-news-scraper').call({
tickerSymbols: ['AAPL', 'MSFT', 'NVDA'],
includeNews: true,
maxNewsItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/finviz-stock-quote-news-scraper').call(
run_input={
'tickerSymbols': ['AAPL', 'MSFT', 'NVDA'],
'includeNews': True,
'maxNewsItems': 10,
}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~finviz-stock-quote-news-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tickerSymbols":["AAPL","MSFT"],"maxNewsItems":10}'

Use with AI agents via MCP

Finviz Stock Quote & News Scraper can be called by AI assistants through the Apify Model Context Protocol integration.

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/finviz-stock-quote-news-scraper"

Claude Desktop, Cursor, or VS Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/finviz-stock-quote-news-scraper"
}
}
}

Authenticate with your Apify account when prompted.

Example prompts:

  • β€œUse automation-lab/finviz-stock-quote-news-scraper to compare AAPL, MSFT, and NVDA valuation, margins, and relative volume.”
  • β€œRefresh the Finviz quote and latest 20 company headlines for every ticker in my watchlist.”
  • β€œExtract SPY and QQQ technical indicators and summarize where their performance differs.”

Scraping publicly available data is generally lawful in many jurisdictions, but the details depend on your location, purpose, contract, and the data involved. This Actor only targets anonymous public Finviz quote pages and does not bypass authentication.

You are responsible for using it ethically and complying with Finviz terms, applicable copyright and database rights, privacy law, and reasonable request rates. Do not use the output for unlawful market manipulation, deceptive financial promotion, or decisions requiring licensed advice without independent verification.

This Actor is an extraction tool, not investment advice. Market data may be delayed, incomplete, or changed by the source.

Limitations

  • V1 does not scrape Finviz screener, search, portfolio, or authenticated pages.
  • Finviz may throttle or challenge repeated automated requests.
  • Quote data is a snapshot and does not provide historical candles.
  • News links point to third-party publishers whose pages may require subscriptions.
  • Available metrics vary by stock, ETF, and other security type.
  • The Actor preserves source values but does not independently validate financial figures.
  • Timestamps are normalized from Finviz's Eastern Time display.

Troubleshooting

Why did my run reject a URL?

Only public finviz.com/quote.ashx?t=... URLs are accepted. Paste a quote-detail URL or enter the ticker in tickerSymbols. Screener URLs are outside the supported V1 scope.

Why was one ticker skipped?

The symbol may be invalid, unavailable on Finviz, temporarily blocked, or returning an unexpected page. Review the run log for the ticker-specific warning. Valid tickers continue processing.

Why are some metrics missing?

Finviz displays different fields by security type and data availability. Check metrics for source labels and do not assume every stock or ETF has every ratio.

Why did I receive a 403 or 429?

Lower maxConcurrency, wait before retrying, and enable an Apify Proxy configuration if direct traffic is repeatedly blocked.

Frequently asked questions

How fast is the Finviz scraper?

It makes one lightweight HTTP request per unique ticker and processes up to three by default. Small watchlists normally finish quickly, although source latency and retries can vary.

Does it require a Finviz API key?

No. It extracts anonymous server-rendered quote pages and needs no Finviz account or API key.

Does it scrape the Finviz stock screener?

No. This V1 intentionally supports ticker quote pages only. It does not promise a screener route that is currently more heavily protected.

Can I use ticker symbols and URLs together?

Yes. The Actor combines both inputs, normalizes their symbols, and removes duplicates.

Am I charged for every news headline?

No. Charging is per saved ticker record, regardless of how many nested news items are included up to your configured limit.

Is this a real-time trading feed?

No. It captures the values currently displayed by Finviz. Verify timing and market-data requirements before using it in trading systems.

Other financial data scrapers

Combine this Actor with related Automation Labs tools:

Together, these Actors can connect market snapshots, news, sentiment, company fundamentals, insider activity, and regulatory filings in one research workflow.