Programmatic access to retail‑grade options flow, exposure, and equity prints. The same exchange‑licensed data behind every Quant Data dashboard.
curl -X POST https://api.quantdata.us/v1/options/tool/net-drift \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{"sessionDate": "2026-05-13", "filter": {"ticker": "AAPL"}}'
{ "data": { "1778679000000": { "netCallPremium": 150000.00, "netPutPremium": -80000.00, "stockPrice": 185.50 } } }
QUICKSTART
Every endpoint is a POST with a Bearer token and a JSON body. Pass a session date and a ticker filter.
curl -X POST https://api.quantdata.us/v1/options/tool/net-drift \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{"sessionDate": "2026-05-13", "filter": {"ticker": "AAPL"}}'
{ "data": { "1778679000000": { "midMarketCallPremium": 1250000.00, "midMarketPutPremium": 980000.00, "netCallPremium": 150000.00, "netCallVolume": 1250, "netPutPremium": -80000.00, "netPutVolume": -620, "stockPrice": 185.50 }, "1778679060000": { ... }, "1778679120000": { ... }, ... } }
REFERENCE
Spanning options, equities, and news: flow, exposure, sentiment, price history, and ticker-tagged articles.
DESIGN
Four conventions that apply to every endpoint.
Every collection-typed filter accepts the singular or the plural field name, with either a scalar or an array as the value.
These four shapes all resolve to the same query:
{ "ticker": "AAPL" }{ "ticker": ["AAPL"] }{ "tickers": "AAPL" }{ "tickers": ["AAPL"] }The same convention applies to expirationDates, strikePrices, contractTypes, and every other plural field.
Filter operations accept symbolic, abbreviated, and full-name spellings. Pick whichever reads best at the call site. The six comparisons:
=, EQ, or EQUALS!=, NEQ, or DOES_NOT_EQUAL<, LT, or LESS_THAN<=, LTE, or LESS_THAN_OR_EQUAL_TO>, GT, or GREATER_THAN>=, GTE, or GREATER_THAN_OR_EQUAL_TOEvery input has a useful default so the simplest possible request still returns useful data:
sessionDate: the latest completed trading sessionaggregationPeriod: auto-picked to match your window lengthsize: 50 records per page on paginated toolsincludes / excludes (paginated tools only): empty, returning every projectable field per rowfilter / filterExpression: empty, returning every row in the sessionOverride any one, or all of them, per request.
Field names ignore case, separators, and whitespace, so you can spell them the way your codebase does. These five all resolve to the same field:
STRIKE_PRICEstrikePricestrike_pricestrike-price"strike price"