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

4 min read · foundations

What "market data" means here, and what we are not

Why this matters. A new joiner who cannot draw this boundary will eventually say something the company has to retract. Everything below is a sentence you may need in front of a client. Foundation: Broker or exchange, who does what?

Market data is the record, not the market. We describe what happened and what is scheduled to happen. We do not take part.

Four things we are not

  • Not a broker. We do not execute orders, hold anyone's money, or custody a single share. A client who asks how to buy through us has misunderstood the product, and the kind answer says so plainly.
  • Not an exchange. Exchanges match buyers and sellers and generate the prices in the first place. We license those prices from them. That direction never reverses.
  • Not an adviser. We publish no recommendations, no ratings of our own, no view on whether an instrument is worth owning. Where the data carries someone else's opinion, such as a partner's risk score, it is labelled as theirs.
  • Not a trading system. We sell no signals and run no strategies. Clients build those on top of us, which is a different sentence entirely and worth saying carefully: their backtest is theirs.

What that leaves, which is a lot

The record itself, at four resolutions of freshness, and the difference between them is a product fact worth memorising:

Kind Latency What it is for
Real-time stream under 50 ms dashboards, live signals
Live delayed 15 to 20 minutes for stocks, about a minute for currencies quote tickers, watchlists
Intraday history 2 to 3 hours after the close backtests, analytics
End of day daily thirty years of everything else

Where our surface ends

Coverage has honest gaps, and the frequently requested ones are worth knowing before someone asks: Japan, Hong Kong, Singapore, the Milan exchange, India and Saudi Arabia, and deeper crypto data. Macro is not one of them: /macro-indicator/ and /economic-events answer for Germany, Australia and Japan as they do for the US.

Naming a gap costs nothing. Implying coverage we do not have costs the relationship, because the client will check.

One promise, said accurately

The promise worth making is narrower than "nothing ever changes", and it is the one a client actually cares about: we do not break the call you already wrote.

Versions do exist. They arrive as a new path beside the old one, never as a switch flipped underneath a working integration:

What they built on What shipped later, alongside it
/fundamentals/{ticker} /v1.1/fundamentals/{ticker}
/bulk-fundamentals/{EXCHANGE} /v1.1/bulk-fundamentals/{EXCHANGE}
/exchange-details/{code} /v2/exchange-details/{code}
/real-time/{ticker} /us-quote-delayed — "Live v2" for US stocks, a richer quote in a different shape

Every original in that table answered on 2026-08-27, beside its newer sibling. That is the shape of the promise: additive, opt-in, and the old URL keeps working.

Do not say "the API has no versions." A client reading the documentation will find v1.1 and v2 inside a minute, and a reassurance they can disprove costs more than the worry it was meant to settle. Our own reference lists the versioned paths, so check it before you promise anything from memory.

Retirement is not impossible either — endpoints that turned out to be a bad idea have been withdrawn. If a client asks whether a specific endpoint will still be there in three years, that is a business answer, not one to improvise. What you can say without checking with anyone: new versions do not silently replace what you call, and you are not made to migrate on our schedule.

The boundary

What a client may do with the data is a licence question, not a technical one. Personal use and commercial use are different licences, and redistribution is a conversation with the business, never an answer improvised from a documentation page.

Try it now

Write the four "we are not" sentences from memory. Then take the one you find hardest to say out loud and write the version you would actually use with a client.