DEV Community

Cover image for Yahoo Finance Historical Data Download Is Now Paid: 7 Alternatives
Kevin Meneses González
Kevin Meneses González

Posted on

Yahoo Finance Historical Data Download Is Now Paid: 7 Alternatives

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_close field (adjusted for splits and dividends)
  • CSV or JSON output from the same endpoint (fmt=csv or fmt=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
Enter fullscreen mode Exit fullscreen mode
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))
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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_close is 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)