Massive does not merge an adjusted series into the standard one or rewrite the old contract, because the exchanges do not: after a corporate action changes what a contract delivers, the two series exist side by side and represent different economic exposure. So a search on an underlying can return more contracts than you expect, and telling them apart is a symbology question.
Applies to
- Plans: an Options subscription.
- Endpoints: /v3/reference/options/contracts for the contract list, and every options data endpoint for the contracts themselves.
- Asset classes: US-listed equity options.
How to spot an adjusted series
Look at the characters between O: and the six-digit expiry. A standard contract has only the underlying root there; an adjusted one usually has the root plus a digit:
curl -X GET "https://api.massive.com/v3/reference/options/contracts?underlying_ticker=GME&limit=1000&apiKey=YOUR_API_KEY"
Response
{
"results": [
{ "ticker": "O:GME1261016C00003000", "underlying_ticker": "GME", "shares_per_contract": 100 },
{ "ticker": "O:GME260918C00003000", "underlying_ticker": "GME", "shares_per_contract": 100 }
],
"status": "OK"
}
Both come back under underlying_ticker: GME, so filtering by underlying returns the two series mixed together. Counted across all 1,308 GME contracts rather than one page of them, 204 carry the digit and 1,104 do not. Every one of the 204 carries an additional_underlyings entry and none of the 1,104 does, so that field is the reliable test rather than the symbol shape. Page through the whole set before drawing a ratio: contracts come back in symbol order, so the first page can be entirely one kind.
What the reference fields tell you
The reference fields tell you more than the ticker does. shares_per_contract reports 100 on both series, so it is not the field that distinguishes them. Two others are. Fetch a single adjusted contract and you get a correction indicator and an additional_underlyings array naming what the contract actually delivers:
curl -X GET "https://api.massive.com/v3/reference/options/contracts?ticker=O:GME1261016C00003000&apiKey=YOUR_API_KEY"
Response
{
"results": [
{
"ticker": "O:GME1261016C00003000",
"underlying_ticker": "GME",
"contract_type": "call",
"exercise_style": "american",
"expiration_date": "2026-10-16",
"shares_per_contract": 100,
"strike_price": 3,
"correction": 1,
"additional_underlyings": [{ "type": "equity", "underlying": "GMEWS", "amount": 10 }]
}
],
"status": "OK"
}
So this contract delivers 100 GME plus 10 GMEWS. That is why an adjusted contract's price is not comparable with a standard one at the same strike: they deliver different things, and additional_underlyings is where the difference is written down. The OCC's contract adjustment memo for the corporate action remains the fullest account.
Why both series exist
Both series exist because the adjustment cannot apply retroactively to contracts that were already open. When a corporate action changes the deliverable, the exchanges create a new series carrying the old terms and continue listing standard contracts for the new share structure, so holders of the old contracts keep what they bought. That is why the two run alongside each other rather than one replacing the other, and why a chain for an affected underlying looks duplicated.
If you see an error
A chain that appears to have two contracts at every strike is the two series, not duplicate data. Read the character before the expiry date.
An adjusted contract whose price looks wrong against its neighbors is usually a different deliverable rather than a bad print.
A contract you can see on another vendor but not here may be one they merged into the standard series. Search on the digit form as well.

