QVeris
Market Data Guide

Free Stock Data: Quotes, History & APIs

Find free quotes, history, fundamentals, and exports, then verify coverage, delay, and licensing.

Free Stock Data: Quotes, History & APIs

Which free stock data do you actually need?

Start with the decision or product you are building. A watchlist needs current quotes; a backtest needs adjusted history; a screener needs fundamentals; an agent workflow needs stable schemas and source metadata.

The phrase free stock data covers several products that behave very differently. A quote endpoint may return only the latest traded price, while an end-of-day dataset can provide years of bars but no intraday updates. Fundamental feeds often follow company reporting cycles, and regulatory filings may arrive as documents rather than tidy rows. Define the market, asset class, frequency, history depth, and acceptable delay before comparing providers.

For research, price fields alone are rarely enough. You may also need trading calendars, symbol changes, delistings, currency, exchange identifiers, and corporate actions. These reference fields prevent survivorship bias and make it possible to join prices with fundamentals correctly. A smaller dataset with explicit lineage and consistent identifiers is often more useful than a larger feed whose origin and adjustment rules are unclear.

Quotes and snapshots

Last price, change, bid/ask, session status, and timestamp. Confirm whether values are real-time, delayed, indicative, or end-of-day.

Historical OHLCV

Open, high, low, close, and volume by interval. For return calculations, verify splits, dividends, and adjusted-close methodology.

Fundamentals

Income statements, balance sheets, cash flow, ratios, and company facts. Check reporting periods, currencies, and restatements.

Reference and source metadata

Ticker mappings, exchanges, time zones, data lineage, and provider identity make downstream results easier to explain and audit.

Quick Summary

What you can get

Free tiers commonly expose delayed quotes, daily OHLCV history, company profiles, and selected fundamentals.

What to verify

Check exchange coverage, timestamps, adjustment rules, request limits, redistribution rights, and commercial-use terms.

Best starting format

CSV is convenient for spreadsheets and research; JSON APIs are better for apps, agents, and repeatable pipelines.

Important boundary

Free does not always mean real-time or unrestricted. Never assume demo data is suitable for live trading decisions.

Understand stock data fields before comparing values

“Stock price” may mean the last eligible trade, the midpoint of the best bid and ask, an official auction close, a delayed consolidated value, or a vendor-calculated snapshot. Those values can all be valid and still disagree. Store the event type, venue or consolidated-feed indicator, market session, currency, timestamp, and delay status together with the number. A bare price without this context is unsafe for alerts, charts, valuation inputs, or execution decisions.

RecordMeaningRequired contextCommon mistake
TradeAn executed transaction with price and size.Venue, conditions, event time, sequence, and correction status.Treating one odd-lot or late report as the current market.
QuoteDisplayed bid and ask prices and sizes.Bid/ask venue, size, timestamp, and whether it is consolidated.Calling the midpoint an executable trade price.
OHLCV barAggregated open, high, low, close, and volume for an interval.Interval, session, time-zone rule, eligible events, and adjustments.Combining bars built from different sessions or trade conditions.
SnapshotA provider’s packaged view of current or latest fields.Field-level timestamps, delay, source, and session state.Assuming all fields in the response share one timestamp.

Use durable identifiers alongside tickers

Tickers can change, be reused, vary by exchange, and represent different share classes. A reliable security master stores the provider symbol, exchange or MIC, currency, instrument type, company identity, and effective date range. Where available, retain CIK, FIGI, ISIN, or another stable identifier. For historical joins, resolve the identifier that was valid on the observation date; joining every old row to today’s ticker table creates survivorship and identity errors.

How free stock data sources compare

No single source is best for every workflow. Exchanges and regulators are closest to primary records, but their files may require more cleaning. Market-data APIs make common fields easier to query, although free plans usually trade convenience for lower request limits, delayed prices, shorter history, or narrower exchange coverage. Broker feeds can be useful for personal execution workflows, while downloadable files are efficient for reproducible analysis.

