US Options Trade and NBBO Quote
Tick-level OPRA option trades plus NBBO-flagged quote updates (other quote updates removed) for US equity, ETF, ETN and ADR options, each row carrying the underlying's bid and ask.
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-contract (or per-expiration TAR) file; the root/underlying is NOT in the row (no Ticker, no OSI/OCC symbol) and must be taken from the file name/path. StrikePrice and Price are plain decimals in dollars per underlying share (strike 200, price 3.8), not scaled by 1000; the contract multiplier is not in the file. EventType decoding verified on the sample: 100 = 64 NBBO + 32 call + 4 FirmQuote (ask); 228 adds buy side 128 (bid); 38 = 32 call + 6 Rotation; 166 = 128 + 38; 33 = 32 call + 1 Trade. Bit 4 (16) marks a cancelled prior trade/quote; no cancel rows appear in the sample. Action 'FQ NB' = FirmQuote with NBBO flag; quotes are one row per side (228 bid, 100 ask). The Exchange on an NBBO row is the venue posting that best price; many exchanges can post at the same millisecond.
Coverage
Options on equities, ETFs, ETNs and ADRs from the 16 SEC-approved options exchanges via OPRA; guide also mentions a curb session for a list of index options. Page says supplementary open-interest and end-of-day summary events are included. 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 documents EventType as 'string'; sample values are decimal integers rendered as text.
- Documentation discrepancyGuide says quotes other than NBBO are filtered out, but the sample contains Rotation rows (EventType 38 and 166, Action 'R') that carry no NBBO flag.
- Documentation discrepancyGuide intro calls the output 'bars' ordered by time although rows are individual events.
- Documentation discrepancyPage says open-interest and end-of-day summary events are included; no such rows appear in the 100-row sample (Action values seen: FQ NB, R, T).
- Documentation discrepancySample Conditions contains '*' on 19 NBBO quote rows; no guide table defines '*' (Table 5 defines space, F, I, R, T, A, B, O, C, X, Y).
- Documentation discrepancyGuide says one file per option contract per trading day, then says contracts of an expiration are bundled in one TAR file; the sample is one contract (CallPut C, strike 200, expiry 20230908).
- Documentation discrepancyIntro describes a curb session 16:15:00-17:00:00 for a list of index options but gives no list of the symbols.
- Documentation discrepancyUnderlying bid exceeds underlying ask in 4 of 100 sample rows (e.g. 195.08 vs 195.07), so the Under* pair is not guaranteed uncrossed.
- Documentation discrepancyGuide intro says 16 options exchanges, but Table 2 lists 31 codes including FINRA, OPRA, SIAC, THOMSON and UNKNOWN.
- 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'.
14 columns in delivery order · file or table name opt_tanq. 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. 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). 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 (14)space-separated tokens, e.g. 'FQ NB', 'T', 'R' | 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 14 allowed values
| |
| Side | string · enum (2)B | A | blank | Side of the book for quote events: B bid, A ask. Blank for trade events. Rotation rows in the sample also carry a side. Missing values: Empty for trade events (guide) · Source: vendor guide and sample 2 allowed values
| |
| Price | number | Trade price for trades; bid or ask price (per Side) for quote events. Option premium per underlying unit. Unit: USD · Source: vendor guide and sample | |
| Quantity | integeri64 | 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 (39)single character (space is a valid value) | Trade condition (Table 4) on trade rows; quote condition (Table 5) on quote/rotation rows. Sample also shows '*' on 19 NBBO quote rows, which no table defines. Source: vendor guide and sample 39 allowed values
| |
| UnderBidPrice | number | Bid price of the underlying security at the event. Can exceed UnderAskPrice (crossed) in the sample. Unit: USD · Source: vendor guide and sample | |
| UnderAskPrice | number | Ask price of the underlying security at the event. Unit: USD · 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) must be 0
- errorQuantity_non_negativeaccuracy
Quantity is never negative.
SELECT COUNT(*) FROM {object} WHERE Quantity < 0
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Plain-text CSV with a fixed header, events ordered by time. Guide: one file per option contract per trading day (example: AAPL call at the 325 strike expiring 2020-03-03, trading date 2020-02-27, in one file); each CSV gzip-compressed (about 7x expansion), and contracts of the same expiration are bundled into one TAR file. No bucket/path/file-name pattern is given. Sample rows are a single contract.
- 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/tanq/: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.