US Equities Trade and Quote Minute Bar
One row per ticker per trading minute built from consolidated SIP NBBO quotes and trades, giving open/high/low/close bid, ask and trade fields plus spread, trade-at-bid/mid/ask, tick-direction and time-weighted statistics (61 columns). Includes FINRA/TRF-reported trades and carries the NBBO forward through quiet minutes.
How to use it
Times are local US Eastern clock times (DST-aware), not UTC. Treat TRADE NB / NBBO-flagged rows as the backtest-grade subset. Cancellations reference earlier trades and can arrive hours later, so aggregate only after the session closes. Prices are unadjusted unless the dataset name says Adjusted; join us-equities-*-adjustment-factors on SecId for adjustment.
Typical use
Backtesting, execution and microstructure research, feature engineering for US equities.
Limitations
Delivered as recorded from the source feed: AlgoSeek does not remove crossed or locked quotes, bad prints, or out-of-sequence packets unless contracted to. Consumers own cleaning. Bars are half-open [TimeBarStart, next bar start): OpenBarTime equals the bar start (.000000000) and CloseBarTime is the last nanosecond of the bar (.999999999). The guide's wording ('greater than start') is looser than this. Continuous minute bars: a row exists for every minute from 04:00 ET until the last exchange closes. With no NBBO change the prior bar's NBBO is carried forward, NBBOQuoteCount is 0 and the High/Low bid/ask times equal OpenBarTime (confirmed in the sample). Single-event bars: with only one trade, one NBBO bid or one NBBO ask in the bar, open/high/low/close price, size and time are identical for that side. A bar can have bid/ask OHLC but no trade OHLC. 'Blank' means an empty CSV field (no NULL token). Trade-derived price/time/size fields are blank when the bar has no qualifying trade; share-volume counters are 0 per the guide (see discrepancies for sample deviations).
Coverage
Top-of-book quotes and trades from 15+ US exchanges and marketplaces via the consolidated SIP (CTA Tape A/B, UTP Tape C); venue names in 'venues' are only the examples the guide gives. Guide scope: all listed stocks, ETNs, ETFs, ADRs and funds; the product page adds preferred stocks, warrants and units. Includes trades reported to the FINRA Trade Reporting Facilities. Page: full historical archive plus daily updates; history start not stated.
Venues (5)
- NASDAQ
- BATS
- NYSE
- ARCA
- FINRA TRF
Answers to common questions
- What time zone are the timestamps in?
- US Eastern local time with daylight saving (the guides label it EST/ET).
- Are prices adjusted for splits and dividends?
- Only in datasets whose name contains Adjusted; all others are as traded.
Usage constraints
- Licensed vendor data: never export raw rows to a tenant-local destination or include them verbatim in a public artifact; serve only through entitlement-checked platform reads.
- Do not treat the vendor's `Ticker` as a stable identity across time; join on an AlgoSeek security key (SecId or ASID, which are distinct) or the platform symbol mapping.
Known issues (11)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyProduct title says '60 Fields' and the description 'approximately 60 metrics'; the guide text, Table 1 and the sample header all give 61 columns (the three counts of 61 agree).
- Documentation discrepancyCloseAskSize is typed 'decimal' in Table 1 while every other size is 'integer'; sample values are whole numbers, so it is typed integer here.
- Documentation discrepancyTimeBarStart: Table 1 says HH:MM for a minute bar, but this dataset's sample shows HH:MM:SS (09:30:00) for minute bars while the companion no-FINRA sample shows HH:MM. The FAQ says TimeBarStart can be HHMMSSmmm (millisecond) or HHMMSSmmmiiinnn (nanosecond), which matches neither Table 1 (HH:MM / HH:MM:SS) nor any sample; Table 1 is treated as authoritative.
- Documentation discrepancyBar Notes describe a minute bar as 'greater than 11:04 to less than 11:05', but OpenBarTime is exactly HH:MM:00.000000000; bars are treated as half-open [start, next start).
- Documentation discrepancyCarry-forward description 'OpenBarTime = HighBidTime = LowBidTime = CloseBarTime' cannot hold literally because CloseBarTime is the last nanosecond of the bar; in carry-forward bars of the samples the High/Low bid/ask times equal OpenBarTime.
- Documentation discrepancyThe Volume field text says 'TotalVolume = Volume + FinraVolume' but this 61-column file has no TotalVolume column (it exists only in the Extended datasets).
- Documentation discrepancyTable 1 gives 'Never' as the Missing value for Open bid/ask price and size, but the first bar of the day (04:00) has no earlier NBBO to carry; the companion no-FINRA sample shows those four fields blank in its 04:00 bar. Not exercised here because this sample starts at 09:30.
- Documentation discrepancyTable 1 gives 'Blank' for TimeWeightBid/TimeWeightAsk, but in the companion no-FINRA sample they are populated in all 58 bars without trades. Every bar in this sample has trades, so the behaviour is unverified here.
- Documentation discrepancyGuide scope says 'all listed stocks, ETNs, ETFs, ADRs, and funds'; the product page also lists preferred stocks, warrants and units.
- Documentation discrepancyMinor guide typos: 'NNBO' in the NBBOQuoteCount description, 'rade' in HighTradeTime, the five tick-volume fields typed 'Integer' with a capital I.
61 columns in delivery order · file or table name eq_taq_1min. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| Date | dateyyyymmdd | Key 1 · Partition · Required | Trading date of the bar (yyyymmdd); also the trading day of the file the row came from. Missing values: Never · Source: vendor guide and sample |
| Ticker | string | Key 2 · Partition · Required | Symbol name of the security. The guide documents no other identifier or symbology for these files. Missing values: Never · Source: vendor guide and sample |
| TimeBarStart | timeHH:MM per Table 1; sample shows HH:MM:SS | Key 3 · Required | Bar start time in ET; Table 1 says HH:MM for a minute bar, but this dataset's published sample shows HH:MM:SS. Missing values: Never · Source: vendor guide and sample |
| OpenBarTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the bar open, i.e. the bar start (e.g. 11:03:00.000000000 for a minute bar). Missing values: Never · Source: vendor guide and sample | |
| OpenBidPrice | number | Required | NBBO bid price in force at bar open (the price as of bar start, carried over from the prior bar). Unit: USD · Missing values: Never · Source: vendor guide and sample |
| OpenBidSize | integeri64 | Required | Aggregate size across all exchanges quoting the NBBO bid price at bar open. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| OpenAskPrice | number | Required | NBBO ask price in force at bar open (the price as of bar start, carried over from the prior bar). Unit: USD · Missing values: Never · Source: vendor guide and sample |
| OpenAskSize | integeri64 | Required | Aggregate size across all exchanges quoting the NBBO ask price at bar open. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| FirstTradeTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the first trade in the bar; blank when the bar has no trade. Missing values: Blank · Source: vendor guide and sample | |
| FirstTradePrice | number | Price of the first trade in the bar; blank when the bar has no trade. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| FirstTradeSize | integeri64 | Number of shares in the first trade of the bar; blank when the bar has no trade. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| HighBidTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp at which the highest NBBO bid of the bar was set. Missing values: Never · Source: vendor guide and sample | |
| HighBidPrice | number | Required | Highest NBBO bid price during the bar. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| HighBidSize | integeri64 | Required | Aggregate size across all exchanges at the highest NBBO bid price. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| HighAskTime | timeHH:MM:SS.mmmuuunnn | Required | Nanosecond timestamp at which the highest NBBO ask of the bar was set. Missing values: Never · Source: vendor guide and sample |
| HighAskPrice | number | Required | Highest NBBO ask price during the bar. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| HighAskSize | integeri64 | Required | Aggregate size across all exchanges at the highest NBBO ask price. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| HighTradeTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the highest-priced trade in the bar; blank when the bar has no trade. Missing values: Blank · Source: vendor guide and sample | |
| HighTradePrice | number | Price of the highest-priced trade in the bar; blank when the bar has no trade. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| HighTradeSize | integeri64 | Number of shares in the highest-priced trade; blank when the bar has no trade. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| LowBidTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp at which the lowest NBBO bid of the bar was set. Missing values: Never · Source: vendor guide and sample | |
| LowBidPrice | number | Required | Lowest NBBO bid price during the bar. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| LowBidSize | integeri64 | Required | Aggregate size across all exchanges at the lowest NBBO bid price. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| LowAskTime | timeHH:MM:SS.mmmuuunnn | Required | Nanosecond timestamp at which the lowest NBBO ask of the bar was set. Missing values: Never · Source: vendor guide and sample |
| LowAskPrice | number | Required | Lowest NBBO ask price during the bar. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| LowAskSize | integeri64 | Required | Aggregate size across all exchanges at the lowest NBBO ask price. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| LowTradeTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the lowest-priced trade in the bar; blank when the bar has no trade. Missing values: Blank · Source: vendor guide and sample | |
| LowTradePrice | number | Price of the lowest-priced trade in the bar; blank when the bar has no trade. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LowTradeSize | integeri64 | Number of shares in the lowest-priced trade; blank when the bar has no trade. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| CloseBarTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the bar close, the last nanosecond of the bar (e.g. 11:03:59.999999999 for a minute bar). Missing values: Never · Source: vendor guide and sample | |
| CloseBidPrice | number | Required | NBBO bid price at bar close. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| CloseBidSize | integeri64 | Required | Aggregate size across all exchanges at the closing NBBO bid price. Unit: shares · Missing values: Never · Source: vendor guide and sample |
| CloseAskPrice | number | Required | NBBO ask price at bar close. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| CloseAskSize | integeri64 | Aggregate size across all exchanges at the closing NBBO ask price (typed decimal in the guide; values are whole shares). Unit: shares · Missing values: Never · Source: vendor guide and sample | |
| LastTradeTime | timeHH:MM:SS.mmmuuunnn | Nanosecond timestamp of the last trade in the bar; blank when the bar has no trade. Missing values: Blank · Source: vendor guide and sample | |
| LastTradePrice | number | Price of the last trade in the bar; blank when the bar has no trade. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LastTradeSize | integeri64 | Number of shares in the last trade of the bar; blank when the bar has no trade. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| MinSpread | number | Required | Smallest NBBO bid-ask spread in the bar; a crossed market or negative back-quote spread is floored to 0. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| MaxSpread | number | Required | Largest NBBO bid-ask spread seen in the bar. Unit: USD · Missing values: Never · Source: vendor guide and sample |
| CancelSize | integeri64 | Total shares in trade-cancel events within the bar; blank when none. Unit: shares · Missing values: Blank · Source: vendor guide and sample | |
| VolumeWeightPrice | number | Volume-weighted average trade price for the bar, excluding FINRA/TRF-reported trades; blank when there are no such trades. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| NBBOQuoteCount | integeri64 | Number of NBBO bid and ask quote updates during the bar; 0 when there were none. Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtBid | integeri64 | Shares traded at or below the prevailing NBBO bid (late-reported prints can fall below the bid). Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtBidMid | integeri64 | Shares traded strictly between the NBBO bid and the NBBO midpoint. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtMid | integeri64 | Shares traded exactly at the NBBO midpoint. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtMidAsk | integeri64 | Shares traded strictly between the NBBO midpoint and the NBBO ask. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtAsk | integeri64 | Shares traded at or above the prevailing NBBO ask. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtCrossOrLocked | integeri64 | Shares traded while the NBBO was locked (bid = ask) or crossed (bid > ask). Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| Volume | integeri64 | Shares traded in the bar excluding FINRA/TRF-reported trades; total volume = Volume + FinraVolume. 0 when no trades. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TotalTrades | integeri64 | Total number of trades in the bar (exchange plus FINRA/TRF where the dataset carries both). Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| FinraVolume | integeri64 | Shares in FINRA/TRF-reported trades (dark pools, broker-dealer internalization, OTC); 0 when none. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| FinraVolumeWeightPrice | number | Volume-weighted average price of the bar's FINRA/TRF-reported trades only; blank when there are none. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UptickVolume | integeri64 | Shares traded on trades priced above the previous trade price (uptick). Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| DowntickVolume | integeri64 | Shares traded on trades priced below the previous trade price (downtick). Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| RepeatUptickVolume | integeri64 | Shares traded at the same price as the previous trade when the last price change was up. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| RepeatDowntickVolume | integeri64 | Shares traded at the same price as the previous trade when the last price change was down. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| UnknownTickVolume | integeri64 | Volume of the first trade after 04:00, whose tick direction is unknown; seeds the tick-direction volumes. Unit: shares · Missing values: 0 · Source: vendor guide and sample | |
| TradeToMidVolWeight | number | Volume-weighted mean of (trade price - NBBO midpoint at trade time) over exchange trades; sign shows buy/sell pressure. Blank if no trades. Missing values: Blank · Source: vendor guide and sample | |
| TradeToMidVolWeightRelative | number | As TradeToMidVolWeight but each term scaled by max(1, NBBO spread in pennies); sign shows buy/sell pressure. Blank if no trades. Missing values: Blank · Source: vendor guide and sample | |
| TimeWeightBid | number | Time-weighted average NBBO bid price over the bar; the price at bar open counts from bar start. Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| TimeWeightAsk | number | Time-weighted average NBBO ask price over the bar; the price at bar open counts from bar start. Unit: USD · Missing values: Blank · Source: vendor guide and sample |
- errorrow_count_positivecompleteness
Every delivered partition (trade date, or snapshot) carries at least one row.
rowCount must be greater than 0
- errorprimary_key_uniqueuniqueness
The declared primary key is unique within each delivered partition (one file or table snapshot).
duplicateValues (properties: Date, Ticker, TimeBarStart) must be 0
- errortrade_high_ge_lowaccuracy
HighTradePrice is never below LowTradePrice in the same row.
SELECT COUNT(*) FROM {object} WHERE HighTradePrice IS NOT NULL AND LowTradePrice IS NOT NULL AND HighTradePrice < LowTradePrice - errorbid_high_ge_lowaccuracy
HighBidPrice is never below LowBidPrice in the same row.
SELECT COUNT(*) FROM {object} WHERE HighBidPrice IS NOT NULL AND LowBidPrice IS NOT NULL AND HighBidPrice < LowBidPrice - errorask_high_ge_lowaccuracy
HighAskPrice is never below LowAskPrice in the same row.
SELECT COUNT(*) FROM {object} WHERE HighAskPrice IS NOT NULL AND LowAskPrice IS NOT NULL AND HighAskPrice < LowAskPrice - warningopen_close_within_rangeaccuracy
Open and close usually sit inside the high-low range. Only a warning: some AlgoSeek aggregations take open/close from a different event set than high/low (seen in the Daily OHLC sample).
SELECT COUNT(*) FROM {object} WHERE FirstTradePrice > HighTradePrice OR FirstTradePrice < LowTradePrice OR LastTradePrice > HighTradePrice OR LastTradePrice < LowTradePrice - warningvwap_within_rangeaccuracy
VWAP (sum(price*shares)/sum(shares)) lies within the bar's trade range.
SELECT COUNT(*) FROM {object} WHERE VolumeWeightPrice > HighTradePrice OR VolumeWeightPrice < LowTradePrice - errorCancelSize_non_negativeaccuracy
CancelSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CancelSize < 0 - errorCloseAskSize_non_negativeaccuracy
CloseAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CloseAskSize < 0 - errorCloseBidSize_non_negativeaccuracy
CloseBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CloseBidSize < 0 - errorDowntickVolume_non_negativeaccuracy
DowntickVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE DowntickVolume < 0 - errorFinraVolume_non_negativeaccuracy
FinraVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE FinraVolume < 0 - errorFirstTradeSize_non_negativeaccuracy
FirstTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE FirstTradeSize < 0 - errorHighAskSize_non_negativeaccuracy
HighAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE HighAskSize < 0 - errorHighBidSize_non_negativeaccuracy
HighBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE HighBidSize < 0 - errorHighTradeSize_non_negativeaccuracy
HighTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE HighTradeSize < 0 - errorLastTradeSize_non_negativeaccuracy
LastTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LastTradeSize < 0 - errorLowAskSize_non_negativeaccuracy
LowAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LowAskSize < 0 - errorLowBidSize_non_negativeaccuracy
LowBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LowBidSize < 0 - errorLowTradeSize_non_negativeaccuracy
LowTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LowTradeSize < 0 - errorNBBOQuoteCount_non_negativeaccuracy
NBBOQuoteCount is never negative.
SELECT COUNT(*) FROM {object} WHERE NBBOQuoteCount < 0 - errorOpenAskSize_non_negativeaccuracy
OpenAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE OpenAskSize < 0 - errorOpenBidSize_non_negativeaccuracy
OpenBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE OpenBidSize < 0 - errorRepeatDowntickVolume_non_negativeaccuracy
RepeatDowntickVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE RepeatDowntickVolume < 0 - errorRepeatUptickVolume_non_negativeaccuracy
RepeatUptickVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE RepeatUptickVolume < 0 - errorTotalTrades_non_negativeaccuracy
TotalTrades is never negative.
SELECT COUNT(*) FROM {object} WHERE TotalTrades < 0 - errorUnknownTickVolume_non_negativeaccuracy
UnknownTickVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE UnknownTickVolume < 0 - errorUptickVolume_non_negativeaccuracy
UptickVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE UptickVolume < 0 - errorVolume_non_negativeaccuracy
Volume is never negative.
SELECT COUNT(*) FROM {object} WHERE Volume < 0 - warningclose_quote_not_crossedaccuracy
Closing NBBO is rarely crossed; AlgoSeek ships crossed quotes as-is, so this only warns.
SELECT COUNT(*) FROM {object} WHERE CloseBidPrice > 0 AND CloseAskPrice > 0 AND CloseBidPrice > CloseAskPrice
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Plain-text CSV with a fixed header row and one data row per bar. One file per symbol per trading day (e.g. all AAPL bars for 3 Mar 2020 in one file), arranged as a flat-file database by date and then by ticker. Files are gzip-compressed (.csv.gz, roughly 8:1). The guide gives no bucket or path naming pattern.
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
REST API
AlgoSeek Datasets REST API (X-API-KEY header; JSON, CSV or gzipped CSV). Returns AlgoSeek's normalized API layout, which differs from the flat-file columns in this contract's schema.
https://api.algoseek.com/v1/data/us-equity/taq-1min/:identifier
- Authentication:
- X-API-KEY header issued by AlgoSeek
- Response formats:
- json, csv, csv_gzip
- Pagination:
- offset + limit; tick endpoints take trade_date and identifier (Ticker or ASID) in the path
Service levels
- Update frequency
- Daily
- Retention
- Bounded by the license term
- Retention of landed copies is bounded by the AlgoSeek license; purge on termination.
- History starts
- Not stated in the vendor documentation
Service levels describe the vendor feed as documented. They are draft values, not a commitment by AlphaSwarm.
Data Contract Editor · read-only preview — edits are not saved
Open-source Data Contract Editor (MIT). Changes stay in this browser tab: Cancel restores the published contract, and Download copy saves your edited YAML to your device only.
Contracts follow the Open Data Contract Standard (Bitol, LF AI & Data).
Vendor names are trademarks of their owners.