Search health plans by ZIP code and age
GET /v1/health/plans
Returns a paginated HAL collection of health plans matching the given ZIP code, age, and optional filters. Plans are returned in _embedded.plans with _links.self on each item. Supports both cursor-based (keyset) and offset-based pagination. Advanced filters (issuer, hsa_eligible, max_premium, max_deductible, non-default sort) and APTC parameters (income, household_size) require a Pro or Enterprise subscription.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”5-digit ZIP code
Example
10001Applicant age (0-14 are child rates, 64+ use age 64 rate)
Example
35Plan year. Defaults to 2026. Available: 2026
5-digit county FIPS code to disambiguate ZIPs spanning multiple rating areas
Example
36061Filter by metal tier
Filter by network type
Case-insensitive partial match on issuer name
Example
UnitedFilter HSA-eligible plans only
Maximum monthly premium in dollars
Maximum individual deductible in dollars
Field to sort results by
Sort direction
Opaque cursor for keyset pagination (from next_cursor in previous response)
Page number for offset-based pagination. Returns 400 if >1 when cursor is also provided.
Results per page
Responses
Section titled “ Responses ”Paginated HAL collection of health plans
HAL collection of health plans with pagination metadata
object
object
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
object
Abbreviated plan data returned in search and compare collections
object
HAL links for this plan item
object
A HAL link object (draft-kelly-json-hal-11 §5)
object
Target URI or URI Template
True when href is an RFC 6570 URI Template
Media type hint for the target resource
Human-readable link title
Plan variant ID
Marketing name
Insurance company name
Two-letter state code
Monthly premium for the given age
Premium after estimated APTC (null until subsidy calculation is available)
Cost amount for individual and family tiers
object
Individual cost in dollars
Family cost in dollars
Cost amount for individual and family tiers
object
Individual cost in dollars
Family cost in dollars
External resource URLs (SBC, formulary, etc.)
object
Total matching plans. Null on cursor-paginated pages (client has total from page 1).
Current page (null when using cursor)
Opaque cursor for the next page
True when ZIP spans multiple rating areas
Headers
Section titled “Headers ”Unique request identifier for tracing
RFC 8288 Web Linking (pagination and resource discovery)
Weak ETag for conditional request support (If-None-Match)
Validation error
RFC 9457 Problem Details for HTTP APIs (application/problem+json)
object
URI identifying the problem type. about:blank for standard HTTP status semantics.
Short human-readable summary of the problem type
HTTP status code
Human-readable explanation specific to this occurrence
URI reference identifying the specific occurrence (request path)
Validation errors (extension member, present on 400 responses)
object
Dot-delimited path to the invalid field
Validation error message
Minimum subscription tier required (extension member, present on 402 responses)
URL to upgrade subscription (extension member, present on 402/429 responses)
Example
{ "type": "https://api.opelyx.com/problems/not-found", "title": "Not Found", "status": 404, "detail": "Plan 99999XX0000000-00 not found.", "instance": "/v1/health/plans/99999XX0000000-00"}Missing or invalid API key
RFC 9457 Problem Details for HTTP APIs (application/problem+json)
object
URI identifying the problem type. about:blank for standard HTTP status semantics.
Short human-readable summary of the problem type
HTTP status code
Human-readable explanation specific to this occurrence
URI reference identifying the specific occurrence (request path)
Validation errors (extension member, present on 400 responses)
object
Dot-delimited path to the invalid field
Validation error message
Minimum subscription tier required (extension member, present on 402 responses)
URL to upgrade subscription (extension member, present on 402/429 responses)
Example
{ "type": "https://api.opelyx.com/problems/not-found", "title": "Not Found", "status": 404, "detail": "Plan 99999XX0000000-00 not found.", "instance": "/v1/health/plans/99999XX0000000-00"}Headers
Section titled “Headers ”Bearer authentication challenge
Feature requires a higher-tier subscription
RFC 9457 Problem Details for HTTP APIs (application/problem+json)
object
URI identifying the problem type. about:blank for standard HTTP status semantics.
Short human-readable summary of the problem type
HTTP status code
Human-readable explanation specific to this occurrence
URI reference identifying the specific occurrence (request path)
Validation errors (extension member, present on 400 responses)
object
Dot-delimited path to the invalid field
Validation error message
Minimum subscription tier required (extension member, present on 402 responses)
URL to upgrade subscription (extension member, present on 402/429 responses)
Example
{ "type": "https://api.opelyx.com/problems/not-found", "title": "Not Found", "status": 404, "detail": "Plan 99999XX0000000-00 not found.", "instance": "/v1/health/plans/99999XX0000000-00"}Resource not found
RFC 9457 Problem Details for HTTP APIs (application/problem+json)
object
URI identifying the problem type. about:blank for standard HTTP status semantics.
Short human-readable summary of the problem type
HTTP status code
Human-readable explanation specific to this occurrence
URI reference identifying the specific occurrence (request path)
Validation errors (extension member, present on 400 responses)
object
Dot-delimited path to the invalid field
Validation error message
Minimum subscription tier required (extension member, present on 402 responses)
URL to upgrade subscription (extension member, present on 402/429 responses)
Example
{ "type": "https://api.opelyx.com/problems/not-found", "title": "Not Found", "status": 404, "detail": "Plan 99999XX0000000-00 not found.", "instance": "/v1/health/plans/99999XX0000000-00"}Rate limit exceeded
RFC 9457 Problem Details for HTTP APIs (application/problem+json)
object
URI identifying the problem type. about:blank for standard HTTP status semantics.
Short human-readable summary of the problem type
HTTP status code
Human-readable explanation specific to this occurrence
URI reference identifying the specific occurrence (request path)
Validation errors (extension member, present on 400 responses)
object
Dot-delimited path to the invalid field
Validation error message
Minimum subscription tier required (extension member, present on 402 responses)
URL to upgrade subscription (extension member, present on 402/429 responses)
Example
{ "type": "https://api.opelyx.com/problems/not-found", "title": "Not Found", "status": 404, "detail": "Plan 99999XX0000000-00 not found.", "instance": "/v1/health/plans/99999XX0000000-00"}Headers
Section titled “Headers ”Seconds until the rate limit resets
Maximum requests per day for this tier
Remaining requests today
Unix timestamp when the limit resets (midnight UTC)