finvizfinance is a free, open source data extraction & web scraping project written in Python and released under MIT. It has 1,679 GitHub stars, 271 forks and 2 open issues, and was last pushed 20 days ago. On this registry it ranks #61 of 83 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available.

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,679 GitHub stars.