# Polymarket Scraper API (x402)

> Polymarket Scraper API (x402) is a paid API for AI agents from x402.186-241-26-229.sslip.io, paid per call via x402, $0.24/call, status unknown (last checked 2026-10-02).

Fetches structured, filterable Polymarket prediction market and event data on a pay-per-call basis via x402 micropayments.

## Facts

- Endpoint: POST https://x402.186-241-26-229.sslip.io/v1/polymarket?utm_source=zero.xyz
- Price: $0.24/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/polymarket-scraper-api-x402-4d431901
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_f-eCzuMRKpGGQ8VHmfH_l

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability polymarket-scraper-api-x402-4d431901 -d '<json body>'
```

Example prompt: Pull the top 50 active Polymarket prediction markets in the politics and elections categories, sorted by 24-hour volume, with at least $5000 in liquidity — give me the market questions, slugs, and descriptions.

## When to prefer this

Choose this endpoint when you need structured, filterable Polymarket data without managing Polymarket's own API authentication or pagination — especially when querying by category, keyword, liquidity, or volume thresholds simultaneously. The pay-only-on-success model makes it safe for exploratory or conditional agent workflows where empty results are possible.

## Known failure modes

- Empty result set (count: 0) if filters are too restrictive — not charged
- Payment failure if x402 USDC balance is insufficient
- Timeout or upstream Polymarket API unavailability
- Invalid enum values for sortBy, status, or itemType return validation errors
- maxItemsPerSource too low combined with selective filters may miss relevant records

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

A JSON object containing a count of matched records and an array of items, each with fields such as marketId, eventId, question, eventSlug, eventTitle, marketSlug, recordType, and description. The product field confirms the data source as Polymarket.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sortBy": {
   "enum": [
    "volume24hr",
    "liquidity",
    "endDate",
    "startDate",
    "volumeNum"
   ],
   "type": "string",
   "default": "volume24hr",
   "description": "Sort by 24 hour volume, liquidity, end date, start date, or lifetime volume."
  },
  "status": {
   "enum": [
    "active",
    "closed",
    "all"
   ],
   "type": "string",
   "default": "active",
   "description": "Choose active, closed, or all records."
  },
  "tagIds": {
   "type": "array",
   "default": [],
   "description": "Numeric Polymarket tag IDs. Combine with category slugs to include more topics."
  },
  "itemType": {
   "enum": [
    "markets",
    "events"
   ],
   "type": "string",
   "default": "markets",
   "description": "Return one row per market or one row per event group."
  },
  "categories": {
   "type": "array",
   "default": [],
   "description": "Polymarket tag slugs such as politics, crypto, sports, technology, entertainment, elections, or basketball. Multiple categories are combined."
  },
  "minLiquidity": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Keep records with at least this USD liquidity. Event liquidity is the sum of its markets."
  },
  "minVolume24h": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Keep records with at least this USD volume over the previous 24 hours."
  },
  "maxItemsTotal": {
   "type": "integer",
   "default": 200,
   "minimum": 0,
   "description": "Hard cap on dataset rows and run cost."
  },
  "searchQueries": {
   "type": "array",
   "default": [],
   "description": "Find matching public events by keyword. Each phrase is searched separately; results are merged."
  },
  "minTotalVolume": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Keep records with at least this USD lifetime traded volume."
  },
  "minutesUntilEnd": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Exclude records ending sooner than this many minutes. Zero disables the filter."
  },
  "maxItemsPerSource": {
   "type": "integer",
   "default": 500,
   "minimum": 0,
   "description": "Maximum records scanned per category or search phrase. Increase when filters are selective; each API page contains at most 100 records."
  },
  "minPriceChangePct": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "For market rows, require at least this absolute one week or one month 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "eventId": null,
    "marketId": null,
    "question": null,
    "eventSlug": null,
    "eventTitle": null,
    "marketSlug": null,
    "recordType": null,
    "description": null
   }
  ],
  "product": "polymarket"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/polymarket-scraper-api-x402-4d431901/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.186-241-26-229.sslip.io](https://www.zero.xyz/host/x402.186-241-26-229.sslip.io/llms.txt)