SourceWhat it offersBest forWatch for
Exchange or regulatorAuthoritative listings, notices, and filings.Verification and primary-source research.May be fragmented or not API-friendly.
Free market-data APINormalized quotes, history, and fundamentals.Apps, agents, prototypes, and repeatable research.Rate limits, delays, and license restrictions.
Broker dataAccount-linked quotes and trading context.Personal portfolio and execution workflows.Access may require an eligible account.
CSV or bulk datasetPortable files for analysis and archival.Spreadsheets, notebooks, and backtests.Often less current than a live API.

Compare sources with the same small test set rather than relying on feature lists. Request a liquid stock, a thinly traded security, a symbol that changed, and a date containing a split or dividend. Compare timestamps, missing records, precision, adjustment behavior, and error messages. This test quickly reveals whether two providers use different sessions or definitions even when their column names look identical.

Match each source to its proper role

A convenient provider and a primary source solve different problems. Alpha Vantage offers a free API key and currently states that most free datasets allow up to 25 requests per day; it also states that U.S. real-time and 15-minute delayed market data are premium-only. Financial Modeling Prep requires an API key and documents normalized quote, history, company, statement, symbol-change, and corporate-action endpoints. Massive (formerly Polygon.io) documents U.S. stock data sourced from exchanges, securities information processors, FINRA facilities, and OTC markets, with actual feed access controlled by the user’s plan and entitlement. These services simplify application access, but free-tier scope and licensing must be checked at integration time.

SEC EDGAR is a primary source for U.S. company filings and structured XBRL facts, not a stock-price feed. Its public data APIs require no authentication key, update throughout the day, and include nightly bulk archives. Combining a market-data source for prices with EDGAR for filings is often more defensible than treating one aggregator as the authority for both. For a critical value, retain the provider, endpoint, retrieval time, and any upstream source attribution so a reviewer can trace it.

Build historical stock datasets without silent bias

A clean chart is easier to build than a defensible backtest. Historical research needs the securities that existed at each date, not only companies that survive today. It also needs delistings, symbol changes, listing dates, trading calendars, corporate actions, and point-in-time fundamentals. Otherwise the dataset can exclude failed companies, use revised information too early, or join prices to the wrong issuer.

Keep raw and adjusted prices

Raw OHLC reflects observed session prices; adjusted series may restate history for splits and dividends. Store both, plus factors, events, method, and retrieval date.

Create a point-in-time universe

Track listing, delisting, exchange, symbol, share class, and index-membership effective dates so historical screens only use eligible securities.

Separate event, publication, and ingestion time

Market events, company disclosures, provider delivery, and your own database load occur at different times. Preserve each timestamp to prevent look-ahead.

Version every transformation

Record calendar filters, currency conversion, adjustment logic, deduplication, outlier rules, code commit, and upstream dataset version.

In a QVeris workflow, start with the required dataset and decision: a delayed quote for a watchlist, adjusted history for research, company facts for valuation, or corporate actions for reconciliation. Discover a matching capability, inspect its provider, schema, delay, limits, and provenance, then call it with explicit identifiers and dates. Store the raw response beside the normalized table. QVeris can assist with capability discovery and routing, but it does not grant market-data entitlements or replace validation of accuracy, timeliness, and license terms.

A practical API and CSV workflow

A reliable workflow separates discovery from production use. First inspect the provider documentation and a sample response. Then make a small request, save the raw payload, and transform it into your own stable schema. Add validation before the data enters a chart, model, spreadsheet, or agent. This makes it easier to replace a source later without rewriting the rest of the product.

1. Search by intent

Start with a ticker and the required dataset: quote, history, fundamentals, corporate actions, or filings. Avoid choosing a provider before you define the need.

2. Inspect before calling

Review schema, exchange coverage, delay, sample response, request cost, limits, source lineage, and commercial-use rules.

3. Call with explicit parameters

