Polymarket API endpoint
Returns public trade rows for one Polymarket market condition id. The `taker_only` enum accepts `true` and `false`; the `filter_type` enum accepts `CASH`; the `filter_amount` enum accepts `1`, `5`, `10`, `100`, `1000`, `10000`, and `100000`. This endpoint does not require a Polymarket user token, wallet signature, cookies, or personal account authentication.
/polymarket/market/condition/{condition_id}/activityPath parameters:
condition_id: required Polymarket market condition id.Query parameters:
limit: optional maximum trades to return. Defaults to 50; maximum 100.offset: optional result offset. Defaults to 0; maximum 10000.taker_only: optional compatibility parameter from the global activity contract. Allowed values: true, false. Defaults to true; scoped upstream requests are filtered by condition id.filter_type: optional amount filter type. Allowed values: CASH. Defaults to CASH.filter_amount: optional minimum filtered amount. Allowed values: 1, 5, 10, 100, 1000, 10000, 100000. Defaults to 1.Notable response behavior:
event_id and market query parameters because the route scope comes from the condition id path.trades array.| Field | Filled in, of 2 checked | Values in the sample |
|---|---|---|
| proxy_wallet | 2 | “0x923539425dcff18b296d7ca283872daad5c53fbd” |
| side | 2 | “SELL” and 1 other value |
| asset | 2 | “12024359104838885384433705711860531648920831353111244136243…” |
| condition_id | 2 | |
| size | 2 | 60 to 150, median 60 |
| price | 2 | 0.5 to 0.98, median 0.5 |
| value | 2 | 58.9 to 75, median 58.9 |
| timestamp | 2 | 2026-06-07 |
| title | 2 | “Call of Duty: Paris Gentle Mates vs OpTic Texas - Game 4 Wi…” |
| slug | 2 | |
| url | 2 | polymarket.com |
| icon_url | 2 | polymarket-upload.s3.us-east-2.amazonaws.com |
| event_slug | 2 | |
| outcome | 2 | “OpTic Texas” |
| outcome_index | 2 | |
| name | 2 | “firstrun” |
| pseudonym | 2 | “Nervous-Fate” |
| transaction_hash | 2 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| condition_id (path) | string | Yes | Polymarket market condition id | 0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327 | |
| limit | integer | No | 50 and supports up to 100 | Maximum trades, defaults to 50 and supports up to 100 | 50 |
| offset | integer | No | 0 and supports up to 10000 | Result offset, defaults to 0 and supports up to 10000 | 0 |
| taker_only | string | No | Accepted for compatibility with the global activity contract; scoped upstream requests are filtered by condition id Allowed values: true, false. | ||
| filter_type | string | No | Activity amount filter type Allowed values: CASH. | ||
| filter_amount | string | No | Minimum filtered amount Allowed values: 1, 5, 10, 100, 1000, 10000, 100000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/polymarket/market/condition/0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327/activity?limit=10&taker_only=true&filter_type=CASH&filter_amount=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"market": "0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327",
"limit": 2,
"offset": 0,
"filter_type": "CASH",
"filter_amount": "1",
"source_url": "https://data-api.polymarket.com/trades?filterAmount=1&filterType=CASH&limit=2&market=0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327&offset=0",
"trades": []
}
}Request schema
No body schema
Response schema
#/definitions/polymarket.activityTradesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | polymarket.ActivityTradesResponse | No | ||||
| data.event_id | string | No | 101772 | Polymarket event id the trades were limited to. | ||
| data.fetched_at | string | No | 2026-06-07T11:00:00Z | Time the data was fetched, in UTC (RFC 3339). | ||
| data.filter_amount | string | No | 1 | Minimum trade amount the filter applied. | ||
| data.filter_type | string | No | CASH | Type of amount filter applied, for example `CASH`. | ||
| data.limit | integer | No | 50 | Maximum number of trades requested. | ||
| data.market | string | No | 0x3f2604d62ac3ee496ffd6d30156f30663fbaf22097f17f09d7364c35db255d2b | Market condition id the trades were limited to. | ||
| data.offset | integer | No | 0 | Number of trades skipped before this page. | ||
| data.source_url | string | No | https://data-api.polymarket.com/trades?takerOnly=true&limit=50&offset=0&filterType=CASH&filterAmount=1 | URL the data was read from. | ||
| data.taker_only | string | No | true | `true` when only taker trades are returned, `false` otherwise. | ||
| data.trades | array | No | Recent trades on this page, one item per trade. TradeSummary record, 21 fields: asset, bio, condition_id, event_slug, icon_url, name, outcome, outcome_index, price, profile_image_optimized, profile_image_url, proxy_wallet and 9 more. Described under Polymarket activity trades API. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/polymarket/market/condition/0x1a987cd4e88488fd12905fa9ae82cef381e03f4af68289275c4c0c2613db9327/activity?limit=10&taker_only=true&filter_type=CASH&filter_amount=1" \
-H "x-api-key: $CRAWLORA_API_KEY"