Polymarket search
POST /api/polymarket-searchSearch 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".
Input
| Field | Type | Description |
|---|---|---|
query * | string | Keyword to search market questions, slugs, and descriptions. |
limit | number | Max markets to return (1-50, default 10). |
activeOnly | boolean | Filter 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
}),
});
Related tools
Crypto order book
GET /api/crypto-orderbookL2 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
GET /api/stablecoin-pegLive $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)
POST /api/wallet-balanceLook up the native coin balance (ETH/MATIC) plus every ERC-20 holding for a wallet address on Ethereum, Base, Polygon, A…
try in playground →