Plan Search
GET
/v1/health/plans Search for ACA health plans by ZIP code, age, and optional filters. Returns a paginated HAL collection with premiums calculated for the requested age.
Required Parameters
Section titled “Required Parameters”| Parameter | Type | Description |
|---|---|---|
zip | string | 5-digit US ZIP code |
age | integer | Enrollee age (14-65) |
Optional Parameters
Section titled “Optional Parameters”| Parameter | Type | Tier | Description |
|---|---|---|---|
metal_level | string | Free | Filter: catastrophic, bronze, silver, gold, platinum |
plan_type | string | Free | Filter: hmo, ppo, epo, pos |
year | integer | Free | Plan year (default: 2026) |
page_size | integer | Free | Results per page (1-100, default: 20) |
cursor | string | Free | Cursor for next page |
issuer | string | Pro | Filter by issuer name (partial match) |
hsa_eligible | boolean | Pro | Filter HSA-eligible plans only |
max_premium | number | Pro | Maximum monthly premium |
max_deductible | number | Pro | Maximum annual deductible |
sort | string | Pro | Sort field (default: premium) |
order | string | Pro | Sort order: asc or desc |
income | number | Pro | Household income for APTC |
household_size | integer | Pro | Household size for APTC |
Basic Search
Section titled “Basic Search”curl -H "Authorization: Bearer op_YOUR_API_KEY_HERE" \ "https://api.opelyx.com/v1/health/plans?zip=90210&age=30&metal_level=silver"import requests
response = requests.get( "https://api.opelyx.com/v1/health/plans", headers={"Authorization": "Bearer op_YOUR_API_KEY_HERE"}, params={"zip": "90210", "age": 30, "metal_level": "silver"},)plans = response.json()["_embedded"]["plans"]for plan in plans: print(f"{plan['plan_name']}: ${plan['premium']}/mo")const params = new URLSearchParams({ zip: "90210", age: "30", metal_level: "silver",});const response = await fetch( `https://api.opelyx.com/v1/health/plans?${params}`, { headers: { Authorization: "Bearer op_YOUR_API_KEY_HERE" } },);const { _embedded } = await response.json();for (const plan of _embedded.plans) { console.log(`${plan.plan_name}: $${plan.premium}/mo`);}Pagination
Section titled “Pagination”Results are paginated using cursor-based pagination. The _links.next field contains the URL for the next page:
{ "_links": { "self": { "href": "https://api.opelyx.com/v1/health/plans?zip=90210&age=30" }, "next": { "href": "https://api.opelyx.com/v1/health/plans?zip=90210&age=30&cursor=eyJpZCI6MTAwfQ" } }}See the Pagination guide for details on cursor-based traversal.