finvizfinance is a free, open source data extraction & web scraping project written in Python and released under MIT. It has 1,760 GitHub stars, 288 forks and 2 open issues, and was last pushed 2 months ago. On this registry it ranks #85 of 149 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available. It gained 46 stars over the last 30 tracked days.

What is finvizfinance?

finvizfinance is an MIT-licensed Python library that scrapes the FinViz website to deliver stock, forex, and crypto data as pandas dataframes, made for analysts, quants, and developers who want programmatic access to FinViz screens, fundamentals, and news instead of reading the site by hand.

What it is

finvizfinance is a Python package published on PyPI that collects financial information from the FinViz website and hands it back as dictionaries and pandas dataframes. It lives in the Python data-extraction and web-scraping ecosystem, sitting alongside pandas as its output format and relying on the standard Python packaging chain for distribution. The library covers three asset classes in one interface: stocks, forex, and crypto, with dedicated modules for quotes, news, insider trading, and screeners.

The concrete problem it solves is that FinViz presents a large amount of useful financial data — fundamentals, technicals, insider activity, ratings, peers, ETF holders — only through a website, with no official API for the data its users want. finvizfinance replaces manual copying, ad-hoc scraping scripts, and screenshot-driven research with named functions that return structured results. A screener filter such as an index and sector combination becomes a dataframe, and a ticker lookup becomes a dictionary of fields including Company, Sector, Industry, Country, P/E, EPS (ttm), Insider Own, Shs Outstand, Perf Week, Market Cap, and Forward P/E.

Key capabilities

  • Pull per-ticker fundamentals through finvizfinance.quote.finvizfinance and ticker_fundament(), returning fields such as P/E, Forward P/E, EPS (ttm), Insider Own, Shs Outstand, Market Cap, and Perf Week.
  • Retrieve charts with ticker_charts(), company text with ticker_description(), and peer lists with ticker_peer().
  • Collect ETF holder lists with ticker_etf_holders(), and dataframe outputs for analyst ratings with ticker_outer_ratings(), headlines with ticker_news(), and trades with ticker_inside_trader().
  • Aggregate market-wide news via finvizfinance.news.News and get_news(), which returns separate news and blogs dataframes.
  • Query insider trading through finvizfinance.insider.Insider with the options latest, top week, and top owner trade, served by get_insider().
  • Screen multiple tickers across the Overview, Valuation, Financial, Ownership, Performance, and Technical views, setting criteria with set_filter(filters_dict=...) and retrieving results with screener_view().
  • Cover forex charts and performance and crypto charts and performance alongside equities, with a Ticker screener returning ticker lists.

Who uses it and how

  • Individual analysts and developers working in Python who need FinViz fundamentals and technicals loaded straight into pandas for further computation.
  • Research workflows that compare stocks against user-defined filters, such as an Index of S&P 500 combined with a Sector, then read the resulting dataframe.
  • Insider-trading monitoring, using the latest, top week, or top owner trade views to track disclosed transactions.
  • ETF and holdings research, where a ticker's ETF holder list supports exposure checking.
  • News and sentiment intake, pulling the FinViz news and blogs feeds into a single call for downstream processing.
  • Multi-asset monitoring across equities, forex, and crypto using the same library rather than separate tools.

Getting started

Install from PyPI with pip install finvizfinance, or clone the repository from GitHub if a source checkout is preferred. Documentation lives at https://finvizfinance.readthedocs.io/en/latest/.

How it compares

No comparable tools are named in the facts for this entry, and no list of paid products it replaces is provided, so finvizfinance stands alone in this registry at present.

When to use it — and when not to

Anyone relying on this library must accept that it reads data from a third-party website rather than an official data feed, so availability and field coverage follow FinViz itself. Self-hosters take on nothing beyond a Python environment — no database, storage service, or SMTP setup is described — which makes adoption cheap but also means there is no server-side component to operate or scale. It is a poor fit for anyone needing tick-level, real-time, or contractually guaranteed market data, and for teams that cannot tolerate a scraper breaking when the upstream page structure changes; the README is functional and example-driven rather than exhaustive, so some behaviours must be discovered from the source.

project readme (upstream, from github) — read inline

PyPI - Python Version PyPI PyPI - Wheel PyPI - License Read the Docs Downloads CodeFactor Donate PayPal Ruff

finvizfinance

finvizfinance is a package which collects financial information from FinViz website. The package provides the information of the following:

  • Stock charts, fundamental & technical information, insider information and stock news
  • Forex charts and performance
  • Crypto charts and performance

