StockAnalysis Scraper
Pricing
from $1.00 / 1,000 records
StockAnalysis Scraper
Extract StockAnalysis overviews for US tickers: market cap, trailing revenue and net income, EPS, PE and forward PE, dividend and yield, shares outstanding, beta and the next earnings date. Export data, run via API, schedule and monitor runs, or integrate with other tools.
Pricing
from $1.00 / 1,000 records
Rating
5.0
(1)
Developer
Public Money
Maintained by ApifyActor stats
1
Bookmarked
4
Total users
3
Monthly active users
21 hours ago
Last modified
Categories
Share
Most quote sources give you a price and a PE and stop before the income statement. StockAnalysis publishes trailing twelve month revenue and net income right on the overview page, and this Actor returns them as structured fields alongside market cap, EPS, PE and forward PE, dividend and yield, shares outstanding, beta, the 52-week range and the next earnings date.
What it does
- Returns one record per ticker, in order. A ticker StockAnalysis does not cover comes back with
status: "failed"and a reason. - Carries trailing twelve month revenue and net income, which is the pair most free quote sources omit and which you need to compute your own margins.
- Reports PE and forward PE side by side, so the market's expectation is visible next to the trailing number.
- Gives the key figures twice: as StockAnalysis prints them (
marketCapreads4.67T) and as numbers you can sort on (marketCapNumeric). - Carries shares outstanding, so you can compute per-share figures the source does not publish directly.
- Reports the next earnings date, so a screen can avoid or target a results week.
Use cases
| You need to | How this Actor does it |
|---|---|
| Compute your own margins | Divide netIncomeTtmNumeric by revenueTtmNumeric |
| Compare trailing against forward valuation | Read peRatioNumeric next to forwardPeNumeric |
| Build a per-share figure | Use sharesOutstanding with any total from the record |
| Screen for dividend income | Sort on dividendYieldPercent and read dividend |
| Avoid an earnings week | Filter a watchlist on earningsDate |
| Feed a finance agent | Call the Actor over MCP and let the model ask for the symbol it needs |
Quick start
- Click Try for free.
- Add your tickers, one per line:
AAPL,MSFT,NVDA. StockAnalysis covers US listings. - Click Start. Rows appear within seconds.
- Export as JSON, CSV, Excel or XML, or read the dataset over the API.
Input
| Field | Type | Default | What it controls |
|---|---|---|---|
tickers | array | AAPL | US-listed tickers to read |
maxItems | integer | 0 | Caps how many tickers are read. 0 reads them all |
{"tickers": ["AAPL","MSFT","NVDA"],"maxItems": 0}
Output
One dataset item per ticker. Fields StockAnalysis does not publish are dropped rather than returned as null, so a company with no dividend carries no dividend fields.
| Field group | Fields |
|---|---|
| Identity | status, tickerSymbol, name, exchange, currency, url |
| Price | value, change, changePercent, fiftyTwoWeekLow, fiftyTwoWeekHigh, volume |
| Size | marketCap, marketCapNumeric, sharesOutstanding, enterpriseValue |
| Income statement | revenueTtm, revenueTtmNumeric, netIncomeTtm, netIncomeTtmNumeric |
| Valuation | peRatio, peRatioNumeric, forwardPe, forwardPeNumeric, eps, epsNumeric |
| Dividend | dividend, dividendYieldPercent, exDividendDate |
| Other | beta, earningsDate |
| Timing | validFrom, scrapedAt |
{"status": "ok","tickerSymbol": "AAPL","name": "Apple Inc.","exchange": "NASDAQ","currency": "USD","value": 319.97,"changePercent": -2.51,"marketCap": "4.67T","marketCapNumeric": 4670000000000,"sharesOutstanding": 14595000000,"revenueTtm": "416.16B","revenueTtmNumeric": 416160000000,"netIncomeTtm": "109.43B","netIncomeTtmNumeric": 109430000000,"peRatio": "36.65","peRatioNumeric": 36.65,"forwardPe": "31.20","epsNumeric": 8.73,"dividend": 1.08,"dividendYieldPercent": 0.33,"beta": 1.09,"earningsDate": "Oct 29, 2026","validFrom": "2026-09-04T20:00:01.000Z","url": "https://stockanalysis.com/stocks/aapl/"}
Integrations
Run it over the API and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/publicmoney~stockanalysis-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"tickers": ["AAPL", "MSFT", "NVDA"], "maxItems": 0}'
From Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("publicmoney/stockanalysis-scraper").call(run_input={"tickers": ["AAPL", "MSFT", "NVDA"], "maxItems": 0})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["tickerSymbol"], item["name"], item["value"])
Give an AI agent the Actor over MCP:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=publicmoney/stockanalysis-scraper"}}}
Schedules run it on any cron, webhooks fire when a run finishes, and platform integrations push the dataset to Google Sheets, Slack, Airtable, Zapier or your own endpoint.
Cost
Pay per event, so you pay for records rather than compute time.
| Event | Free tier | Top volume tier |
|---|---|---|
| Record with data | $0.002 | $0.0007 |
| Actor start | $0.00005 per GB | Same |
A record that returned no data is published as a failure row and is never charged. Six volume tiers apply, so the per-record price falls with monthly volume.
Troubleshooting
| Issue | Solution |
|---|---|
A ticker returns failed | StockAnalysis covers US listings. For international instruments use the FT Markets Actor in this fleet. |
netIncomeTtm is negative | The company is loss-making over the trailing twelve months. That is the source, not a parse error. |
forwardPe is missing | StockAnalysis publishes it only where analysts have supplied forward estimates. |
| No dividend fields at all | The company pays no dividend, so the source publishes nothing to read. |
| I want to sort and the value is a string | Use the Numeric twin. revenueTtm is 416.16B for display and revenueTtmNumeric is the number. |
FAQ
Does StockAnalysis have an API?
No. StockAnalysis publishes no documented public API for this data. The endpoints that libraries reach for are internal and unsupported, and they change without notice. This Actor reads the public overview page, which is why it keeps working.
Why use this over a plain quote scraper?
The income statement. Trailing twelve month revenue and net income are on the overview page here, so you can compute margins and price-to-sales yourself instead of pulling a separate fundamentals source.
Why are there two versions of each figure?
The source prints values for humans, so revenue reads 416.16B. Every key field also comes back with a Numeric twin holding the plain number, so you can sort and compute without parsing.
Does it return historical prices or past filings?
No. Each record is the current overview. For filings use the SEC Filings Actor in this fleet, and to build a price series schedule this Actor and let the dataset accumulate.
Which tickers are covered?
US listings. For international instruments use the FT Markets Actor in this fleet.
Do I need a StockAnalysis API key?
No. You need an Apify token to call the Actor over the API. No StockAnalysis credential is involved anywhere.
Can I get this data in Python?
Yes, with the apify-client package as shown above. It returns parsed JSON, so there is no HTML or response handling on your side.
Can I get the data into Excel or Google Sheets?
Yes. Export the dataset as XLSX or CSV, or connect the Google Sheets integration so each run appends to a sheet.
Can an AI agent call this Actor?
Yes. Add it to an MCP client with the config above and the model can request what it needs on its own. Every record is flat JSON with named fields, so no post-processing is needed.
Is it legal to scrape StockAnalysis?
This Actor reads public StockAnalysis data that needs no login and collects no personal data. Scraping public data is generally lawful, and how you store, redistribute or act on market data is governed by your own agreements and local rules. Take your own legal advice for your use case.
Changelog
- 0.0.2 Added trailing revenue and net income, forward PE and the numeric twins.
- 0.0.1 First release. The StockAnalysis overview per ticker.
Feedback
Found a field StockAnalysis publishes that this Actor misses, or an input it rejects? Open an issue on the Issues tab with the input and what you expected. A daily test runs every Actor in the fleet against live sources, so parser fixes ship fast.