List questions on your listings
GET/v1/questions
scope questions.read
Public questions — these render on the product page for every future buyer, so an unanswered one is visible to everyone. unanswered_count is carried on every response so you can badge it without a second call.
Query parameters#
| Name | Example | |
|---|---|---|
limit | 50 | Max 100 |
cursor | — | next_cursor |
unanswered_only | true | Only questions still waiting |
product_id | 237233 | Only questions on one listing |
updated_since | 2026-09-01T00:00:00Z | Incremental sync |
Response#
| Field | Type | Description |
|---|---|---|
count | integer | How many questions in this page. |
next_cursor | string|null | Pass back as ?cursor=; null on the last page. |
unanswered_count | integer | How many of YOUR questions have no answer at all — across every page, not just this one. Poll this cheaply to know whether there is anything to do. |
data | array | Public questions on your listings. Unlike a conversation, everyone browsing the listing reads these. |
data[]. | integer | The question id, for POST /v1/questions/{id}/answer. |
data[]. | string | What was asked, publicly, on your listing. |
data[]. | object | The listing it was asked about. |
data[]. | integer | Our product id. |
data[]. | string | Its title. |
data[]. | string | Its URL segment. |
data[]. | object|null | Who asked. |
data[]. | integer | Their user id. |
data[]. | string | Their display name. |
data[]. | boolean | Whether any answer exists. This is what to filter an unanswered queue on. |
data[]. | string|null | ISO-8601 UTC of the first answer, or null. |
data[]. | object | How buyers reacted. A question with several same_question votes is one worth answering well — everyone reading the listing sees it. |
data[]. | integer | Votes saying the answer helped. |
data[]. | integer | Votes saying it did not. |
data[]. | integer | Buyers saying they wanted to know the same thing. |
data[]. | array | Every answer, yours and anyone else's. |
data[]. | integer | The answer id. |
data[]. | string | The answer text. |
data[]. | boolean | true is you. Other buyers can answer too, and theirs carry the same weight on the page — which is a reason to answer first. |
data[]. | string|null | Who wrote it. |
data[]. | string | ISO-8601 UTC. |
data[]. | string | ISO-8601 UTC. |
data[]. | string | ISO-8601 UTC, when it was asked. |
data[]. | string | ISO-8601 UTC. |
Example
{
"count": 2,
"next_cursor": null,
"unanswered_count": 1,
"data": [
{
"id": 31,
"text": "What frame size is this?",
"product": {
"id": 237233,
"title": "Trek Marlin 7",
"slug": "trek-marlin-7"
},
"asked_by": {
"id": 9000002,
"name": "Jane Doe"
},
"is_answered": false,
"answered_at": null,
"votes": {
"helpful": 0,
"not_helpful": 0,
"same_question": 0
},
"answers": [],
"created_at": "2026-09-10T06:21:50Z",
"updated_at": "2026-09-10T06:21:50Z"
},
{
"id": 30,
"text": "Does it come with pedals?",
"product": {
"id": 237233,
"title": "Trek Marlin 7",
"slug": "trek-marlin-7"
},
"asked_by": {
"id": 9000003,
"name": "Maria I."
},
"is_answered": true,
"answered_at": "2026-09-09T11:04:12Z",
"votes": {
"helpful": 2,
"not_helpful": 0,
"same_question": 1
},
"answers": [
{
"id": 14,
"text": "Yes, flat pedals are included.",
"is_from_seller": true,
"author_name": "Bike Shop SRL",
"created_at": "2026-09-09T11:04:12Z",
"updated_at": "2026-09-09T11:04:12Z"
}
],
"created_at": "2026-09-09T10:58:03Z",
"updated_at": "2026-09-09T11:04:12Z"
}
]
}