Quick answer: Yahoo Finance historical data is still free to view, but downloading it as CSV now requires Yahoo Finance Gold ($479.40/year). The cheapest reliable replacement is an end-of-day data API: EODHD ($19.99/month, 30+ years, CSV or JSON) if you need many tickers or a script. Tiingo's free tier works for personal research, and Nasdaq.com or Stooq cover a quick one-off download for free. If you only need a few prices, yfinance still works, with rate limits and no guarantees.
You click "Download" on Yahoo Finance.
Nothing downloads.
You get an upgrade screen instead.
For years, Yahoo Finance was the default answer to "where do I get historical stock data?" Analysts used it for Excel models. Students used it for theses. Developers used it as a free backend.
If you're:
- rebuilding a backtest that used to start with a Yahoo CSV,
- maintaining a spreadsheet that pulled prices every month,
- or running a Python script that suddenly returns empty DataFrames,
this matters.
What changed with Yahoo Finance historical data
Yahoo's own help page is explicit: "Downloading historical data is available with a Yahoo Finance Gold subscription." (Yahoo Help)
You can still open any ticker, go to Historical Data, pick a range and read the table in the browser. The Download button is the part behind the paywall.
Here's what each Yahoo plan includes, from Yahoo's plan page:
| Plan | Price (billed yearly) | Historical data download |
|---|---|---|
| Free | $0 | No (view only) |
| Bronze | $95.40/year ($7.95/mo) | No |
| Silver | $239.40/year ($19.95/mo) | No |
| Gold | $479.40/year ($39.95/mo) | Yes, CSV |
Two more limits apply even with Gold. Yahoo says the feature "isn't available for all instruments due to data licensing restrictions," and the download is still one ticker at a time, by hand.
Paying $479 a year for a button is a lot.
Especially when the button doesn't scale.
The real problem isn't the paywall
Most people searching for this want a CSV.
What they actually need is a repeatable source of clean daily prices: same columns every time, adjusted for splits and dividends, available for hundreds of tickers, and not dependent on a website layout.
A manual download from any website, free or paid, fails that test the moment you need more than a few tickers.
So the question isn't "how do I get the Yahoo button back?"
It's "what replaces it for my volume?"
Yahoo Finance alternatives at a glance
| Option | Free tier | Paid from | History depth | Access | Main catch |
|---|---|---|---|---|---|
| EODHD | 20 calls/day, 1 year | $19.99/mo ($199/yr) | 30+ years | API (CSV/JSON), Excel & Sheets add-ons | Free tier too small for real backtests |
| Tiingo | 1,000 req/day, 500 symbols/mo | $30/mo | 30+ years EOD | API | License is internal/personal use only |
| Alpha Vantage | 25 req/day | $49.99/mo | Varies by endpoint | API | 25 calls/day goes fast; some functions are premium |
| Financial Modeling Prep | 250 calls/day | $19/mo (annual) | 5 years on Basic and Starter | API | Short history on the cheaper plans |
| yfinance | Free | n/a | Whatever Yahoo serves | Python library | Unofficial, rate-limited, personal use |
| Nasdaq.com | Free | n/a | Up to 10 years | Browser | Manual, one ticker at a time |
| Stooq | Free | n/a | Long, varies by market | Browser, bulk files | Automated downloads unreliable in 2026 |
Which type of replacement do you need?
There isn't one best Yahoo Finance alternative. There's a best one for your volume.
- One ticker, once: a free website (Nasdaq.com, Stooq) is enough.
- A few tickers, regularly, personal project: yfinance or a free API tier (Tiingo).
- Dozens to thousands of tickers, a backtest, or anything client-facing: a paid end-of-day API with clear licensing.
Pick your row. Then read only the options that fit it.
1. EODHD: best overall Yahoo Finance replacement for historical data
EODHD (EOD Historical Data) is an API built around exactly what the Yahoo download used to give you: daily open, high, low, close, adjusted close and volume. It covers 150,000+ tickers across global exchanges, with 30+ years of history on paid plans.
I use it in most of my fintech tutorials, so I'll show the exact code I run.
Key features
- End-of-day prices with an
adjusted_closefield (adjusted for splits and dividends) - CSV or JSON output from the same endpoint (
fmt=csvorfmt=json) - Delisted tickers keep their history, which matters for backtests
- Excel and Google Sheets add-ons for non-coders
Replicate the Yahoo CSV in Python
The script below returns the same columns as the old Yahoo download, in the same order. The demo key works for AAPL.US, TSLA.US, AMZN.US and VTI.US, so you can run it before signing up.
pip install requests pandas
import os
import requests
import pandas as pd
API_TOKEN = os.getenv("EODHD_API_TOKEN", "demo")
def yahoo_style_history(ticker: str, start: str, end: str) -> pd.DataFrame:
url = f"https://eodhd.com/api/eod/{ticker}"
params = {"api_token": API_TOKEN, "from": start, "to": end, "period": "d", "fmt": "json"}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
df = pd.DataFrame(response.json())
df = df.rename(columns={
"date": "Date", "open": "Open", "high": "High", "low": "Low",
"close": "Close", "adjusted_close": "Adj Close", "volume": "Volume",
})
return df[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
df = yahoo_style_history("AAPL.US", "2026-10-05", "2026-10-09")
df.to_csv("AAPL.csv", index=False)
print(df.to_string(index=False))
Output (real data, pulled October 13, 2026):
Date Open High Low Close Adj Close Volume
2026-10-05 332.82 336.21 331.65 332.89 332.89 34400900
2026-10-06 332.28 334.38 330.62 333.63 333.63 30449000
2026-10-07 336.96 338.67 332.78 336.67 336.67 34147900
2026-10-08 336.82 341.57 335.90 340.42 340.42 35332400
2026-10-09 331.70 338.61 330.70 336.64 336.64 37881200
Same columns. Same format. Your old Excel model or pandas code reads it without changes.
History depth check
The same call with start="1980-12-01" returns Apple's first trading day, December 12, 1980 (close 28.74, adjusted close 0.0981). The adjusted column already accounts for every split since then.
Delisted tickers
Twitter (TWTR.US) was delisted in October 2022. Its history is still there:
date close volume
2022-10-24 51.52 24296045
2022-10-25 52.78 37489316
2022-10-26 53.35 29698456
2022-10-27 53.70 198415408
If your backtest only uses companies that still exist, it's biased toward the winners. Keeping delisted tickers fixes that.
Download many tickers at once
tickers = ["AAPL.US", "TSLA.US", "AMZN.US", "VTI.US"]
for t in tickers:
yahoo_style_history(t, "2016-01-01", "2026-10-09").to_csv(f"{t}.csv", index=False)
Swap the list for your own universe once you're on a paid key.
Pricing (verified October 2026)
- Free: 20 API calls/day, 1 year of history
- EOD Historical All-World: $19.99/month or $199/year, 100,000 calls/day, 30+ years
- EOD + Intraday: $29.99/month
That's $199 a year against $479.40 for Yahoo Gold: about 58% less. And you get an API instead of a button.
👉 Try EODHD here. Code KEVIN10 gives 10% off.
What I liked
- The CSV/JSON switch is a single parameter.
- Delisted tickers and full split/dividend adjustment out of the box.
- Annual plan is cheaper than any Yahoo tier that includes downloads.
Where it falls short
- The free tier (20 calls/day, 1 year) is for testing, not for real research.
-
adjusted_closeis recalculated when new dividends arrive, so don't use it as a fixed key in a database. - Fundamentals are a separate, more expensive plan.
Best for: anyone replacing Yahoo downloads at scale, from Excel analysts to Python backtests.
Skip if: you need fewer than five tickers, once.
2. Tiingo: best free tier for personal research
Tiingo gives you 30+ years of end-of-day prices on its free Starter plan, which is generous by any standard.
Pricing (verified October 2026)
- Free: 50 requests/hour, 1,000/day, 500 unique symbols/month
- Power: $30/month or $300/year for individuals
What I liked
- Deep history on the free plan.
- 500 symbols a month covers most personal portfolios.
Where it falls short
- Both tiers are licensed for "Internal Use Only": no displaying or sharing the data. Internal commercial use costs $50/month, and redistribution is priced separately.
- 50 requests per hour slows down bulk downloads.
Best for: personal backtests and study projects.
Skip if: you're building something other people will see.
3. Alpha Vantage: best known free API, smallest daily quota
Alpha Vantage is often the first API developers try. It covers time series, technical indicators, fundamentals and FX.
Pricing (verified October 2026)
- Free: 25 API requests/day
- Premium: from $49.99/month (75 requests/minute)
What I liked
- Broad catalog beyond prices.
- Plenty of community examples.
Where it falls short
- 25 requests a day means 25 tickers a day, at best.
- Some functions are premium-only, so check each endpoint before you build on it.
Best for: small experiments and learning.
Skip if: you need more than a handful of tickers per day.
I compared Alpha Vantage with six other providers in this comparison of financial APIs.
4. Financial Modeling Prep: generous free calls, shorter history
FMP has a large API catalog, especially for fundamentals and financial statements.
Pricing (verified October 2026)
- Basic (free): 250 calls/day, 5 years of EOD history
- Starter: $19/month billed annually, also 5 years
What I liked
- 250 free calls a day is ten times Alpha Vantage.
- Strong fundamentals coverage.
Where it falls short
- 5 years of history on the cheaper plans. Long-horizon backtests need a higher tier.
Best for: fundamentals-heavy projects with recent price history.
Skip if: you need decades of prices on a small budget.
5. yfinance: free, until it isn't
yfinance is a Python library that reads Yahoo's data. Many people still use it, and for a few tickers it often works.
But know what you're relying on. The project's own README says it is "not affiliated, endorsed, or vetted by Yahoo, Inc." and that the data is "intended for personal use only." (GitHub)
In 2025, users reported YFRateLimitError('Too Many Requests. Rate limited. Try after a while.') (issue #2422) and failed historical requests that they linked to the new paywall (issue #2340). Fixes usually meant upgrading the library or changing how requests are sent.
What I liked
- Free and two lines of code.
- Same data you saw on the Yahoo website.
Where it falls short
- No SLA. A Yahoo change can break your pipeline overnight.
- Rate limits hit hardest when you loop over many tickers.
- Personal use only.
Best for: quick, personal checks.
Skip if: anything depends on the data arriving tomorrow.
6. Nasdaq.com: free and manual
Nasdaq's historical quotes page shows "up to 10 years of daily historical stock prices and volumes for each stock."
What I liked
- Free, official exchange source.
- Enough history for most one-off charts.
Where it falls short
- 10 years maximum.
- Manual, one ticker at a time. No API.
Best for: a single chart or a quick sanity check.
Skip if: you need more than 10 years, or more than a few tickers.
7. Stooq: free bulk files, fragile automation
Stooq offers free historical files for many markets, including bulk daily packages.
What I liked
- Free bulk downloads, no account needed for manual use.
- Long histories for many markets.
Where it falls short
- Automated access got shaky in 2026. Users of portfolio software reported empty responses from Stooq's historical servers starting in April 2026, while manual CSV downloads still worked (forum thread).
- Licensing terms for reuse aren't clear, so treat it as personal research data.
Best for: a free bulk snapshot for personal research.
Skip if: your workflow depends on scheduled downloads.
Best Yahoo Finance alternative by use case
| Use case | Pick | Why |
|---|---|---|
| Excel model with monthly price updates | EODHD (Excel add-on) | Same columns as Yahoo, no manual downloads |
| Backtest over 10+ years and hundreds of tickers | EODHD | 30+ years, delisted tickers, 100k calls/day |
| Personal research, under 500 symbols | Tiingo free | 30+ years at $0, personal-use license |
| Fundamentals plus recent prices | Financial Modeling Prep | Large fundamentals catalog, 250 free calls |
| One chart, one time | Nasdaq.com | Free, 10 years, no signup |
| Quick Python check on a few tickers | yfinance | Free, but expect rate limits |
Can you still get Yahoo Finance historical data for free?
Partly. You can view the full historical table on any quote page and copy it into a spreadsheet by hand. For long ranges that means scrolling through thousands of rows, and Yahoo's data is meant for personal use.
It works for one ticker.
It doesn't work as a system.
If you're building anything bigger, I covered the full workflow for pulling and storing price history in API for Historical Stock Data: A Practical Guide. For options data, see I Pulled EODHD's Full Options History With Python.
FAQ
Is Yahoo Finance historical data free?
Viewing it is free. Downloading it as CSV requires Yahoo Finance Gold, which costs $479.40 per year billed annually.
Why can't I download historical data from Yahoo Finance?
Yahoo moved the Download button to the Gold plan. Some instruments can't be downloaded even with Gold because of data licensing restrictions.
How much is Yahoo Finance Gold?
$39.95 per month billed yearly, or $479.40 per year (October 2026). Bronze and Silver don't include downloads.
Does yfinance still work in 2026?
Often, yes, for small volumes. It's unofficial, intended for personal use, and has had rate-limit errors (YFRateLimitError) since 2025.
What is the best free alternative to Yahoo Finance for historical data?
Tiingo's free plan offers 30+ years of daily prices for up to 500 symbols a month, for personal use. For a single quick download, Nasdaq.com gives up to 10 years.
What is the cheapest paid alternative to Yahoo Finance Gold for downloads?
EODHD's end-of-day plan costs $199 per year (or $19.99/month) for 30+ years of global data via API, CSV, Excel or Google Sheets.
Can I use these alternatives in Excel or Google Sheets?
Yes. EODHD offers Excel and Google Sheets add-ons, and every API above returns CSV or JSON that Excel can import.
Verdict
Yahoo didn't remove historical data. It removed the free button.
For a one-off, use Nasdaq.com. For personal research, use Tiingo's free tier. For anything you'll run every week, or show to someone else, use an end-of-day API like EODHD at less than half the price of Yahoo Gold.
👉 Get EODHD here and use KEVIN10 for 10% off.
The data was never the hard part.
Getting it the same way every time is.
If you're a software or API company looking to explain your product through high-quality educational content (not marketing fluff), feel free to connect with me on LinkedIn.
Top comments (0)