Next free-source hunt
We check for new free financial data every Wednesday.
Datasets / Market Data
tiingo.com/

Tiingo

Freemiumauth: free API keyProvider terms#market-data#fundamentals✓ verified Oct 21, 2026

Tiingo

REST API for stocks, ETFs, crypto, and financial news. Flat-rate pricing with no hidden usage charges.

Coverage

80,000+ tickers: US equities, ETFs, mutual funds and Chinese A-shares (NYSE, NASDAQ, NYSE Arca, NYSE American, Cboe, IEX, OTC, Shanghai, Shenzhen); end-of-day history back to 1962 where available, updated daily; plus IEX real-time, crypto, forex and news. Free Starter gets the same price history (pricing page: 30+ years) but only 500 unique symbols/month, 5 years of fundamentals history in the screener, 3 months of queryable news, internal use only.

Verdict

Building custom portfolio dashboards combining EOD prices, fundamental metrics, and real-time news sentiment.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Analyze Tiingo end-of-day prices in memory on the Starter plan. Checked against the provider's documentation on Oct 29, 2026.

Raw skill file (/skills/tiingo.md)Also in our MCP server: call get_ingestion_skill with {"slug": "tiingo"}.

Access

  • A Starter account and API token are required. Put the token in TIINGO_API_KEY.
  • Starter data may be processed only in volatile memory or a temporary non-persistent cache.

Request

bash
curl -H 'Authorization: Token '$TIINGO_API_KEY 'https://api.tiingo.com/tiingo/daily/AAPL/prices?startDate=2026-10-01&endDate=2026-10-29'

Format

JSON array with date, OHLC, volume, adjusted OHLC and adjusted volume fields.

Load into pandas (in memory)

Needs Python 3 with requests and pandas. The provider's terms limit storage or leave it unclear, so this snippet does not write a file.

python
"""Tiingo Starter end-of-day prices -> pandas in memory. Do not persist Starter data."""
import os
import requests
import pandas as pd

headers = {"Authorization": f"Token {os.environ['TIINGO_API_KEY']}"}
params = {"startDate": "2026-10-01", "endDate": "2026-10-29"}
r = requests.get("https://api.tiingo.com/tiingo/daily/AAPL/prices",
                 headers=headers, params=params, timeout=30)
r.raise_for_status()
df = pd.DataFrame(r.json())
df["date"] = pd.to_datetime(df["date"], utc=True)
print(len(df), "rows", df["date"].min().date(), "to", df["date"].max().date())
del df  # Starter terms require deletion before this process, job or session ends

Needs a personal API key; not run.

Limits

  • Starter: 50 requests per hour, 1,000 requests per day, 500 unique symbols per month and 1 GB per month.

Quirks

  • The snippet intentionally writes no file.
  • Delete the response and derived results before the process, job or session ends.
  • Dates are ISO timestamps; parse them as UTC.

Terms and attribution

  • Starter and trial users may not retain Tiingo data or derived products in persistent or durable storage.
  • API data is for internal consumption; organizational use requires a commercial plan.
  • Redistribution requires permission and additional fees.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer