ToolAssay

Live Kalshi and Polymarket prediction-market odds by keyword, category or city,

Live Kalshi and Polymarket prediction-market odds by keyword, category or city, one schema for both venues, with the price spread when the same question trades on both. Snapshot refreshed hourly from the exchanges' public APIs.

Answeringour last check, 2026-10-18
1 of 1checks answered this week
479 msmedian answer time
$0.06listed price per call
$0.06price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://api.scrapebench.dev/v1/prediction-markets

CategoryMarket data
Provider hostapi.scrapebench.dev
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-18 valid payment request 402$0.06 479 ms

Example input (from the provider)

{
  "body": {
    "query": "fed",
    "venue": "both"
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "properties": {
            "categories": {
              "description": "Kalshi categories, e.g. 'Economics', 'Climate and Weather'. Polymarket publishes none, so setting this returns Kalshi markets only.",
              "items": {
                "maxLength": 100,
                "type": "string"
              },
              "maxItems": 20,
              "title": "Categories",
              "type": "array"
            },
            "min_volume": {
              "default": 0,
              "description": "Drop markets that traded less than this (contracts on Kalshi, USD on Polymarket).",
              "minimum": 0,
              "title": "Min Volume",
              "type": "number"
            },
            "queries": {
              "description": "More keywords; a market matching any of them (or query) is returned.",
              "items": {
                "maxLength": 100,
                "type": "string"
              },
              "maxItems": 20,
              "title": "Queries",
              "type": "array"
            },
            "query": {
              "anyOf": [
                {
                  "maxLength": 100,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Case-insensitive substring over question, subtitle, series, ticker, event and weather city, e.g. 'fed', 'bitcoin', 'new york'.",
              "title": "Query"
            },
            "series": {
              "description": "Kalshi series tickers, e.g. 'KXHIGHNY' (NYC daily high) or 'KXFEDDECISION'.",
              "items": {
                "maxLength": 100,
                "type": "string"
              },
              "maxItems": 20,
              "title": "Series",
              "type": "array"
            },
            "sort": {
              "default": "volume",
              "description": "volume: most traded first (default); close_time: soonest to close first.",
              "enum": [
                "volume",
                "close_time"
              ],
              "title": "Sort",
              "type": "string"
            },
            "venue": {
              "default": "both",
              "description": "Which exchange to search: both (default), kalshi or polymarket.",
              "enum": [
                "both",
                "kalshi",
                "polymarket"
              ],
              "title": "Venue",
              "type": "string"
            }
          },
          "title": "Input",
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "next_page": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Page to request next, or null when this is the last.",
              "title": "Next Page"
            },
            "page": {
              "description": "Zero-based page number of this response.",
              "title": "Page",
              "type": "integer"
            },
            "page_size": {
              "description": "Most rows a page can hold; one page is one price.",
              "title": "Page Size",
              "type": "integer"
            },
            "rows": {
              "description": "Data rows, or free Notice rows explaining a gap.",
              "items": {
                "anyOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "category": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "Kalshi category; null on Polymarket, which publishes none.",
                        "title": "Category"
                      },
                      "city": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "Weather markets: the city in the settlement rules, else null.",
                        "title": "City"
                      },
                      "close_time": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "default": null,
                        "description": "When trading closes (ISO 8601, UTC).",
                        "title": "Close Time"
                      },
                      "counterpart_market_id": {
                        "anyOf": 

This page as JSON