# Polymarket Structured Data Scraper

> Polymarket Structured Data Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.24/call, status unknown (last checked 2026-10-02).

Fetches filtered, sorted structured data from Polymarket prediction markets and events, including prices, volumes, liquidity, and market metadata.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/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-structured-data-scraper-336cc968
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_VTL74jYq_TJtkOjLhJ5Hp

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-structured-data-scraper-336cc968 -d '<json body>'
```

Example prompt: Pull the top 50 active Polymarket prediction markets in the politics and crypto categories, sorted by 24-hour volume, with at least $5000 in liquidity — give me the market question, slug, and current volume for each.

## When to prefer this

Use this endpoint when you need structured, filterable Polymarket data without building your own scraper or maintaining a Polymarket API integration. It is ideal for agents that need to query prediction market data by topic, liquidity threshold, or volume, especially with pay-per-successful-call pricing that avoids charges on empty runs.

## Known failure modes

- Empty result set if filters are too restrictive (not charged)
- Truncated results if maxItemsTotal is hit before all matching records are scanned
- Stale data if Polymarket API is delayed or rate-limited upstream
- Category slug or tag ID not recognized, returning zero results
- Search query returns no matching public events

## How this service works

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

## Output

A JSON object with a count field and an items array, each item containing marketId, eventId, question, eventSlug, eventTitle, marketSlug, recordType, description, and associated financial metrics like volume and liquidity for the matched Polymarket markets or events.

## 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-structured-data-scraper-336cc968/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
