PO
Security · x402 · early usage

Ranked Polymarket market-flow screener with factual concentration and liquidity-compati…

Ranked Polymarket market-flow screener with factual concentration and liquidity-compatibility fields for the observed window. BEFORE YOU PAY: free substitute https://dash.polym.uk/markets.json. THIS ADDS: Little today, and we would rather you knew: the free s…

by api.polym.uk · discovered, not yet claimed by its owner · updated 2026-10-07

30d calls4
30d payers1
MethodGET
Outputjson

Mirrored from Coinbase's public x402 Bazaar. The description is the provider's own text and has not been reviewed here; the payment requirements are copied as published.

What it does

Ranked Polymarket market-flow screener with factual concentration and liquidity-compatibility fields for the observed window. BEFORE YOU PAY: free substitute https://dash.polym.uk/markets.json. THIS ADDS: Little today, and we would rather you knew: the free snapshot has every field this route returns, for the whole decomposed set instead of the 40 rows this caps at, and it also carries the dominant-flow wallet that this route omits. Buy only if a small fixed-shape response beats completeness.

Tags: polymarket · prediction-markets · screener · order-flow · base · bazaar

Call contract

Method
GET
Input
query parameters
Output
json
Last paid call
2026-10-07
Input example from Bazaar metadata
{
  "top": 20
}
Output example
{
  "asOf": "2026-09-01T03:42:26.765Z",
  "caveats": [
    "SHOWCASE, NOT THE PAID RESPONSE: what you see is one ranked row of the screener. markets is cut to 1 of the 8 rows this response carried. Nothing is masked or invented: every value is a dated measurement, kept so you can read the shape, the units and the field semantics. The schema published beside it is complete; a paid call returns the complete set.",
    "STATIC CONTRACT SAMPLE: what GET /screener?top=8 returns for the free public snapshot of 2026-09-01T03:42Z, restricted to the markets the seller's own flag reported open, then frozen. It is not current market intelligence: a live response carries its own asOf and current values, and GET /coverage is free and reports how many markets are decomposed right now.",
    "Descriptive FACT for the observed window. Never an accusation of fraud, nor a wash or skill label.",
    "apparentVolumeUsd counts executed trades, which is not the same as liquidity or open interest. It is taker-side and window-scoped, not lifetime.",
    "Concentration is measured among the OBSERVED TAKERS (the tape is taker-only). effectiveTraders = 1/HHI, which exposes what distinctTraders hides.",
    "onchainCounterparties is how many distinct counterparties the dominant taker traded against: a FACT, not a wash verdict. The proxy wallet is not the owner, and the graph is one hop deep.",
    "betResolvedInFavor means the dominant direction coincided with the resolution. One sample; neither PnL nor evidence of skill.",
    "resolutionRisk is the category BASE RATE, not a forecast for this market: dispute (how often markets like this are disputed at UMA) by flip (when disputed, how often the outcome REVERSES). On-chain fact; a small cell is directional only."
  ],
  "decomposed": 93,
  "markets": [
    {
      "apparentVolumeUsd": 287740.83,
      "apparentVsBookFlag": null,
      "bucket": "broad",
      "conditionId": "0xeef04a24987593cf21397c2ee92b8e82a58d43e2e5f7dde9bd3ebddda8377dbf",
      "effectiveTraders": 11,
      "marketClosed": false,
      "resolution": {
        "category": "Sports",
        "categoryDisputeRatePct": 0.4,
        "categoryFlipRatePct": 31.9,
        "titleLooksUncheckable": false
      },
      "title": "Monterrey Open: Diane Parry vs Elise Mertens",
      "topTraderShare": 0.2214
    }
  ],
  "observedMarkets": 42605,
  "windowHours": 71.95
}

Use with an agent

  1. Discover. Agents find this listing with GET https://bazaar.saylorinnovations.com/discovery/search?query=…, the MCP tool search_resources, or /discovery/resources.
  2. Inspect. Fetch /resources/30154.json for the price and payment options.
  3. Pay. Call GET https://api.polym.uk/screener. The provider answers 402 with its payment requirements. An x402 client signs one of the options below and retries with PAYMENT-SIGNATURE.
  4. Execute. The provider returns 200 with the data. Agent Bazaar is not in the request path and never sees your payment.

For humans

You don't need an account or an API key; you need a wallet holding a small amount of USDC on Base, and an x402-capable client (see the examples below). Call the endpoint unpaid first to see exactly what it asks for.

Pricing & payment

Price
$0.05 / request
Protocol
x402 v2
Auth
No account or API key. Pay per request.
Networks
Base
Demand
4 calls · 1 unique payers in 30d (public x402 Bazaar data)

x402 payment requirements

SchemeNetworkAssetAmountPay toTimeout
exactBase
eip155:8453
USDC$0.050x7b13107779CfDA1bEba3289d0Fbe27310436f3E3300s
accepts[] (raw JSON)
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "payTo": "0x7b13107779CfDA1bEba3289d0Fbe27310436f3E3",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "50000",
    "amountUsd": 0.05,
    "maxTimeoutSeconds": 300
  }
]

Schemas

Output schema (JSON Schema)
{
  "properties": {
    "example": {
      "additionalProperties": false,
      "properties": {
        "asOf": {
          "format": "date-time",
          "type": "string"
        },
        "caveats": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "decomposed": {
          "minimum": 0,
          "type": "integer"
        },
        "markets": {
          "items": {
            "additionalProperties": false,
            "properties": {
              "apparentVolumeUsd": {
                "description": "Observed taker-side volume in the materialized window, in USD.",
                "minimum": 0,
                "type": "number"
              },
              "apparentVsBookFlag": {
                "description": "Whether observed volume is structurally inconsistent with available book liquidity.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "bucket": {
                "description": "Descriptive taker-flow structure bucket, not a fraud verdict.",
                "enum": [
                  "unranked",
                  "structurally-thin",
                  "concentrated",
                  "moderate",
                  "broad"
                ],
                "type": "string"
              },
              "conditionId": {
                "description": "Polymarket condition ID.",
                "pattern": "^0x[0-9a-fA-F]{64}$",
                "type": "string"
              },
              "effectiveTraders": {
                "description": "HHI-derived effective trader count for the observed taker flow.",
                "minimum": 0,
                "type": "integer"
              },
              "marketClosed": {
                "description": "Whether the market was closed in the artifact.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "resolution": {
                "additionalProperties": false,
                "properties": {
                  "category": {
                    "description": "Heuristic category inferred from the market title.",
                    "type": "string"
                  },
                  "categoryDisputeRatePct": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "categoryFlipRatePct": {
                    "maximum": 100,
                    "minimum": 0,
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "titleLooksUncheckable": {
                    "description": "True when the market TITLE states no checkable threshold (price, number, score, head-to-head). Read from the title only — the resolution rules are not read.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "category",
                  "categoryDisputeRatePct",
                  "categoryFlipRatePct",
                  "titleLooksUncheckable"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "title": {
                "description": "Observed Polymarket market title.",
                "type": "string"
              },
              "topTraderShare": {
                "description": "Share of observed taker volume attributed to the top trader.",
                "maximum": 1,
                "minimum": 0,
                "type": "number"
              }
            },
            "required": [
              "conditionId",
              "title",
              "bucket",
              "apparentVolumeUsd",
              "topTraderShare",
              "effectiveTraders",
              "apparentVsBookFlag",
              "marketClosed",
              "resolution"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "observedMarkets": {
          "minimum": 0,
          "type": "integer"
        },
        "windowHours": {
          "minimum": 0,
          "type": "number"
        }
      },
      "required": [
        "asOf",
        "windowHours",
        "observedMarkets",
        "decomposed",
        "markets",
        "caveats"
      ],
      "type": "object"
    },
    "type": {
      "type": "string"
    }
  },
  "required": [
    "type"
  ],
  "type": "object"
}
Example shape — generated from the schema, not a captured live response
{
  "example": {
    "asOf": "2026-01-01T00:00:00Z",
    "caveats": [
      "string"
    ],
    "decomposed": 0,
    "markets": [
      {
        "apparentVolumeUsd": 0,
        "apparentVsBookFlag": true,
        "bucket": "unranked",
        "conditionId": "string",
        "effectiveTraders": 0,
        "marketClosed": true,
        "resolution": {
          "category": "string",
          "categoryDisputeRatePct": 0,
          "categoryFlipRatePct": 0,
          "titleLooksUncheckable": true
        },
        "title": "string",
        "topTraderShare": 0
      }
    ],
    "observedMarkets": 0,
    "windowHours": 0
  },
  "type": "string"
}

Examples

curl
curl "https://api.polym.uk/screener"
# -> 402 Payment Required, accepts[] lists how to pay
# retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://api.polym.uk/screener");
if (res.status === 402) {
  const { accepts } = await res.json();
  // pay one of accepts[] via an x402 client, then retry with the payment header
}
Python
import httpx
res = httpx.get("https://api.polym.uk/screener")
if res.status_code == 402:
    accepts = res.json()["accepts"]
    # pay one of accepts[] via an x402 client, then retry with the payment header

Details

Provider
api.polym.uk
Endpoint
https://api.polym.uk/screener
Machine-readable
/resources/30154.json