Our data

Trades

Every trade printed, with its price, its size and the side that crossed the spread to make it, stamped to the nanosecond.

TimePriceSize
09:30:00.0000147,729.003
09:30:00.0000157,729.253
09:30:00.0022987,729.253
09:30:00.0023117,729.251
09:30:00.0023257,729.251
09:30:00.0028267,729.254
09:30:00.0030547,729.2517
09:30:00.0041717,729.502
09:30:00.0000147,729.003
09:30:00.0000157,729.253
09:30:00.0022987,729.253
09:30:00.0023117,729.251
09:30:00.0023257,729.251
09:30:00.0028267,729.254
09:30:00.0030547,729.2517
09:30:00.0041717,729.502

History

Futures
16 yrs
Futures options
16 yrs
US stocks
12 mo
Equity options
3 yrs

Schemas

  • tradesGLBX.MDP3Futures and options on futures
  • tradesXNAS.ITCH, XNYS.PILLAR, ARCX.PILLAR, …US stocks, from the stock's listing exchange
  • tradesOPRA.PILLAREquity options, every exchange
  • Ask for one instrument, a continuous futures series, or a whole root or chain at once (ES.FUT, SPY.OPT) with stype_in="parent".

Fields

ts_recv
when the feed received it, UTC, to the nanosecond
ts_event
when the exchange stamped the event, UTC, to the nanosecond
rtype
record type
publisher_id
exchange and feed the record came from
instrument_id
numeric id of the contract or stock
action
book action: 'A' add, 'C' cancel, 'M' modify, 'T' trade, 'F' fill, 'R' clear
side
'A' ask, 'B' bid, 'N' none; on a trade, the side that was hit
depth
book level the event changed, 0 for the top
price
price of the event or trade
size
size of the event or trade
flags
record flags set by the feed
ts_in_delta
feed latency, nanoseconds
sequence
feed sequence number
symbol
the symbol you asked for

Example data

Rows exactly as the API returned them.

ES front month (ES.v.0), 22 October 2026, from 09:30:00 ET · trades
ts_recvts_eventrtypepublisher_idinstrument_idactionsidedepthpricesizeflagsts_in_deltasequencesymbol
2026-10-22T13:30:00.001096462+00:002026-10-22T13:30:00.000013859+00:000110252TA07729301517944656393ES.v.0
2026-10-22T13:30:00.001131021+00:002026-10-22T13:30:00.000015491+00:000110252TB07729.25301631244656394ES.v.0
2026-10-22T13:30:00.002499544+00:002026-10-22T13:30:00.002297945+00:000110252TB07729.25301482344656405ES.v.0
2026-10-22T13:30:00.002541533+00:002026-10-22T13:30:00.002310771+00:000110252TB07729.25101232444656406ES.v.0
2026-10-22T13:30:00.002582082+00:002026-10-22T13:30:00.002325399+00:000110252TB07729.25101179344656407ES.v.0
2026-10-22T13:30:00.003045872+00:002026-10-22T13:30:00.002826191+00:000110252TB07729.25401434144656412ES.v.0
2026-10-22T13:30:00.003431829+00:002026-10-22T13:30:00.003053893+00:000110252TB07729.251701461344656414ES.v.0
2026-10-22T13:30:00.004392893+00:002026-10-22T13:30:00.004171093+00:000110252TB07729.5201443444656449ES.v.0
SPY 18 December 2026 660 put, the first prints after the open · trades
ts_recvts_eventrtypepublisher_idinstrument_idactionsidedepthpricesizeflagsts_in_deltasequencesymbol
2026-10-22T13:32:45.098780676+00:002026-10-22T13:32:45.098573145+00:000211409286280TN02.41192047063937SPY 261218P00660000
2026-10-22T13:35:35.696531141+00:002026-10-22T13:35:35.696319236+00:000251409286280TN02.381192079699299SPY 261218P00660000
2026-10-22T14:06:21.189862615+00:002026-10-22T14:06:21.189657986+00:000291409286280TN02.47201920395155166SPY 261218P00660000
2026-10-22T14:09:27.310457673+00:002026-10-22T14:09:27.310252364+00:000271409286280TN02.5151920426083510SPY 261218P00660000

Times are UTC to the nanosecond; a bar is stamped at its open.

Request it

import quantpad_data as qpd

h = qpd.Historical()
trades = h.timeseries.get_range(
    dataset="GLBX.MDP3", symbols="ES.v.0", stype_in="continuous",
    schema="trades", start="2026-10-22T13:30", end="2026-10-22T14:30",
)

Or ask the agent in plain English; it writes the same call for you.