List Products
Returns a paginated list of products. Omit account_id to search the public marketplace.
Query parameters
The unique identifier of the account to list products for. Omit to search the public marketplace.
Ranked search against product title and headline. Omit to browse by recency.
Only return marketplace products assigned to this category route, such as trading.
Filter to products with a buyable plan of these billing models, such as one_time or renewal.
Only return products whose advertised buyable plan has a displayed price of at least this amount. Recurring plans use renewal price.
Only return products whose advertised buyable plan has a displayed price of at most this amount. Recurring plans use renewal price.
Filter to only products matching these visibility states. Ignored on the public marketplace list, which only returns visible products.
[ "visible" ]
Filter to only products matching these types.
[ "regular" ]
Filter to only products carrying all of these labels. Labels are matched lowercased.
The sort direction for results. Defaults to descending.
The field to sort results by. Account lists default to created_at. Marketplace lists default to discoverable_at and accept created_at or discoverable_at. Cannot be combined with query.
Number of results to return from the start of the range.
Return results after this cursor. Use page_info.end_cursor from the previous response to fetch the next page.
Number of results to return from the end of the range.
Return results before this cursor. Use page_info.start_cursor from the previous response to fetch the previous page.
Only return products created after this ISO 8601 timestamp.
Only return products created before this ISO 8601 timestamp.
Response
marketplace products listed without an account
Example response
{
"data": [
{
"account": {
"id": "biz_xxxxxxxxxxxxxx",
"route": "biz_xxxxxxxxxxxxxx",
"title": "Shine Time Auto Detailing"
},
"created_at": "2026-01-01T12:00:00.000Z",
"default_plan": {
"billing_period": 30,
"id": "plan_xxxxxxxxxxxxxx",
"initial_price": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"plan_type": "renewal",
"renewal_price": {
"amount": "-2.50",
"currency": "usd",
"decimals": 2,
"display_decimals": 2
},
"unlimited_stock": true,
"visibility": "visible"
},
"description": "empower rich infrastructures",
"external_identifier": "SHINE-CERAMIC-01",
"gallery_images": [
{
"content_type": "image/png",
"id": "file_xxxxxxxxxxxxxx",
"url": "https://whop-assets-example.s3.amazonaws.com/uploads/image/2026-01-01/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
],
"headline": "thought leadership",
"id": "prod_xxxxxxxxxxxxxx",
"labels": [
"courses"
],
"metadata": {},
"route": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"title": "Wash Club Tee",
"updated_at": "2026-01-01T12:00:00.000Z",
"variant_attributes": {
"color": [
"Blue",
"Red"
],
"size": [
"L",
"S"
]
},
"visibility": "visible"
}
],
"page_info": {
"start_cursor": "WyJjdXJzb3IiLDFd"
}
}Changes
Changed in 8 of the 74 revisions of this API.7324
- ○
added the required property
//to the response with the statusresponse-required-property-added
This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ▲
for the
queryrequest parameterfirst, default value20was addedrequest-parameter-default-value-added
- ●
for the
queryrequest parameterfirst, the max was set to100.00request-parameter-max-set
- ●
for the
queryrequest parameterlast, the max was set to100.00request-parameter-max-set
- ▲
- ○
added the required property
//to the response with the statusresponse-required-property-added
This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ○
added the new optional
queryrequest parametercreated_afternew-optional-request-parameter
- ○
added the new optional
queryrequest parametercreated_beforenew-optional-request-parameter
- ○
added the new optional
queryrequest parametermarketplace_category_routenew-optional-request-parameter
- ○
added the new optional
queryrequest parameterplan_typesnew-optional-request-parameter
- ○
added the new optional
queryrequest parameterprice_maximumnew-optional-request-parameter
- ○
added the new optional
queryrequest parameterprice_minimumnew-optional-request-parameter
- ○
added the new optional
queryrequest parameterquerynew-optional-request-parameter
- ○
the
queryrequest parameteraccount_idbecame optionalrequest-parameter-became-optional
- ○
added the required property
//to the response with the statusresponse-required-property-added
- ○
added the required property
//to the response with the statusresponse-required-property-added
- ○
added the required property
//to the response with the statusresponse-required-property-added
- ○
- ○
added the new optional
queryrequest parameterlabelsnew-optional-request-parameter
- ○
added the required property
//to the response with the statusresponse-required-property-added
This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
This revision also has 9 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ○
the security scope
access_pass:basic:readwas added to the endpoint's security schemebearerAuthapi-security-scope-added
- ○
the security scope
product:basic:readwas removed from the endpoint's security schemebearerAuthapi-security-scope-removed
This revision also has 16 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ▲
added the new required
queryrequest parameteraccount_idnew-required-request-parameter
- ▲
the response property
//became nullable for the statusresponse-property-became-nullable
- ▲
the
//response's property format changed fromdate-timeto no format for statusresponse-property-type-changed
- ▲
the
//response's property type changed fromintegertonumberfor statusresponse-property-type-changed
- ▲
the
//response's property type changed fromintegertonumberfor statusresponse-property-type-changed
- ▲
the
//response's property format changed fromdate-timeto no format for statusresponse-property-type-changed
- ●
deleted the
queryrequest parametercompany_idrequest-parameter-removed
- ○
removed the
archivedenum value from the//response property for the response statusresponse-property-enum-value-removed
- ○
removed the
hiddenenum value from the//response property for the response statusresponse-property-enum-value-removed
- ○
removed the
quick_linkenum value from the//response property for the response statusresponse-property-enum-value-removed
- ○
removed the
visibleenum value from the//response property for the response statusresponse-property-enum-value-removed
- ○
added the required property
//to the response with the statusresponse-required-property-added
This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ▲
Of the 74 revisions, 1 has no diff computed.