Polymarket Comments API
Comments and replies on an event, with author profiles, reactions and media.
GET /v1/polymarket/events/{eventId}/comments1 credit Failed requests are free
About this endpoint
GET /v1/polymarket/events/{eventId}/comments takes a numeric event id, not a slug. data.comments holds top-level comments in the requested order, each followed by its replies. Every row has id, body, createdAt, updatedAt, parentCommentId (null at the top level), author (with wallet, name, pseudonym and image), reactionCount, reportCount and a media array.
sort is newest (default) or oldest. holdersOnly=true keeps comments by people who hold a position. limit counts top-level comments per page (1 to 100, default 40); replies come with their parent and do not count. An event with no comments returns a found answer with an empty list; an event id that does not exist returns not_found.
Polymarket Comments API FAQ
Why do I need a numeric event id?
The comments route is keyed by event id, not slug. Take data.events[].id from the events list or data.eventId from a market row. A slug in this path fails validation.
How do replies appear?
Replies are separate rows with a non-null parentCommentId, placed after their parent in the list. Build the tree by grouping rows on parentCommentId. Paging stays stable while new comments arrive because the cursor is tied to the operation.
What does an empty list mean for an event with no comments?
The event exists and has no comments yet: lookupStatus is found and data.comments is empty. An event id that does not exist returns not_found, the same as the other id routes. Use lookupStatus to tell the two apart.
Can I sort by likes?
No. Newest and oldest are the supported orders. A likes order exists only on a route that stops after 250 rows, so it is not offered here.
What does lookupStatus mean on this route?
found means the object or list was returned. not_found means no matching object exists. HTTP 200 only means the request finished, so branch on data.lookupStatus before storing a row.
How much does this route cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
Other Polymarket endpoints
- EventsGET /v1/polymarket/events
- EventGET /v1/polymarket/events/{eventIdOrSlug}
- Event insightsGET /v1/polymarket/events/{eventIdOrSlug}/insights
- Event annotationsGET /v1/polymarket/events/{eventIdOrSlug}/annotations
- MarketsGET /v1/polymarket/markets
- Markets batchGET /v1/polymarket/markets/batch
- MarketGET /v1/polymarket/markets/{marketIdSlugOrConditionId}
- Market resolutionGET /v1/polymarket/markets/{conditionId}/resolution