POST/v1/contracts/screen
Screen option contracts with multi-factor filters
Screen option contracts matching custom filter predicates. Request body page and pageSize take precedence over query parameters; query parameters apply only when body values are <= 0. Results are silently capped at 100 contracts (not plan-clamped). Default sort order is option_key ASC (or expiration ASC, strike ASC, option_key ASC when a single symbol is pinned); specifying an explicit sort filter (e.g. contractScore desc) is recommended.
Endpoint Usage & Plan Rules
Plan Access
Included in Basic
Active subscription
Result Clamping
Not Clamped
Full response returned
Parameters
Optional Parameters
| Name | Type | Location | Description |
|---|---|---|---|
| page | integer | query | Page number (1-based; body value takes precedence if > 0; query applies only when body page <= 0). |
| pageSize | integer | query | Results per page (1 to 100, default 10; body value takes precedence if > 0; query applies only when body pageSize <= 0; values > 100 capped silently). |
Request Body
Screener filter predicates, sorting criteria, and pagination parameters.
json
{
"type": "put",
"deltaMin": -0.35,
"deltaMax": -0.2,
"dteMin": 30,
"dteMax": 45,
"openInterestMin": 100,
"filters": [
{
"field": "put",
"operation": "strikeFilter",
"value": 0.05
},
{
"field": "contractScore",
"operation": "sort",
"value": "desc"
}
],
"pageSize": 10
}Request Examples
curl -s -X POST -H "Authorization: Bearer $WSO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"symbols":["AAPL"],"deltaMax":0.35,"dteMax":45}' \
"https://api.wheelstrategyoptions.com/v1/contracts/screen"Try it
POST/v1/contracts/screen
Included in BasicAdd your API key to send.
Response
Send a request to see the live response, its status, timing, and rate-limit headers.
Response Attributes (200 OK)
| Field | Type | Nullable | Description |
|---|---|---|---|
| count | integer | No | Number of matching contracts (capped at 1,000; -1 if count timed out). |
| countCapped | boolean | No | True if matching contracts reached the maximum count cap of 1,000 (indicating count is a lower-bound ceiling rather than the exact total count; use hasMore to check if subsequent pages exist). |
| hasMore | boolean | No | True if additional candidate pages are available beyond the current page. |
| results | object[] | No | List of matching option contract results. |
Response Example
json
{
"count": 1000,
"countCapped": true,
"hasMore": true,
"results": [
{
"symbol": "A",
"type": "call",
"expiration": "2026-10-16T00:00:00Z",
"strike": 140,
"yieldPercent": 16.86,
"bidPrice": 23.6,
"volume": 3,
"openInterest": 44,
"delta": 0.97663,
"annualizedReturn": 876.8803,
"lastUpdatedDate": "2026-10-09T19:33:52.362Z",
"optionKey": "A261016C00140000",
"probability": 0.02406497,
"yesterdayMark": 29.3,
"thirtyDayAverageVolume": 2,
"thirtyDayAverageIV": 0.44,
"thirtyDayAveragePremium": 2130,
"premiumChange1dPct": null,
"volumeZScore30d": 0.19,
"openInterestZScore30d": -2.98,
"volumeStdDev30d": 3.86,
"openInterestStdDev30d": 22.84,
"volumeHistorySamples30d": 22,
"openInterestHistorySamples30d": 22,
"contractScore": 0.3483,
"premium": 2360,
"lastPrice": 16.65,
"lastTradeDate": "2026-09-18T19:14:26.111Z",
"askPrice": 26.6,
"stockPrice": 171.031311035156,
"impliedVolatility": 75.2,
"vega": 0.01306,
"gamma": 0.00308,
"theta": -0.08217,
"earningsDate": "2026-11-23T00:00:00Z",
"marketCap": 47302000000,
"industry": "Diagnostics & Research",
"sector": "Healthcare",
"peRatio": 33.0927,
"rating": "B+",
"consensus": "Buy",
"overallScore": 3,
"discountedCashFlowScore": 3,
"returnOnEquityScore": 5,
"returnOnAssetsScore": 5,
"debtToEquityScore": 1,
"priceToEarningsScore": 2,
"priceToBookScore": 2,
"rsi": 59.197136081869125,
"stockIV": 32.9,
"ivr": 59.0747,
"lowestStockIV": 16.3,
"highestStockIV": 44.4,
"lowestStockIVDate": "2026-07-29",
"highestStockIVDate": "2026-05-27",
"fiftyTwoWeekLow": 108.35,
"fiftyTwoWeekHigh": 177.05,
"fiftyDayAverage": 152.5316,
"twoHundredDayAverage": 132.8269,
"dividendYield": 0.602374,
"nextDividendDate": "2027-01-06",
"nextDividendIsEstimated": true,
"nextDividendPaymentDate": null,
"nextDividendAmount": 0.255,
"dividendFrequency": "Quarterly",
"logoUrl": "https://images.financialmodelingprep.com/symbol/A.png"
},
{
"symbol": "A",
"type": "call",
"expiration": "2026-10-16T00:00:00Z",
"strike": 145,
"yieldPercent": 12.83,
"bidPrice": 18.6,
"volume": 1,
"openInterest": 18,
"delta": 0.97342,
"annualizedReturn": 667.282,
"lastUpdatedDate": "2026-10-09T19:33:33.711Z",
"optionKey": "A261016C00145000",
"probability": 0.02754515,
"yesterdayMark": 24.3,
"thirtyDayAverageVolume": 2,
"thirtyDayAverageIV": 0.25,
"thirtyDayAveragePremium": 1713.64,
"premiumChange1dPct": null,
"volumeZScore30d": -0.23,
"openInterestZScore30d": -2.27,
"volumeStdDev30d": 5.22,
"openInterestStdDev30d": 9.44,
"volumeHistorySamples30d": 22,
"openInterestHistorySamples30d": 22,
"contractScore": 0.3487,
"premium": 1860,
"lastPrice": 12.33,
"lastTradeDate": "2026-09-18T13:53:26.906Z",
"askPrice": 22,
"stockPrice": 171.031311035156,
"impliedVolatility": 63.7,
"vega": 0.01456,
"gamma": 0.00405,
"theta": -0.07878,
"earningsDate": "2026-11-23T00:00:00Z",
"marketCap": 47302000000,
"industry": "Diagnostics & Research",
"sector": "Healthcare",
"peRatio": 33.0927,
"rating": "B+",
"consensus": "Buy",
"overallScore": 3,
"discountedCashFlowScore": 3,
"returnOnEquityScore": 5,
"returnOnAssetsScore": 5,
"debtToEquityScore": 1,
"priceToEarningsScore": 2,
"priceToBookScore": 2,
"rsi": 59.197136081869125,
"stockIV": 32.9,
"ivr": 59.0747,
"lowestStockIV": 16.3,
"highestStockIV": 44.4,
"lowestStockIVDate": "2026-07-29",
"highestStockIVDate": "2026-05-27",
"fiftyTwoWeekLow": 108.35,
"fiftyTwoWeekHigh": 177.05,
"fiftyDayAverage": 152.5316,
"twoHundredDayAverage": 132.8269,
"dividendYield": 0.602374,
"nextDividendDate": "2027-01-06",
"nextDividendIsEstimated": true,
"nextDividendPaymentDate": null,
"nextDividendAmount": 0.255,
"dividendFrequency": "Quarterly",
"logoUrl": "https://images.financialmodelingprep.com/symbol/A.png"
},
{
"symbol": "A",
"type": "call",
"expiration": "2026-10-16T00:00:00Z",
"strike": 150,
"yieldPercent": 9.13,
"bidPrice": 13.7,
"volume": 2,
"openInterest": 105,
"delta": 0.96902,
"annualizedReturn": 474.8468,
"lastUpdatedDate": "2026-10-09T19:32:09.733Z",
"optionKey": "A261016C00150000",
"probability": 0.0323634,
"yesterdayMark": 19.2,
"thirtyDayAverageVolume": 6,
"thirtyDayAverageIV": 0.39,
"thirtyDayAveragePremium": 1325.23,
"premiumChange1dPct": null,
"volumeZScore30d": -0.73,
"openInterestZScore30d": 0.5,
"volumeStdDev30d": 6.1,
"openInterestStdDev30d": 6.89,
"volumeHistorySamples30d": 22,
"openInterestHistorySamples30d": 22,
"contractScore": 0.3898,
"premium": 1370,
"lastPrice": 8.67,
"lastTradeDate": "2026-09-18T17:43:18.253Z",
"askPrice": 16.8,
"stockPrice": 171.031311035156,
"impliedVolatility": 52.42,
"vega": 0.01654,
"gamma": 0.0056,
"theta": -0.07497,
"earningsDate": "2026-11-23T00:00:00Z",
"marketCap": 47302000000,
"industry": "Diagnostics & Research",
"sector": "Healthcare",
"peRatio": 33.0927,
"rating": "B+",
"consensus": "Buy",
"overallScore": 3,
"discountedCashFlowScore": 3,
"returnOnEquityScore": 5,
"returnOnAssetsScore": 5,
"debtToEquityScore": 1,
"priceToEarningsScore": 2,
"priceToBookScore": 2,
"rsi": 59.197136081869125,
"stockIV": 32.9,
"ivr": 59.0747,
"lowestStockIV": 16.3,
"highestStockIV": 44.4,
"lowestStockIVDate": "2026-07-29",
"highestStockIVDate": "2026-05-27",
"fiftyTwoWeekLow": 108.35,
"fiftyTwoWeekHigh": 177.05,
"fiftyDayAverage": 152.5316,
"twoHundredDayAverage": 132.8269,
"dividendYield": 0.602374,
"nextDividendDate": "2027-01-06",
"nextDividendIsEstimated": true,
"nextDividendPaymentDate": null,
"nextDividendAmount": 0.255,
"dividendFrequency": "Quarterly",
"logoUrl": "https://images.financialmodelingprep.com/symbol/A.png"
}
]
}Error Responses
| Status | Description |
|---|---|
| 400 | Bad Request. The request body, query parameters, or path values violated validation constraints. |
| 401 | Unauthorized. Missing, malformed, or invalid API key credential. |
| 403 | Forbidden. Rejection reasons: `subscription_required`, `subscription_inactive`, `trial_ended`, `plan_upgrade_required` (with `required_plan`), `wrong_credential_type`, `origin_forbidden` (origin authentication failed). |
| 404 | Not Found. Requested resource, ticker symbol, or option contract does not exist. |
| 405 | Method Not Allowed. Returned with an `Allow` header when an unsupported HTTP method is used. Error code: `method_not_allowed`. (HEAD is served on all GET routes and counts against the rate limit like GET.) |
| 429 | Too Many Requests. Rejection reasons: `rate_limited` (per-minute limit), `too_many_concurrent_requests` (in-flight cap), `too_many_auth_failures`. |
| 500 | Internal Server Error. Unhandled internal server or database error. |
| 503 | Service Unavailable. Backing database, cache, or external provider connection unavailable. |