Send the symbol, interval, start and end dates, adjustment mode, and output format. Store the provider timestamp with every result.

4. Validate the output

Check missing sessions, duplicates, time zones, split adjustments, null values, and unexpected schema changes before analysis.

For API access, cache responses that do not need second-by-second freshness, apply exponential backoff to temporary failures, and log the request time, parameters, status code, and provider timestamp. For CSV, preserve the original file separately from the cleaned table and record its download date, delimiter, encoding, and time zone. Both approaches need a repeatable update policy so old and new observations are not silently mixed.

Request and validate a daily time series

The example below requests daily IBM data from Alpha Vantage with a user-supplied key. It validates the response before trusting the time-series object because quota messages and API errors may also arrive as JSON. The example is for research ingestion, not a claim that the free response is real-time.

import os
import requests

params = {
    "function": "TIME_SERIES_DAILY",
    "symbol": "IBM",
    "outputsize": "compact",
    "apikey": os.environ["ALPHA_VANTAGE_API_KEY"],
}
response = requests.get(
    "https://www.alphavantage.co/query",
    params=params,
    timeout=20,
)
response.raise_for_status()
payload = response.json()

series = payload.get("Time Series (Daily)")
if not isinstance(series, dict):
    raise RuntimeError(payload.get("Note") or payload.get("Error Message") or payload)

rows = [
    {"date": date, **values, "provider": "Alpha Vantage"}
    for date, values in series.items()
]

Before loading the rows, convert numeric strings deliberately, preserve the provider’s raw field names in the archive, sort by date, and test for duplicates and gaps against the relevant trading calendar. Do not interpret a missing calendar date as missing data until holidays and market closures are considered. If you later switch to adjusted data, keep raw and adjusted series separate and record the adjustment method.

Free stock data quality checklist

A useful source makes coverage, freshness, provider identity, request limits, pricing, and licensing visible before you depend on it.

Data quality is not only about whether a number looks plausible. Confirm that every observation refers to the intended venue, session, currency, and time zone. Check whether timestamps represent trade time, bar close, or provider delivery time. When building indicators or backtests, document how missing sessions, zero volume, duplicate rows, outliers, splits, dividends, and restated fundamentals are handled.

  • Confirm the market, exchange, asset class, interval, and historical depth.
  • Record whether prices are raw or adjusted and how corporate actions are handled.
  • Preserve source, timestamp, currency, time zone, and request parameters with every result.

Finally, read the license as carefully as the schema. Free access may permit personal analysis but restrict public display, redistribution, automated extraction, model training, or commercial products. Keep a link or copy of the applicable terms with the project and review them when the provider changes plans. If the data supports trading, compliance, or customer-facing decisions, validate critical values against an authoritative source.

Inspect a concrete source in the Financial Modeling Prep provider details, then use the QVeris REST API reference for integration.

FAQ

Where can I get free stock data?

Start with exchanges and regulators for primary records, then compare free API or broker tiers for normalized quotes, history, and fundamentals.

Is free stock data real-time?

Sometimes, but often it is delayed or limited to specific venues. Always read the timestamp, entitlement, and exchange-coverage notes.

Can I download historical stock data as CSV?

Many providers support CSV export. Verify the interval, time zone, missing sessions, and whether close prices are adjusted.

Can I use free data commercially?

It depends on the license. API access does not automatically grant display, redistribution, derived-data, or commercial rights.

Which format is better: JSON or CSV?

JSON is usually easier for applications that request data repeatedly and need structured metadata. CSV is simpler for spreadsheets, bulk downloads, notebooks, and portable archives. Choose based on the workflow, then normalize field names, date formats, numeric types, and null-value rules before combining files or providers.

How do I know whether free stock data is accurate?

Test several symbols and dates against an exchange, regulator, issuer filing, or another independent source. Check timestamps, decimal precision, corporate actions, missing sessions, and update frequency. Accuracy should be monitored continuously because provider coverage and schemas can change.

External references