Yahoo Finance Quote Scraper avatar

Yahoo Finance Quote Scraper

Pricing

from $1.25 / 1,000 results

Go to Apify Store
Yahoo Finance Quote Scraper

Yahoo Finance Quote Scraper

Scrape Yahoo Finance quotes by ticker: price, change and changePercent, previousClose, day range, 52-week range, marketCap as an exact 4449911701504 rather than 4.45T, peRatio, eps, volume, dividendYield, beta, currency and exchange. Equities, ETFs, indices and futures. No API key or session crumb.

Pricing

from $1.25 / 1,000 results

Rating

0.0

(0)

Developer

String

String

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Yahoo Finance Scraper — price, market cap and PE ratio by ticker

This Actor collects Yahoo Finance quotes by ticker symbol. It returns the price, change, day range, 52-week range, market cap, PE ratio, EPS, volume, dividend yield and beta as numbers4449911701504, not the "4.45T" the quote page displays.

No Yahoo account, API key or session crumb is used — this reads the public quote page.

What it returns

FieldTypeNotes
tickerstringNormalised to upper case, e.g. AAPL
namestringCompany or fund name, e.g. Apple Inc.
pricenumberRegular-market price, e.g. 304.91
currencystringe.g. USD
change, changePercentnumberFull precision, e.g. -3.350006 and -1.0867469 — the percent field is already in percent, not a fraction
previousClosenumber
dayLow, dayHighnumberToday's range
fiftyTwoWeekLow, fiftyTwoWeekHighnumber52-week range
marketCapnumberExact, e.g. 4449911701504 — the page shows "4.45T"
peRationumberTrailing PE; null for a company with no trailing earnings
epsnumberTrailing EPS, negative where the company is loss-making
volumenumbere.g. 34168163 — the page shows "34.17M"
dividendYieldnumberIn percent, e.g. 0.35 for "0.35%"; falls back to a fund's distribution yield
betanumberFalls back to a fund's 3-year beta where no plain beta is published
exchangestringe.g. NasdaqGS
sourceUrl, collectedAtstringProvenance for every row

Input

{ "tickers": ["AAPL", "MSFT", "BRK-B", "^GSPC", "SHEL.L"] }
FieldDescription
tickersYahoo Finance symbols. Required, 1–200.
maxItemsCap on dataset items. Default 1000. Free plans stop at 250 requests and 250 results — see below.
concurrencyTickers fetched in parallel. Default 5.

Symbols are upper-cased and de-duplicated, so aapl and AAPL collapse to one fetch. Beyond plain US equities the input accepts suffixed foreign listings (SHEL.L, 7203.T), class shares (BRK-B), indices (^GSPC) and futures (CL=F). Only symbols are accepted — not Yahoo Finance URLs.

How it reads exact numbers

The Yahoo Finance quote page is a SvelteKit app that inlines the JSON responses of the API calls it made, so the whole quote is already present in the HTML as exact numbers, with 4449911701504 sitting alongside the "4.45T" that gets rendered. This Actor reads that embedded quoteSummary payload directly — there is no model-backed extraction and no display string to unpick.

Requesting the same payload from query1.finance.yahoo.com directly is not possible without the per-session crumb and cookie pair the page holds, which answers Invalid Crumb. Reading the response Yahoo already embedded avoids acquiring one.

Use cases

  • Refreshing a portfolio or watchlist with current prices on a schedule
  • Screening a ticker universe on PE ratio, EPS, market cap or dividend yield
  • Backfilling a spreadsheet, dashboard or database with numeric fundamentals
  • Comparing a holding against its 52-week range for entry and exit rules
  • Building alerts on daily change percent across a list of symbols

Reliability

Every field is read from the payload Yahoo Finance itself embedded in the page, so a value is either present and exact or absent. Yahoo wraps each measure as { raw, fmt } and degrades an absent one to an empty object rather than to zero, which this Actor preserves as null — a missing PE ratio comes back as null, never as a misleading 0.

Percentage measures are converted from Yahoo's stored fraction to percent only where Yahoo's own formatted value carries a % suffix, so changePercent and dividendYield are consistently in percent.

A ticker whose page carries no regular-market price is recorded under failures in the run's SUMMARY rather than emitted as an empty row, and a run in which every ticker failed exits with an error.

Frequently asked questions

Do I need a Yahoo Finance account, API key or crumb? No. This Actor reads the quote data Yahoo Finance already embeds in its own public quote page, so there is no login, no API key and no per-session crumb to obtain.

Is the market cap a number or a display string? A number. The Yahoo Finance Scraper returns marketCap as an exact integer such as 4449911701504, where the page renders "4.45T". Price, volume, EPS and both ranges are numbers too.

What ticker formats does the input accept? Plain US symbols (AAPL), class shares (BRK-B), suffixed foreign listings (SHEL.L, 7203.T), indices (^GSPC) and futures (CL=F). The input takes symbols only, not Yahoo Finance URLs.

How many tickers can one run collect? Up to 200 per run, and this Actor returns exactly one row per ticker.

Is changePercent a fraction or a percentage? A percentage. A -1.09% move is returned as -1.0867469, not as -0.010867469. dividendYield follows the same convention, so 0.35% is returned as 0.35.

Does it return historical prices, options chains, news or financial statements? No. This Actor returns the current quote summary for each ticker — the fields listed above and nothing further.

Limitations

Current quote data only: no historical price series, no options chains, no analyst estimates, no financial statements, no news and no ticker search or screening. Values reflect what Yahoo Finance shows publicly at collection time, stamped in collectedAt, and are delayed or stale exactly as Yahoo's own page is for that exchange. Fields Yahoo does not publish for a given instrument — a PE ratio for a loss-making company, a dividend yield for a non-payer — come back as null.

Free plan limit

Runs started from an Apify free plan stop at 250 requests and 250 results, and the run reports that it reached the limit. Any paid plan runs the full input and maxItems you set. The tickers input already caps at 200, so in practice a free-plan run is bounded by that ceiling rather than by the 250 limit.

The limit exists because this Actor fetches through our own infrastructure, which Apify does not cover for free-plan runs. It binds on requests as well as results so that a large input list cannot spend those fetches for rows the run will not return.