‹ EODHD: The Product Lesson 5 of 17
Contents Lesson 5 of 17

4 min read · foundations

Prices: end of day, intraday, real time

Why this matters. The three speeds are the single most confused thing about the product, and the confusion costs clients money in both directions. Foundation: When is a quote lying to you?

A price is not one product. It is the same fact at four different distances from now, and the distance is what a client is really choosing.

The four distances

  • End of day. One record per instrument per day, after the close. The archive reaches back 30+ years, and that is a statement about the archive rather than about any one ticker: an instrument's history starts when it listed and stops when it delisted, so a company that floated in 2024 has two years of it. Saying "at least thirty years" about a specific symbol is the kind of answer a client disproves with one request. The workhorse: backtests, portfolio valuation, research, anything historical. There is a bulk form that returns a whole exchange's last day in one request, priced at 100 API calls, which is how a client updates ten thousand tickers without ten thousand requests.
  • Intraday history. Candles inside the session, at one minute, five minutes and an hour, available two to three hours after the close. Note the word history: this is a query, not a stream.
  • Live, delayed. The latest available price, 15 to 20 minutes behind for stocks and about a minute for currencies. What most watchlists actually need.
  • Real-time stream. A push feed under 50 ms for US stocks, forex and crypto. For dashboards that move and signals that fire.

Underneath all of them, for US equities, sits tick data: the individual trades the candles are built from.

A day's row appears after the venue closes and the day is processed, on a published schedule. The end-of-day documentation (eodhd.com/financial-apis/api-for-historical-data-and-volumes, read 2026-09-07) states that NYSE and NASDAQ are updated within 15 minutes after the close, other exchanges 2 to 3 hours after their own close, and US mutual funds, PINK, OTCBB and some indices the next morning, starting around 3 to 4 am ET. Before that window a missing row is not a defect. /exchange-details/{code} gives the close time, the holiday list and UpdatedTickers, the count of instruments that have reported today; on 2026-09-07, a US holiday, it read 0. The public lesson Is this quote stale, or is the market closed? reads those fields in full.

The matching game

The client says They need
I am backtesting a strategy End of day, maybe intraday
I am building a portfolio tracker End of day plus fundamentals
Prices must move on screen The real-time stream
I need one-minute candles for last year Intraday history
Fifteen-minute-old prices are fine Live delayed
I am rebuilding the bars myself Tick data

The mismatch that costs

It runs both ways. A client asks for real time and refreshes their dashboard once an hour: they are paying for a stream they never consume. Another builds on delayed quotes and wonders why their alerting is late: they bought the wrong distance.

Guiding someone to the honest tier is not leaving money on the table. It is the difference between a renewal and a refund conversation.

One trap worth naming

Intraday and end-of-day prices are not adjusted the same way, so the same instrument can look different depending on which you pull. That is a market-data fact rather than a bug, and the public curriculum teaches it properly: why old prices look wrong on charts.

Try it now

Each of the four distances is a different path. All four are below on the same symbol, so you feel the difference rather than memorise it.

  1. End of day — /eod/AAPL.US?from=2026-01-01&fmt=json. One row per trading day. The bulk form for a whole exchange in one request (100 API calls) is /eod-bulk-last-day/US, which is how a client updates ten thousand tickers without ten thousand requests.
Interactive candles chart: AAPL.US (1Y)
  1. Intraday history — /intraday/AAPL.US?interval=5m&fmt=json, pinned to one window below. Note the word history: candles inside the session, available hours after the close, and a query rather than a stream.
Live API response: apple five minute bars
  1. Live, delayed — /real-time/AAPL.US?fmt=json for the global form, or /us-quote-delayed?s=AAPL.US for the richer US quote with bidPrice and askPrice. Read its timestamp: it is the moment of the last print the quote carries, not the moment anyone asked, and the gap between the two is the delay.
Live API response: apple delayed quote
  1. Tick data — the individual trades the candles are built from, for US equities: /ticks?s=AAPL&from=1790346660&to=1790346720&limit=100, with from and to in Unix seconds and required: without them the call answers 404. One minute of Apple is below. The answer is parallel arrays, one entry per trade, which is a different shape from every other price path on this shelf.
Live API response: mda1 apple ticks one minute
  1. Now take the last three requests you have seen for "prices" and place each on the four distances. If two of them land on the same tier for different reasons, write down what actually separates them — and remember the mismatch runs both ways: a client paying for a stream they refresh hourly, and a client alerting off delayed quotes and wondering why they are late.