GET /v1/search/listings
Search published listings
Full text over title and description, with filters and sorting. Only published listings with something available are returned. Callable with a publishable key.
secret key, or a publishable key from a browser
curl https://api.marketsdk.com/v1/search/listings \
-H "Authorization: Bearer $MARKETSDK_KEY"200 example response, listing list
{
"object": "list",
"data": [
{
"object": "listing",
"id": "lst_034XtPDs7UJ0TXzTsdaHZa",
"seller": "string",
"category": null,
"title": "string",
"description": null,
"price": {
"amount": 4900,
"currency": "USD"
},
"quantity": 0,
"quantity_available": 0,
"status": "draft",
"attributes": {},
"media": [
{
"object": null,
"id": null,
"listing": null,
"status": null,
"content_type": null,
"size_bytes": null,
"position": null,
"url": null,
"url_expires_at": null,
"created_at": null
}
],
"metadata": {},
"published_at": null,
"expires_at": null,
"removed_reason": null,
"created_at": "2026-10-01T12:00:00.000Z",
"updated_at": "2026-10-01T12:00:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}parameters
| field | type | about |
|---|---|---|
| q | string, in query | Full text over title and description. |
| category | string, in query | |
| seller | string, in query | |
| min_price | integer, in query | Minor units. |
| max_price | integer, in query | Minor units. |
| attributes | object of strings, in query | Attribute filters, as attributes[key]=value for equality, or attributes[key][gte]=n and attributes[key][lte]=n for numbers. Numeric filters need a category. |
| sort | one of: relevance, newest, price_asc, price_desc, in query | Relevance needs q. Default newest. |
| limit | integer, in query | min 1, max 100, default 20 |
| cursor | string, in query | The next_cursor of the previous page. |
returns 200, listing list
fields
| field | type | about |
|---|---|---|
| objectrequired | one of: list | |
| datarequired | array of listing | |
| data[].objectrequired | one of: listing | |
| data[].idrequired | string | |
| data[].sellerrequired | string | |
| data[].categoryrequired | string or null | |
| data[].titlerequired | string | |
| data[].descriptionrequired | string or null | |
| data[].pricerequired | money | |
| data[].price.amountrequired | integer | Integer minor units. |
| data[].price.currencyrequired | string | |
| data[].quantityrequired | integer | |
| data[].quantity_availablerequired | integer | Not reserved by an open order. |
| data[].statusrequired | one of: draft, published, sold, expired, removed | |
| data[].attributesrequired | object of strings | |
| data[].mediarequired | array of media | |
| data[].media[].objectrequired | one of: media | |
| data[].media[].idrequired | string | |
| data[].media[].listingrequired | string | |
| data[].media[].statusrequired | one of: pending, ready | |
| data[].media[].content_typerequired | string | |
| data[].media[].size_bytesrequired | integer | |
| data[].media[].positionrequired | integer | |
| data[].media[].urlrequired | string or null | A signed link to the file, valid for an hour. Null until the upload completes. |
| data[].media[].url_expires_atrequired | timestamp or null | |
| data[].media[].created_atrequired | timestamp | |
| data[].metadatarequired | object of strings | |
| data[].published_atrequired | timestamp or null | |
| data[].expires_atrequired | timestamp or null | |
| data[].removed_reasonrequired | string or null | |
| data[].created_atrequired | timestamp | |
| data[].updated_atrequired | timestamp | |
| has_morerequired | boolean | Whether another page follows. |
| next_cursorrequired | string or null | Pass as starting_after (or cursor for search) to get the next page. |
errors
- 400The request is not valid.
- 401No API key, or not a valid one.
- 429Rate limited. See
Retry-After.