Screener and Group provide dataframes for comparing stocks according to different filters and trading signals.

Docs: https://finvizfinance.readthedocs.io/en/latest/

Downloads

To download the latest version from GitHub:

$ git clone https://github.com/lit26/finvizfinance.git

Or install from PyPi:

$ pip install finvizfinance

Quote

Getting information (fundament, description, outer rating, stock news, inside trader) of an individual stock.

from finvizfinance.quote import finvizfinance

stock = finvizfinance('tsla')
Chart
stock.ticker_charts()
Fundament
stock_fundament = stock.ticker_fundament()

# result
# stock_fundament = {'Company': 'Tesla, Inc.', 'Sector': 'Consumer Cyclical',
# 'Industry': 'Auto Manufacturers', 'Country': 'USA', 'Index': '-', 'P/E': '849.57',
# 'EPS (ttm)': '1.94', 'Insider Own': '0.10%', 'Shs Outstand': '186.00M',
# 'Perf Week': '13.63%', 'Market Cap': '302.10B', 'Forward P/E': '106.17',
# ...}
Description
stock_description = stock.ticker_description()

# stock_description
# stock_description = 'Tesla, Inc. designs, develops, manufactures, ...'
Peer
stock_peer = stock.ticker_peer()

# stock_peer
# stock_peer = ['LI', 'XPEV', 'NIO', 'RIVN', 'LCID', 'TM', 'HMC', 'GM', 'STLA', 'F']
ETF Holders
stock_etf_holders = stock.ticker_etf_holders()

# stock_etf_holders
# stock_etf_holders = ['VTI', 'VOO', 'IVV', 'SPY', 'VUG', 'QQQ', 'VGT', 'IWF', 'XLK', 'SPLG']
Outer Ratings
outer_ratings_df = stock.ticker_outer_ratings()

Outer Ratings example

Stock News
news_df = stock.ticker_news()

stock news example

Inside Trader
inside_trader_df = stock.ticker_inside_trader()

insider trader example

News

Getting recent financial news from finviz.

from finvizfinance.news import News

fnews = News()
all_news = fnews.get_news()

Finviz News include 'news' and 'blogs'.

all_news['news'].head()

news example

all_news['blogs'].head()

news example

Insider

Getting insider trading information.

from finvizfinance.insider import Insider

finsider = Insider(option='top owner trade')
# option: latest, top week, top owner trade
# default: latest

insider_trader = finsider.get_insider()

insider example

Screener (Overview, Valuation, Financial, Ownership, Performance, Technical)

Getting multiple tickers' information according to the filters.

Example: Overview
from finvizfinance.screener.overview import Overview

foverview = Overview()
filters_dict = {'Index':'S&P 500','Sector':'Basic Materials'}
foverview.set_filter(filters_dict=filters_dict)
df = foverview.screener_view()
df.head()

insider example

Screener (Ticker)

Getting list of tickers according to the filters.

Calendar

Getting the economic calendar (release datetime, impact, actual/expected/prior).

from finvizfinance.calendar import Calendar

fcalendar = Calendar()
df = fcalendar.calendar()
df.head()

Earnings

Partitioning tickers by their earnings dates for a period.

from finvizfinance.earnings import Earnings

# period: This Week (default), Next Week, Previous Week, This Month
fearnings = Earnings(period='This Week')

# mode: financial (default), overview, valuation, ownership, performance, technical
days = fearnings.partition_days(mode='financial')

# optionally export the partitioned tables
fearnings.output_excel('earning_days.xlsx')
fearnings.output_csv('earning_days')

Future

Getting futures performance.

from finvizfinance.future import Future

ffuture = Future()
# timeframe: D (default), W, M, Q, HY, Y
df = ffuture.performance(timeframe='D')
df.head()

Misc (Proxy)

Optional proxy can be used for getting information from FinViz website. Accessible from finvizfinance it's an extension of requests library proxies

from finvizfinance.util import set_proxy

proxies={'http': 'http://127.0.0.1:8080'}
set_proxy(proxies)

Credit

Developed by Tianning Li. Feel free to give comments or suggestions.

Frequently asked questions

Is finvizfinance free to use?

finvizfinance is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does finvizfinance do?

Finviz analysis python library.

What is finvizfinance written in?

finvizfinance is primarily written in Python. Its source is publicly available at https://github.com/lit26/finvizfinance, and it has 1,760 GitHub stars.