
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape the finviz.com stock screener with any filters, signals, sort and view (about 130 columns), plus ticker quote pages with the snapshot table, company profile, news headlines, analyst ratings and insider trades. No login needed.
Turn any finviz.com stock screen into clean JSON, CSV or Excel. Pick a signal (top gainers, unusual volume, new highs, chart patterns), add finviz filters, choose a view or all ~130 columns at once, and get one row per stock in seconds. Need more depth? Scrape ticker quote pages for the full snapshot table, company profile, news headlines, analyst ratings and insider trades. No login, no Elite subscription.
fa_pe_u20) or plain names ("Forward P/E: Under 15").4991.21B becomes 4991210000000, 18.43% becomes 18.43, dates become YYYY-MM-DD, ready for spreadsheets and databases.| Field | What it does |
|---|---|
signal | Finviz signal, e.g. ta_topgainers, ta_unusualvolume, it_latestbuys, ta_p_channelup |
startUrls | finviz.com screener URLs (any view) or quote URLs |
tickers | Tickers to scrape from their quote pages |
maxItems | Rows per screen (default 20, 0 = all matches) |
sector, industry, country, exchange, index, marketCap, price, averageVolume, pe, dividendYield, analystRecom, rsi | Common filters as dropdowns |
filters | Any other filter: fa_pe_u20, ta_sma200_pa, "Return on Equity: Over +20%" |
view / columns | all, overview, valuation, financial, ownership, performance, technical or custom with your columns |
sortBy / sortDirection | Any finviz sort column, ascending or descending |
includeQuoteDetails | Also merge each screened stock's quote page into its row |
maxNewsPerTicker, maxAnalystRatingsPerTicker, maxInsiderTradesPerTicker | How much of each quote-page list to keep |
{
"signal": "ta_topgainers",
"sector": "technology",
"filters": ["sh_avgvol_o500", "Price $: Over $5"],
"view": "all",
"sortBy": "change",
"sortDirection": "desc",
"maxItems": 50
}
One row per stock. Screener rows carry the columns of the chosen view; quote-page rows carry the snapshot table plus lists.
| Field | Description |
|---|---|
ticker, company, sector, industry, country, exchange | Identification |
price, changePercent, volume, avgVolume, relVolume | Trading data |
marketCap, pe, forwardPe, peg, ps, pb, pfcf, evEbitda | Valuation |
epsTtm, epsThisY, epsNextY, salesQoQ, roe, roic, grossMargin, profitMargin | Fundamentals (percent fields are in percent units) |
insiderOwn, instOwn, shortFloat, shortRatio | Ownership |
perfWeek … perf10Y, rsi, sma20/50/200, beta, atr | Performance and technicals |
analystRecom, targetPrice, earningsDate | Analyst data |
news[], analystRatings[], insiderTrades[], officers[], description | Quote pages |
url, logoUrl, screen, scrapedAt | Links and metadata |
Screener row (Overview view):
{
"position": 1,
"ticker": "SDST",
"company": "Stardust Power Inc",
"sector": "Industrials",
"industry": "Electrical Equipment & Parts",
"country": "USA",
"marketCap": 1650000,
"pe": null,
"price": 0.04,
"changePercent": 55.38,
"volume": 1641129972,
"url": "https://finviz.com/quote.ashx?t=SDST",
"logoUrl": "https://logo.finviz.com/SDST.svg",
"screen": "Top Gainers",
"scrapedAt": "2026-10-16T01:49:54Z"
}
Quote-page row (trimmed; people are fictional):
{
"ticker": "AAPL",
"company": "Apple Inc",
"sector": "Technology",
"exchange": "NASD",
"price": 342.0,
"marketCap": 4991210000000,
"pe": 39.21,
"epsNextYEstimate": 9.6,
"high52wPrice": 348.15,
"high52w": -1.77,
"targetPrice": 337.18,
"officers": [{ "title": "Chief Executive Officer", "name": "Jane Example" }],
"news": [{ "publishedAt": "2026-10-15T17:00:00", "title": "Example headline", "url": "https://example.com/story", "source": "Example News" }],
"analystRatings": [{ "date": "2026-10-01", "action": "Reiterated", "analyst": "Example Securities", "rating": "Overweight", "priceTargetFrom": 360, "priceTargetTo": 355 }],
"insiderTrades": [{ "insider": "Doe John", "relationship": "SVP", "date": "2026-10-13", "transaction": "Sale", "cost": 345.0, "shares": 2399, "value": 827655, "secFormUrl": "http://www.sec.gov/Archives/edgar/data/..." }],
"url": "https://finviz.com/quote.ashx?t=AAPL"
}
You pay $15 per 1,000 rows ($0.015 per stock), the same with or without quote-page details, plus a little platform usage (compute and datacenter traffic, usually well under $0.01 per run). Example: a 1,000-stock screen with all columns costs about $15.
Is it legal? It reads public finviz.com pages that anyone can open without an account. Use the data responsibly and respect finviz's terms for your use case.
Do I need a finviz account or a proxy? No account. Datacenter proxies are used by default and the run switches to residential exits by itself if finviz blocks them.
How many results can I get? Every match of the screen: the full universe is about 11,700 tickers. Each screen stops at maxItems.
Why is a field empty? finviz shows - when it has no value (for example P/E for loss-making companies, or ETF fields for stocks). Those become null.
Can I use Elite filters or real-time data? No. Only the free filters and the free (delayed) data are available. Filters finviz ignores for free users stop the run with a clear message instead of silently returning the wrong screen.
Can I schedule it or use the API? Yes. Schedule runs in the console or start them through the API and read the dataset as JSON or CSV.
includeQuoteDetails are slower.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
signalenumOptionalSignal
A finviz signal (the Signal dropdown on finviz.com): top gainers, new highs, unusual volume, insider buying, chart patterns and more. Leave empty for all stocks.
startUrlsarrayOptionalFinviz screener or quote URLs
Paste any finviz.com screener URL (any filters, signal, sort and view: Overview, Valuation, Financial, Ownership, Performance, Technical or Custom). Quote URLs (finviz.com/quote.ashx?t=AAPL) are scraped as tickers.
tickersarrayOptionalTickers (quote pages)
Ticker symbols to scrape from their finviz quote page: the full snapshot table (80+ fields), company profile, news headlines, analyst ratings and insider trades. One row per ticker.
maxItemsintegerOptionaldefault 20Max rows per screen
Maximum number of stocks to save per screen (signal/filters or each screener URL). 0 = every match. Tickers are not limited by this.
Screen with finviz's free filters. Use the dropdowns for the common ones and 'More filters' for any other finviz filter.
sectorenumOptionalSector
Finviz sector filter.
industryenumOptionalIndustry
Finviz industry filter (also 'Stocks only' and 'Exchange Traded Fund').
countryenumOptionalCountry
Country of the company's headquarters.
exchangeenumOptionalExchange
Listing exchange.
indexenumOptionalIndex
Index membership.
marketCapenumOptionalMarket cap
Market capitalization bucket.
priceenumOptionalPrice
Share price range.
averageVolumeenumOptionalAverage volume
Average daily volume (3 months).
peenumOptionalP/E
Price-to-earnings ratio (TTM).
dividendYieldenumOptionalDividend yield
Dividend yield.
analystRecomenumOptionalAnalyst recommendation
Consensus analyst recommendation.
rsienumOptionalRSI (14)
Relative Strength Index.
filtersarrayOptionalMore filters
Any other finviz filter, either as a finviz code (fa_pe_u20, ta_sma200_pa, sh_short_o10, theme_artificialintelligence) or as 'Filter: Option' with the names shown on finviz.com ("Forward P/E: Under 15", "Return on Equity: Over +20%"). Elite-only custom ranges are not available.
viewenumOptionaldefault "all"Columns (view)
Which finviz columns to return for screens. 'All columns' merges every free column (about 130 fields: valuation, financial, ownership, performance, technical, ETF data, latest news) at no extra cost.
columnsarrayOptionalCustom columns
Used with the Custom view: finviz column names or ids, e.g. "P/E", "RSI", "Earnings Date", "Short Float", 65. Ticker and company are always included.
sortByenumOptionalSort by
Finviz sort column. Leave empty for finviz's default order (ticker A-Z, or the signal's own order).
sortDirectionenumOptionaldefault "asc"Sort direction
Quote pages give the snapshot table, company profile and officers, news, analyst ratings and insider trades. Tickers always include them; screener rows only when switched on.
includeQuoteDetailsbooleanOptionaldefault falseAdd quote page details to screener rows
Also open each screened stock's quote page and merge the snapshot table, profile, news, analyst ratings and insider trades into its row. Slower (one extra page per stock), same price per row.
maxNewsPerTickerintegerOptionaldefault 10News headlines per ticker
Latest news headlines to keep per quote page (0 = none).
maxAnalystRatingsPerTickerintegerOptionaldefault 10Analyst ratings per ticker
Latest analyst upgrades, downgrades and price-target changes per quote page (0 = none).
maxInsiderTradesPerTickerintegerOptionaldefault 10Insider trades per ticker
Latest insider transactions (SEC Form 4) per quote page (0 = none).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for finviz. The run switches to residential (US) exits by itself if datacenter exits are blocked.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| ticker | string | null | Ticker |
| company | string | null | Company |
| sector | string | null | Sector |
| industry | string | null | Industry |
| country | string | null | Country |
| price | number | null | Price |
| changePercent | number | null | Change % |
| volume | number | null | Volume |
| marketCap | number | null | Market cap |
| pe | number | null | P/E |
| forwardPe | number | null | Forward P/E |
| epsTtm | number | null | EPS (TTM) |
| dividendYield | number | null | Dividend % |
| rsi | number | null | RSI |
| perfYtd | number | null | Perf YTD % |
| analystRecom | number | null | Recom |
| targetPrice | number | null | Target price |
| earningsDate | string | null | Earnings |
| url | string | null | Finviz |
| news | array | null | Quote page news headlines |
| analystRatings | array | null | Analyst rating changes |
| insiderTrades | array | null | Insider transactions |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Stock row | Charged for each stock or ETF saved from a finviz screener page or quote page, with or without quote-page details. Screens that match nothing and invalid inputs are free. | $0.015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/finviz-scraper').call({
"signal": "ta_topgainers",
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/finviz-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/finviz-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Stocks from a Finviz screener link with all columns.
Snapshot, news, analyst ratings and insider trades per ticker.
Screen stocks by sector and index.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.