US Options Trade Only
Tick-level OPRA trades in US equity, ETF, ETN and ADR options, each row carrying the option NBBO in force and the underlying's bid, ask and last trade at execution; used for execution-quality and trade-aggressiveness analysis.
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 = ExpirationDate + StrikePrice + CallPut within a per-chain file; the root/underlying is NOT in the row (no Ticker, no UnderSymbol, no OSI/OCC symbol) and must be taken from the file name/path. StrikePrice (e.g. 202.5) and Price are plain decimals in dollars per underlying share, not scaled by 1000; the contract multiplier is not in the file. EventType decoding verified on the sample: 33 = 32 call + 1 Trade; 1 = put Trade; 7 = put Halted; 135 = 128 + 7. Bit 4 (16) would mark a cancelled prior trade; no cancel rows appear in the sample, but cancel conditions A, C, E and G exist in Conditions. Halted rows come in pairs at one Timestamp (EventType 7 and 135) with Side blank, Price 0 and Quantity 0; filter on Action = T to get trades only.
Coverage
All trades from the consolidated OPRA feed for options on equities, ETFs, ETNs and ADRs across the 16 SEC-approved options exchanges; the product page says all US equity options exchanges reporting via OPRA. Start date not stated.
Venues (31)
- AM (AMEX)
- AR (ARCA)
- BA (BATS)
- BY (BATS_Y)
- BO (BOSTON)
- C2 (C2)
- CB (CBOE)
- CS (CSE)
- EA (EDGA)
- EX (EDGX)
- FI (FINRA)
- IE (IEX OPTIONS)
- IS (ISE)
- IG (ISE_GEMINI)
- IM (ISE_MERCURY)
- LT (LTSE)
- MI (MIAX)
- MP (MIAX_PEARL)
- ME (MIAX_EMERALD)
- MS (MIAX_SAPPHIRE)
- MX (MEMX)
- M2 (MX2 OPTIONS)
- NA (NASDAQ)
- NB (NASDAQ_BX)
- NP (NASDAQ_PSX)
- NS (NSE)
- NY (NYSE)
- OP (OPRA)
- SI (SIAC)
- TH (THOMSON)
- UN (UNKNOWN)
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 (17)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyNeither the guide nor the sample has a Ticker/root column: the underlying of each row is only implied by the file, so rows are not self-describing.
- Documentation discrepancyGuide field table orders EventType, Side, Action; the sample header orders EventType, Action, Side.
- Documentation discrepancyGuide types EventType as 'integer' (other options guides say 'string'); sample values are plain decimal integers.
- Documentation discrepancyGuide Timestamp is HHMMSSmmm (9 characters); sample Timestamp and LastBid/AskTime values lack the leading zero before 10:00 (e.g. 93000008), and UnderLastTradeTime has 14 digits instead of 15 (e.g. 92959996516310), so they were evidently stored as numbers.
- Documentation discrepancy54 cells in the published sample CSV and JSON preview are date-mangled prices in dd.mm.yy form (Price 15, LastBidPrice 20, LastAskPrice 19), e.g. 02.03.23 for 2.3 and 06.06.23 for 6.6; the true format is plain decimal.
- Documentation discrepancySample includes Halted rows (EventType 7 and 135, Action 'H', Price 0, Quantity 0, Conditions 'T'); the guide and page describe the dataset as trades only.
- Documentation discrepancyGuide has no quote-condition table for LastBidCondition/LastAskCondition; sample shows space, *, A, B, O, Y (A/B/O/Y match the quote conditions defined in sibling guides) and '*' is undocumented anywhere.
- Documentation discrepancyGuide intro says 16 options exchanges, but Table 2 lists 31 codes including FINRA, OPRA, SIAC, THOMSON and UNKNOWN.
- Documentation discrepancyThe catalog page title reads 'US Options Trade Only Minute Bar Data' although the dataset is tick-level.
- Documentation discrepancyFirst sample row has blank LastBid*/LastAsk* fields (no NBBO yet); the guide does not describe missing-value behaviour.
- Documentation discrepancyUnderlying bid can exceed the underlying ask in the sample (9 of 100 rows), so UnderBidPrice/UnderAskPrice are not guaranteed to be an uncrossed quote.
- Documentation discrepancyGuide Table 6 says bits 0-3 are a '3-bit' message type, but bits 0-3 are 4 bits and Table 7 runs to value 11.
- Documentation discrepancyGuide Table 7 names message type 10 'UnderlyingValueSell' while Table 3 names the matching action 'UnderlyingValueSale'.
- Documentation discrepancyGuide Table 7 has no type 12 (Indicative); Table 3 lists action 'I' = Indicative Value and 'IN' = Invalid with no message-type value. The AlgoSeek decoder convention assigns 12 = Indicative.
- Documentation discrepancyGuide describes Quantity as 'Underlying asset quantity'; sample values (1..3444, quote sizes) behave as option contract counts.
- Documentation discrepancyGuide expands OPRA as 'Options Pricing Authority' while the product pages say 'Options Price Reporting Authority'.
25 columns in delivery order · file or table name opt_trades. 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 event in yyyymmdd; the guide marks the column as optional. Missing values: unstated (guide marks column optional) · Source: vendor guide and sample |
| Timestamp | timeHHMMSSmmm | Key 2 · Required | Event time in US Eastern clock time to the millisecond, no date part; keep as text (Excel mangles it). Sample rows omit the leading zero before 10:00 (8 digits, e.g. 93000008). Source: vendor guide and sample |
| CallPut | string · enum (2)C | P | Key 3 · Required | Option type: C for call, P for put. Source: vendor guide and sample 2 allowed values
|
| StrikePrice | number | Key 4 · Required | Strike price of the contract in dollars (index points for index options), e.g. 4555 or 202.5. Unit: USD · Source: vendor guide and sample |
| ExpirationDate | dateyyyymmdd | Key 5 · Required | Expiration date of the option contract in yyyymmdd. Source: vendor guide and sample |
| EventType | integeri64 | Key 6 · Required | Numeric byte mask: bits 0-3 message type, bit 4 cancel, bit 5 call, bit 6 NBBO, bit 7 buy/bid side. Action is its text form. Source: vendor guide and sample |
| Action | string · enum (10)space-separated tokens, e.g. 'T', 'H' | Text form of EventType: message-type token plus NB when the NBBO bit is set (e.g. 'FQ NB'). Side is a separate column. Source: vendor guide and sample 10 allowed values
| |
| Side | string · enum (2)B | A | blank | Side of the book for quote events: B bid, A ask. Blank for trade events. Also blank on the Halted rows in the sample. Missing values: Empty for trade events (guide) · Source: vendor guide and sample 2 allowed values
| |
| Price | number | Key 8 · Required | Trade price for trade events (0 on halt rows). Some sample cells appear as dd.mm.yy dates (spreadsheet corruption), e.g. 02.03.23 for 2.3. Unit: USD · Source: vendor guide and sample |
| Quantity | integeri64 | Key 9 · Required | Event size: traded size for trades, quote size for quotes. Guide says 'underlying asset quantity'; values behave as contract counts. Unit: contracts · Source: vendor guide and sample |
| Exchange | string · enum (31)2-letter code | Key 7 · Required | Two-letter code of the options venue that reported the trade or posted the quote (guide Table 2). Source: vendor guide and sample 31 allowed values
|
| Conditions | string · enum (34)single character (space is a valid value) | Single-character trade condition (guide Table 4); on halt rows the sample shows T, a quote-condition code (trading halted). Source: vendor guide and sample 34 allowed values
| |
| LastBidTime | timeHHMMSSmmm | Time of the last option NBBO bid before the trade (ET, ms). Sample drops the leading zero before 10:00. Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastBidPrice | number | Price of the last option NBBO bid. Some sample cells are date-mangled (dd.mm.yy). Unit: USD · Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastBidSize | integeri64 | Size of the last option NBBO bid. Unit: contracts · Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastBidCondition | stringsingle character (space and '*' occur) | Condition of the last option NBBO bid. No guide table; sample shows space, *, A, B. Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastAskTime | timeHHMMSSmmm | Time of the last option NBBO ask before the trade (ET, ms). Sample drops the leading zero before 10:00. Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastAskPrice | number | Price of the last option NBBO ask. Some sample cells are date-mangled (dd.mm.yy). Unit: USD · Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastAskSize | integeri64 | Size of the last option NBBO ask. Unit: contracts · Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| LastAskCondition | stringsingle character (space and '*' occur) | Condition of the last option NBBO ask. No guide table; sample shows space, *, A, B, O, Y. Missing values: unstated (sample: blank when no prior NBBO) · Source: vendor guide and sample | |
| UnderBidPrice | number | Bid price of the underlying security at the trade. Can exceed UnderAskPrice (crossed) in the sample. Unit: USD · Source: vendor guide and sample | |
| UnderAskPrice | number | Ask price of the underlying security at the trade. Unit: USD · Source: vendor guide and sample | |
| UnderLastTradeTime | timeHHMMSSmmmuuunnn (15 digits, ns); sample drops the leading zero before 10:00 | Time of the underlying's last trade at nanosecond resolution (ET). Source: vendor guide and sample | |
| UnderLastTradePrice | number | Price of the underlying's last trade. Unit: USD · Source: vendor guide and sample | |
| UnderLastTradeSize | integeri64 | Size of the underlying's last trade (shares inferred from values such as 100, 42). Unit: shares · 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
- warningprimary_key_uniqueuniqueness
Best-effort key for an event stream: same-timestamp events from one venue can repeat, so duplicates are reported, not rejected.
duplicateValues (properties: Date, Timestamp, CallPut, StrikePrice, ExpirationDate, EventType, Exchange, Price, Quantity) must be 0
- errorLastAskSize_non_negativeaccuracy
LastAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LastAskSize < 0 - errorLastBidSize_non_negativeaccuracy
LastBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LastBidSize < 0 - errorQuantity_non_negativeaccuracy
Quantity is never negative.
SELECT COUNT(*) FROM {object} WHERE Quantity < 0 - errorUnderLastTradeSize_non_negativeaccuracy
UnderLastTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE UnderLastTradeSize < 0
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Plain-text CSV with a fixed header, trade events ordered by time. Guide: one file per options chain (a specific expiration) per trading day; example of all AAPL calls and puts for one expiration on one trading date consolidated in one file; each CSV gzip-compressed (about 7x expansion). No bucket/path/file-name pattern is given. Sample rows span many strikes and both calls and puts of one expiration.
- 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/trades/:trade_date/:identifier/:expiration_date
- 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.