US Options Trade and Quote Minute Bar
One row per option contract per one-minute interval in which at least one NBBO bid, NBBO ask or trade occurred, giving open/high/low/close of bid, ask and trade (time, price, size), underlying NBBO at the first and last event, spread statistics, trade-versus-NBBO volume buckets and volume. Built from OPRA consolidated trades and top-of-book quotes.
How to use it
Identify a contract by underlying, expiration, strike and call/put. Most options tick files carry no underlying/root column: the underlying comes from the file path or API identifier, so keep it alongside every row you land. Strikes and prices are plain decimals (not scaled). EventType is a bit field: low 4 bits message type, 16 cancel, 32 call, 64 NBBO, 128 buy/bid side. Check OCC special settlements before comparing prices across a corporate action.
Typical use
Options pricing, volatility, and flow research on US-listed equity and index options.
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. Contract identity per row = Ticker + CallPut + Strike + ExpirationDate (no OSI/OCC symbol column, no contract id). Strike is a decimal in USD per share (4 decimals in sample); ExpirationDate is yyyymmdd. Event-based bars: a bar exists only if the contract had at least one bid, ask or trade in that minute. Missing bars mean no events, not zero activity; build a time grid and forward-fill yourself, or use the Continuous variant. Bid, ask and trade OHLC are independent: a bar can have quote fields but no trade fields (trade fields blank, Volume = 0). With a single event, open/high/low/close price, size and time are equal. Quotes are the NBBO built from Firm Quote and Customer Trade Interest bids/asks; Open Interest, Rotation and Non-Firm quote events are excluded. Trades with condition codes A, B, C, F, G, N, O, T are excluded.
Coverage
US listed options from the OPRA consolidated feed (16 SEC-approved options exchanges); guide intro names options on equities, ETFs, ETNs and ADRs, while its Time Range section and the product page also cover index options. History start date is not stated.
Venues (1)
- OPRA consolidated feed (16 options exchanges; individual venues not named)
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 (8)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Update cadence and publication latency are not stated in the guide; confirm with AlgoSeek (or GET /v1/meta/datasets/{id}/status).
- Documentation discrepancyTimeBarStart: guide says HH:MM for minute bars (second bars HH:MM:SS); the published sample delivers HH:MM:SS ('09:30:00') in all rows.
- Documentation discrepancyProduct page says the data covers the regular session 09:30-16:15 ET plus a Curb session to 17:00 ET where available; the guide (v1.5, Apr 2022) only states 09:30:00-16:15:00 ET and never mentions Curb (Curb began 2022-04-25 per the Daily TAQ guide, after this guide's date).
- Documentation discrepancyGuide intro limits scope to options on equities, ETFs, ETNs and ADRs, but its Time Range section says some indexes trade to 16:15 and the page says all US listed options.
- Documentation discrepancyGuide TOC lists Appendix A (FAQ) on page 12 but the PDF text ends on page 10; no FAQ content available.
- Documentation discrepancyGuide wording of the file layout ('one file per ticker per trading day per ticker and per option chain') is garbled; interpreted as per underlying ticker, per day, per chain.
- Documentation discrepancyGuide field table wraps across pages; columns were reassembled with a table-mode text extraction and match the 60-column sample header exactly, in the same order.
60 columns in delivery order · file or table name opt_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 Missing values: Never · Source: vendor guide and sample |
| TimeBarStart | timeHH:MM:SS | Key 2 · Required | Start of the one-minute bar; guide says HH:MM, sample delivers HH:MM:SS (09:30:00) Missing values: Never · Source: vendor guide and sample |
| Ticker | string | Key 3 · Partition · Required | Symbol name; sample shows the underlying/root (AAPL). Root vs underlying for index or adjusted roots is not stated Missing values: Never · Source: vendor guide and sample |
| CallPut | string · enum (2) | Key 4 · Required | Option type, C = Call or P = Put Missing values: Never · Source: vendor guide and sample 2 allowed values
|
| Strike | number | Key 5 · Required | Fixed price at which the option can be exercised, quoted per share of underlying Unit: USD · Missing values: Never · Source: vendor guide and sample |
| ExpirationDate | dateyyyymmdd | Key 6 · Required | Expiration date of the option contract Missing values: Never · Source: vendor guide and sample |
| OpenBidTime | timeHH:MM:SS.mmm | Time of the first NBBO bid in the bar Missing values: Blank · Source: vendor guide and sample | |
| OpenBidPrice | number | NBBO price of the first bid in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OpenBidSize | integeri64 | Size of the first NBBO bid in the bar Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| OpenAskTime | timeHH:MM:SS.mmm | Time of the first NBBO ask in the bar Missing values: Blank · Source: vendor guide and sample | |
| OpenAskPrice | number | NBBO price of the first ask in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OpenAskSize | integeri64 | Size of the first NBBO ask in the bar Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| OpenTradeTime | timeHH:MM:SS.mmm | Time of the first trade in the bar Missing values: Blank · Source: vendor guide and sample | |
| OpenTradePrice | number | Price of the first trade in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OpenTradeSize | integeri64 | Contracts in the first trade in the bar Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighBidTime | timeHH:MM:SS.mmm | Time of the highest NBBO bid price in the bar Missing values: Blank · Source: vendor guide and sample | |
| HighBidPrice | number | Highest NBBO bid price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| HighBidSize | integeri64 | Size at the highest NBBO bid Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighAskTime | timeHH:MM:SS.mmm | Time of the highest NBBO ask price in the bar Missing values: Blank · Source: vendor guide and sample | |
| HighAskPrice | number | Highest NBBO ask price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| HighAskSize | integeri64 | Size at the highest NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighTradeTime | timeHH:MM:SS.mmm | Time of the highest-priced trade in the bar Missing values: Blank · Source: vendor guide and sample | |
| HighTradePrice | number | Price of the highest trade in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| HighTradeSize | integeri64 | Contracts in the highest-priced trade Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowBidTime | timeHH:MM:SS.mmm | Time of the lowest NBBO bid in the bar Missing values: Blank · Source: vendor guide and sample | |
| LowBidPrice | number | Lowest NBBO bid price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LowBidSize | integeri64 | Size at the lowest NBBO bid Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowAskTime | timeHH:MM:SS.mmm | Time of the lowest NBBO ask in the bar Missing values: Blank · Source: vendor guide and sample | |
| LowAskPrice | number | Lowest NBBO ask price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LowAskSize | integeri64 | Size at the lowest NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowTradeTime | timeHH:MM:SS.mmm | Time of the lowest-priced trade in the bar Missing values: Blank · Source: vendor guide and sample | |
| LowTradePrice | number | Price of the lowest trade in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LowTradeSize | integeri64 | Contracts in the lowest-priced trade Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseBidTime | timeHH:MM:SS.mmm | Time of the last NBBO bid in the bar Missing values: Blank · Source: vendor guide and sample | |
| CloseBidPrice | number | NBBO price of the last bid in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CloseBidSize | integeri64 | Size of the last NBBO bid Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseAskTime | timeHH:MM:SS.mmm | Time of the last NBBO ask in the bar Missing values: Blank · Source: vendor guide and sample | |
| CloseAskPrice | number | NBBO price of the last ask in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CloseAskSize | integeri64 | Size of the last NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseTradeTime | timeHH:MM:SS.mmm | Time of the last trade in the bar Missing values: Blank · Source: vendor guide and sample | |
| CloseTradePrice | number | Price of the last trade in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CloseTradeSize | integeri64 | Contracts in the last trade in the bar Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| UnderOpenBidPrice | number | Underlying NBBO bid at the millisecond of the first option bid, ask or trade event in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UnderOpenAskPrice | number | Underlying NBBO ask at the millisecond of the first option bid, ask or trade event in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UnderCloseBidPrice | number | Underlying NBBO bid at the millisecond of the last option bid, ask or trade event in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UnderCloseAskPrice | number | Underlying NBBO ask at the millisecond of the last option bid, ask or trade event in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| MinSpread | number | Minimum bid-ask spread in the bar; can be 0 if crossed; needs both a bid and an ask in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| MaxSpread | number | Maximum bid-ask spread in the bar; needs both a bid and an ask in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CancelSize | integeri64 | Contracts of trades canceled during this bar; the canceled trades may have occurred any time since the open Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| VolumeWeightPrice | number | Volume-weighted average trade price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| NBBOQuoteCount | integeri64 | Number of NBBO bid and ask quote updates in the bar Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtBid | integeri64 | Contracts traded at or below the NBBO bid (late prints can be below the bid) Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtBidMid | integeri64 | Contracts traded strictly between the NBBO bid and the mid-point Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtMid | integeri64 | Contracts traded exactly at the NBBO mid-point Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtMidAsk | integeri64 | Contracts traded strictly between the NBBO mid-point and the ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtAsk | integeri64 | Contracts traded at or above the NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtCrossOrLocked | integeri64 | Contracts traded while the NBBO was locked (bid = ask) or crossed (bid > ask) Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| Volume | integeri64 | Total contracts traded in the bar Unit: contracts · Missing values: 0 · Source: vendor guide and sample | |
| TotalTrades | integeri64 | Total number of trades in the bar Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| FinraVolume | integeri64 | Contracts traded off the public exchanges and reported as FINRA; relation to Volume not stated Unit: contracts · Missing values: 0 · 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, TimeBarStart, Ticker, CallPut, Strike, ExpirationDate) 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 - 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 - errorCloseTradeSize_non_negativeaccuracy
CloseTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CloseTradeSize < 0 - errorFinraVolume_non_negativeaccuracy
FinraVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE FinraVolume < 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 - 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 - errorOpenTradeSize_non_negativeaccuracy
OpenTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE OpenTradeSize < 0 - errorTotalTrades_non_negativeaccuracy
TotalTrades is never negative.
SELECT COUNT(*) FROM {object} WHERE TotalTrades < 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 fixed header, gzip-compressed (uncompressed about 7x larger). One file per underlying ticker per trading day per option chain (ticker + expiration date), containing all calls and puts and strikes of that chain. Bars ordered by time. Bucket/path naming not stated in the guide.
- 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-opt/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
- 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.