Tool

FinViz from Python

A public page still holds the tape. A small package reads it into tables, if you open the page that still has the rows.

Note

You do not need a paid seat to read Finviz. The pages are public. A Python package named finvizfinance pulls a quote, the news, the insider tape, and a screener into tables you can keep. It is a reader, not a broker. The rows move, and the page addresses move with them.

Install it once. Then call the page that still holds the rows. Several old links now redirect, and the bare calendar no longer opens the economic list.

pip install finvizfinance

A stock

Open the stock page, not the old quote link. The old link redirects, and the industry name on the live page uses a longer filter than the package still ships with. If industry comes back empty, that is the filter, not a missing company.

from finvizfinance.quote import finvizfinance

stock = finvizfinance("AAPL")
fund = stock.ticker_fundament()
stock.ticker_charts()

The live page is finviz.com/stock. The dict holds the company, the sector, the industry, and the price. Do not freeze a number from a screenshot. Read it again when you need it.

The news

The news call returns two tables, the wire and the blogs. Take the one you meant. A headline from an old example is not this morning's tape.

from finvizfinance.news import News

all_news = News().get_news()
wire = all_news["news"]
blogs = all_news["blogs"]

Insiders

The insider list has three windows. Latest is the default. The other two are the top of the week, and the largest owner trades. Read the window you named. Do not treat a printed row from last year as the book.

from finvizfinance.insider import Insider

latest = Insider(option="latest").get_insider()
week = Insider(option="top week").get_insider()
owners = Insider(option="top owner trade").get_insider()

The screener

The screener now lives on the stocks page. The old link redirects there, and the grid is no longer a plain table. A fresh install can come back empty until it learns that markup. Start on the stocks page, and check that the first ticker is a real symbol before you trust the frame.

from finvizfinance.screener.overview import Overview

screen = Overview()
screen.set_filter(filters_dict={"Index": "S&P 500"})
frame = screen.screener_view()

The calendar

Do not open the bare calendar. That address is the earnings preview. The economic calendar is its own page. The package still starts on the old link, so point it at the economic page before you read the rows.

from finvizfinance.calendar import Calendar

days = Calendar().calendar()

The page you want is finviz.com/calendar/economic. If the title says earnings season, you are on the wrong page.