Agent402 / tools / polymarket-search

Polymarket search

$0.002 per call · USDC via x402 · POST /api/polymarket-search

Search active Polymarket markets by keyword. Candidates come from Polymarket's own keyword index and from the highest-volume active list, and an exact substring match on the market's question, slug and description decides - so a term that matches nothing returns nothing rather than a loose neighbour. Returns question, current outcome prices (implied probabilities), volume, liquidity, end date, and CLOB token ids for orderbook lookups, plus scannedMarkets and searchExhausted so a zero can be read as "not listed" rather than "not reached".

TRY IN PLAYGROUND →

Input

FieldTypeDescription
query *stringKeyword to search market questions, slugs, and descriptions.
limitnumberMax markets to return (1-50, default 10).
activeOnlybooleanFilter to active+open markets only (default true).

Example output

{
  "query": "election",
  "count": 1,
  "markets": [
    {
      "id": "12345",
      "slug": "will-x-win-election",
      "question": "Will X win the election?",
      "endDate": "2026-11-03T23:59:00Z",
      "active": true,
      "closed": false,
      "volume": 1234567.89,
      "outcomes": [
        "Yes",
        "No"
      ],
      "prices": [
        0.62,
        0.38
      ],
      "clobTokenIds": [
        "7290..."
      ],
      "venue": "polymarket",
      "venueUrl": "https://polymarket.com/market/will-x-win-election"
    }
  ],
  "scannedMarkets": 57,
  "searchExhausted": false,
  "searchedKeywordIndex": true,
  "source": "polymarket-gamma"
}

Try it - see the 402 challenge (free)

curl -i -X POST https://agent402.tools/api/polymarket-search \
  -H "Content-Type: application/json" \
  -d '{"query":"election","limit":5}'

The response is HTTP 402 Payment Required with exact payment requirements. Any x402 v2 client pays automatically and retries:

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
import { metaTitle, metaDescription } from "./seo-meta.js";

const client = new x402Client();
client.setSpendControls?.(false); // @x402/core 2.23+ refuses anything over $1 or off the pegged-asset list by default; keep your own ceiling in code instead
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/polymarket-search", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "query": "election",
    "limit": 5
  }),
});
Wallet-only. This tool reaches the network/browser/storage, so it is paid in USDC via x402 (no proof-of-work tier).

Related tools

Crypto order book

$0.001 · GET /api/crypto-orderbook

L2 order-book snapshot for a spot pair: best bid/ask, mid price, spread (absolute + %), and the top N aggregated price l…

try in playground →

Stablecoin peg monitor

$0.003 · GET /api/stablecoin-peg

Live $1-peg deviation for the top USD stablecoins (USDT, USDC, USDS, DAI, USDe, PYUSD, USDD, TUSD, FDUSD by default, or …

try in playground →

Wallet balance (native + ERC-20)

$0.002 · POST /api/wallet-balance

Look up the native coin balance (ETH/MATIC) plus every ERC-20 holding for a wallet address on Ethereum, Base, Polygon, A…

try in playground →