API Documentation
Programmatic access to options screening data across 14 strategies and thousands of contracts.
API access requires a premium subscription.
Authentication
All API requests require an API key passed via the X-API-Key header. Generate a key from your Account page.
Base URL
Endpoints
/api/getOptionsDataRetrieve screened options contracts for a given strategy, with optional filters, sorting, and pagination.
Strategies
Pass one of the following strategy codes as the strategy parameter.
| Code | Strategy | Category |
|---|---|---|
| CC | Covered Call | Wheel |
| CSP | Cash-Secured Put | Wheel |
| LC | Long Call | Long |
| LP | Long Put | Long |
| CDS | Call Debit Spread | Spreads |
| CCS | Call Credit Spread | Spreads |
| PDS | Put Debit Spread | Spreads |
| PCS | Put Credit Spread | Spreads |
| LSTRAD | Long Straddle | Volatility |
| LSTRANGLE | Long Strangle | Volatility |
| LCCS | Long Call Calendar | Calendar |
| LPCS | Long Put Calendar | Calendar |
| SCCS | Short Call Calendar | Calendar |
| SPCS | Short Put Calendar | Calendar |
| LEAPS | LEAPS | LEAPS |
Parameters
All parameters are passed as query string parameters. Only strategy is required.
| Name | Type | Required | Description |
|---|---|---|---|
| strategy | string | Yes | Strategy code. One of: CC, CSP, LC, LP, CDS, CCS, PDS, PCS, LSTRAD, LSTRANGLE, LCCS, LPCS, SCCS, SPCS, LEAPS |
| search | string | No | Filter by ticker symbol (case-insensitive partial match) |
| min_score | number | No | Minimum composite score |
| max_score | number | No | Maximum composite score |
| min_delta | number | No | Minimum delta |
| max_delta | number | No | Maximum delta |
| min_dte | number | No | Minimum days to expiration |
| max_dte | number | No | Maximum days to expiration |
| min_stock_price | number | No | Minimum underlying stock price |
| max_stock_price | number | No | Maximum underlying stock price |
| min_strike | number | No | Minimum strike price |
| max_strike | number | No | Maximum strike price |
| min_iv | number | No | Minimum implied volatility |
| max_iv | number | No | Maximum implied volatility |
| min_volume | number | No | Minimum contract volume |
| max_volume | number | No | Maximum contract volume |
| min_oi | number | No | Minimum open interest |
| max_oi | number | No | Maximum open interest |
| min_market_cap | number | No | Minimum market cap (in dollars) |
| max_market_cap | number | No | Maximum market cap (in dollars) |
| min_beta | number | No | Minimum beta |
| max_beta | number | No | Maximum beta |
| min_pe | number | No | Minimum P/E ratio |
| max_pe | number | No | Maximum P/E ratio |
| min_annualized_return | number | No | Minimum annualized return |
| max_annualized_return | number | No | Maximum annualized return |
| min_pop | number | No | Minimum probability of profit |
| max_pop | number | No | Maximum probability of profit |
| min_max_profit | number | No | Minimum max profit |
| max_max_profit | number | No | Maximum max profit |
| min_max_loss | number | No | Minimum max loss |
| max_max_loss | number | No | Maximum max loss |
| min_pl | number | No | Minimum P/L percent |
| max_pl | number | No | Maximum P/L percent |
| min_pl_percent | number | No | Legacy alias for min_pl |
| max_pl_percent | number | No | Legacy alias for max_pl |
| sector | string | No | Filter by sector (comma-separated for multiple) |
| industry | string | No | Filter by industry (comma-separated for multiple) |
| country | string | No | Filter by country (comma-separated for multiple) |
| exchange | string | No | Filter by exchange (comma-separated for multiple) |
| index | string | No | Filter by index membership (comma-separated for multiple) |
| exclude_sector | string | No | Exclude sectors (comma-separated) |
| exclude_industry | string | No | Exclude industries (comma-separated) |
| exclude_country | string | No | Exclude countries (comma-separated) |
| exclude_exchange | string | No | Exclude exchanges (comma-separated) |
| exclude_index | string | No | Exclude index memberships (comma-separated) |
| order_by | string | No | Column to sort by (default: score) |
| order_direction | string | No | Sort direction: asc or desc (default: desc) |
| page | number | No | Page number (default: 1) |
| page_size | number | No | Results per page, max 500 (default: 50) |
Response
All successful responses return a JSON envelope with paginated results. The response is gzip-compressed.
{
"success": true,
"data": [
{
"ticker": "AAPL",
"score": 92.5,
"strike": 195,
"stock_price": 198.50,
"delta": 0.30,
"days_to_expiration": 21,
"implied_volatility": 0.28,
"annualized_return": 18.4,
"volume": 1250,
"open_interest": 8400,
"market_cap": 3050000000000,
"sector": "Technology",
"industry": "Consumer Electronics",
...
},
...
],
"total": 1842,
"page": 1,
"page_size": 25
}Code Examples
Call the REST API directly from any language. All examples fetch covered calls sorted by score.
curl --compressed \
-H "X-API-Key: optionscreener_live_YOUR_KEY" \
"https://option-screener.com/api/getOptionsData?strategy=CC&min_score=80&order_by=score&order_direction=desc&page=1&page_size=25"Error Codes
Error responses return a JSON object with success: false and an error message.
{ "success": false, "error": "Invalid or missing API key" }| Code | Message | Description |
|---|---|---|
| 400 | Bad Request | Missing or invalid parameters (e.g. missing strategy, invalid strategy code) |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | API key is valid but does not have access (e.g. expired subscription) |
| 500 | Internal Server Error | Something went wrong on our end. Try again later. |
Ready to get started?
Generate your API key from the Account page and start querying in seconds.
Get Your API Key