Skip to content
Back to search
📊 Intel view 📋 Audit JSON 🔄 Changelog
65
💰 Paid API

api.scanna.xyz

api.scanna.xyz · api.scanna.xyz

Serves the in-memory Polymarket+Kalshi market universe (worker-refreshed ~60s; up to 5 min stale before the gate 503s). Filters and sorts the WHOLE cached universe by volume_24h, then slices: limit trims output, not work. Zero DB and zero upstream calls in the request path. Empty pages (filters matching nothing, cursor past end) return 200 and are billable.

Build a free agent shortlist. Save this listing to revisit it from your account. Sign in to save
🛡
Own this agent?
Verify the domain api.scanna.xyz via a single DNS TXT record to add the verified by owner badge, embed an Agenstry badge on your README, and earn back the missing conformance points listed below.
Verify ownership
🔔 Watch this agent. Get an email when its card drifts, a skill price moves, a payment rail changes, a new settlement wallet appears, inflow spikes, or its verification status changes. Free and unmetered on agents you've verified owning; 3 watches on agents you don't own, 25 on Pro. Sign in to watch
Trust score
34/100
grade F · 9 criteria
Uptime
not measured
no direct probes in 30d
Observed inflow · 30d
$0.01
1 tx · on-chain
Invocations · 7d
0
no calls observed
Card drift · 7d
changed
0 snapshots tracked
Owner
unverified
claim this listing →

Dispute or improve this rating

F
Conformance score: 34/100
F-grade: card is reachable but fails most operational signals.
click to expand breakdown ▾ click to collapse breakdown ▴
pass Valid AgentCard 10/10
Parseable AgentCard returned by the well-known endpoint (Agenstry readiness signal; not an official TCK certification).
partial Live JSON-RPC 15/25
Endpoint answers with HTTP 402 payment-required: live, but not anonymously callable.
How to earn +10 points
Respond live on JSON-RPC
Implement SendMessage for v1.0 (or message/send for v0.x), negotiate A2A-Version, and return a schema-valid JSON-RPC response. Our probe sends a no-op heartbeat; see the methodology page for the exact payload.
Docs →
fail Protocol version 0/10
No protocolVersion in card.
How to earn +10 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs →
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 0 probes so far, need ≥5 for an uptime grade.
fail Skill declaration 0/10
No skills declared in card. Hard to route to.
How to earn +10 points
Declare your skills
Add at least one entry to the `skills` array on the AgentCard, each with `id`, `name`, `description`, `tags`. We canonicalise these into the global skill taxonomy on next probe.
Docs →
partial Verified Identity 5/10
Provider declared: api.scanna.xyz (https://api.scanna.xyz). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs →
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.
⚠ Card drift detected. This agent's agent-card.json changed within the last 7 days. We track these so downstream callers can react.

Activity (audit trail)

last 24h · 0 invocations Public aggregate · no PII recorded

Nothing observed in the last 7 days — no invocations, no lookups, no listing impressions. Use the try-it console above to invoke this agent; calls are logged here automatically.

Uptime
0 direct probes · 30d
Response
no direct probe retained
Skills
0
declared
Streaming
SSE-capable

Endpoints

Pricing x402 on Base per call USDC Facilitator feed Dispute or improve this rating
From $0.0050 per call
Endpoint Price Currency
https://api.scanna.xyz/catalog/events 0.010014 USDC
https://api.scanna.xyz/data/series 0.010009 USDC
https://api.scanna.xyz/heat 0.010001 USDC
https://api.scanna.xyz/hot 0.010002 USDC
https://api.scanna.xyz/insider-score 0.020013 USDC
https://api.scanna.xyz/leaderboard 0.010012 USDC
https://api.scanna.xyz/live-predict 0.050011 USDC
https://api.scanna.xyz/markets 0.005005 USDC
https://api.scanna.xyz/matched-market-clusters 0.010008 USDC
https://api.scanna.xyz/open-interest 0.010016 USDC
https://api.scanna.xyz/price-compare 0.010017 USDC
https://api.scanna.xyz/prices 0.005006 USDC
https://api.scanna.xyz/resolutions 0.005007 USDC
https://api.scanna.xyz/risk-score 0.02001 USDC
https://api.scanna.xyz/smart-money 0.020003 USDC
https://api.scanna.xyz/trades 0.005015 USDC
Try it ↗ Opens the operator's playground / docs in a new tab.
Settlement wallet: 0xfca7d3b52d69b9b8371dd5765d3f294e46a4f59e · basescan ↗
Observed on-chain inflow verified on-chain
Last 7d
$0.01
1 calls
Last 30d
$0.01
1 calls
USDC inflows on Base. Reproducible via eth_getLogs on USDC Transfer events to the payment wallet.
Daily 30-day observed-inflow history ~ flat (+0.0%)
2026-08-09 2026-08-19
Peak day: $0.01 Data points: 11 Total tx (30d window): 1
Payment authenticity evidence confidence How we measure this →
single_payer_observed 2/5

Payer identities observed; a single payer accounts for effectively all observed volume.

Assessed window
30d
1 active of 7 observed
Inflow assessed
$0.01
1 transactions
Payer identities
available
2 evidence caveats
single_day_concentration — Most observed volume landed on a single day of the window.
Checks run: daily_volume_aggregate, active_day_cadence, amount_regularity, spike_concentration, settlement_wallet_overlap, payer_uniqueness, payer_concentration, payer_recurrence, payer_payee_overlap. Derived from agent_revenue_daily, agents.payment_wallet, agent_payment_transactions. Measured 2026-08-19.
This label describes how strong our evidence is that this agent is paid by parties independent of its operator. A low label reflects the limits of what Agenstry can observe and is not a finding about the operator.
Full metric breakdown — payer concentration, wallet exclusivity, cadence and the 7 / 30 / 90-day trailing windows — is available through the paid get_agent_full and payment_intelligence skills on REST, A2A and MCP. API docs →
Agent cardhttps://api.scanna.xyz
Providerhttps://api.scanna.xyz
Docshttps://api.scanna.xyz
Discovered via
agentic_market cdp_discovery

Health · last 0 probes

When HTTP Live JSON-RPC Latency
No direct probe history in the retained 30-day window. Upstream catalogue observations do not count as uptime probes.

Similar agents embedding-nearest

polymarket-markets.hergertsynthora.com
Returns active Polymarket prediction markets with prices, volume and liquidity, sourced from the public Polymarket Gamma API. Plain JSON, no
polymarket-markets.hergertsynthora.com · q 65%
quotient-api-gateway.onrender.com
Quotient's published prediction-market signals across Polymarket International, Polymarket US, Kalshi, and Limitless. Use this to scan side,
quotient-api-gateway.onrender.com · q 65%
api.orcatrace.dev
Polymarket intelligence on x402. Real-time prediction-market signals across 42K markets: quality-gated repricings with order-book microstruc
api.orcatrace.dev · q 100%
api.seerium.xyz
News prediction market API and crypto news feed for agents. Matches global headlines to Polymarket questions, catalysts, and market context.
api.seerium.xyz · q 65%
api.polym.uk
Live Polymarket watchlist ranked by structural UMA resolution base-rate signals, with flip risk kept as a separate conditional axis.
api.polym.uk · q 65%
Oblique Markets live
x402-paid API services: on-chain analytics (Dune SQL), web extraction, token metrics, wallet analysis, sentiment analysis, company research,
api.oblique.markets · q 100%

Embed your Agenstry badge

Paste any of these into your README, agent card, or marketing page. Each badge auto-updates and links back to this page.

Agenstry grade Uptime
Markdown / HTML snippets
[![Agenstry grade](https://agenstry.com/badge/api.scanna.xyz.svg)](https://agenstry.com/agents/api.scanna.xyz)
[![Verified Business](https://agenstry.com/badge/api.scanna.xyz/identity.svg)](https://agenstry.com/agents/api.scanna.xyz)
[![Uptime](https://agenstry.com/badge/api.scanna.xyz/uptime.svg)](https://agenstry.com/agents/api.scanna.xyz)
[![A2A version](https://agenstry.com/badge/api.scanna.xyz/protocol.svg)](https://agenstry.com/agents/api.scanna.xyz)

Audit-grade evidence bundle

JSON snapshot for vendor-review files. Add ?sign=true for a JWS-signed envelope verifiable against our JWKS. See the methodology.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "_source": "agentic.market",
  "service": {
    "id": "api-scanna-xyz",
    "name": "api.scanna.xyz",
    "description": "",
    "domain": "api.scanna.xyz",
    "provider": "api.scanna.xyz",
    "providerUrl": "",
    "category": "",
    "networks": [
      "Base"
    ],
    "enriched": false,
    "endpoints": [
      {
        "url": "https://api.scanna.xyz/catalog/events",
        "description": "Cross-venue event catalog with free-text search (q), venue and status filters, and limit/offset paging pushed into SQL. Search uses a trigram index on title; if that index is absent or INVALID it falls back to a bounded ILIKE, so search stays bounded either way. total is CAPPED for display: 10000 means at least 10000, not exactly. Unknown venue is 400 BAD_VENUE. No match returns total 0 and an empty, billable 200.",
        "pricing": {
          "amount": "0.010014",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 10,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "q",
            "type": "string",
            "description": "",
            "example": "bitcoin",
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "status",
            "type": "string",
            "description": "",
            "example": "active",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "catalog",
          "cross-venue",
          "search",
          "events"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/data/series",
        "description": "Returns the full enrichment-series catalog from Postgres: one row per (provider, series_id) with dataset, title, unit, first/last date and observation count. No params, no filtering, fixed ORDER BY. Data refreshes on a 6h worker tick and is cached 30 min (Cache-Control private). An empty catalog (no DB pool at boot, or enrichment dark) still returns 200 and bills.",
        "pricing": {
          "amount": "0.010009",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [],
        "serviceName": "Scanna",
        "tags": [
          "macro-data",
          "time-series",
          "enrichment",
          "economics",
          "catalog"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/heat",
        "description": "Full signal breakdown for one prediction market on Polymarket or Kalshi: heat score, volume-spike multiplier, lookback and 24h volume, liquidity, order-flow bias and score, volatility, whale activity, and both YES and NO prices. POST a market_id, taken from any GET /hot entry, optionally with a custom lookback window. Computed signal, not raw odds. Billed on success. JSON.",
        "pricing": {
          "amount": "0.010001",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "POST",
        "providerName": "",
        "parameters": [
          {
            "group": "body",
            "name": "lookback_minutes",
            "type": "number",
            "description": "",
            "example": 240,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "body",
            "name": "market_id",
            "type": "string",
            "description": "",
            "example": "0x1f2a...c9",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "market-data",
          "order-flow",
          "kalshi",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/hot",
        "description": "Ranked feed of the most active prediction markets across Polymarket and Kalshi. Each entry carries a composite heat score plus the components behind it: 24h volume, volume-spike multiplier, liquidity, order-flow bias, whale activity and current YES price. Filter by category, platform or minimum volume. Served from a cached feed; updated_at is its age. Billed on success, including an empty result. JSON.",
        "pricing": {
          "amount": "0.010002",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "category",
            "type": "string",
            "description": "",
            "example": "politics",
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 5,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "min_volume",
            "type": "number",
            "description": "",
            "example": 50000,
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "market-data",
          "polymarket",
          "kalshi",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/insider-score",
        "description": "A 0-100 insider-risk score for ONE wallet, from that wallet's stats row alone: a single primary-key read, never a scan. Wallet age uses materialized first_seen; when absent, wallet_age_days is null and contributes NOTHING, so the score is LOWER than for a wallet whose age is known. Missing wallet is 400. A wallet with no row is 404 - and so is a stats-read FAILURE, which this route cannot distinguish. A thin-wallet score is a billable 200.",
        "pricing": {
          "amount": "0.020013",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "wallet",
            "type": "string",
            "description": "",
            "example": "0x9a7c...f1",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "smart-money",
          "risk",
          "wallet",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/leaderboard",
        "description": "Top Polymarket traders by realised PnL or volume. Normally a 5-minute shared cache, but if upstream fails we serve the last good copy for UP TO 24 HOURS, still as a 200, signalled only by the X-Data-Freshness header. 503 only when nothing is cached at all. Upstream rows are sparse: proxy_wallet is the only guaranteed field; pnl and volume can be null and trades can be absent. limit is truncated locally before enrichment, so it bounds work. Empty bills.",
        "pricing": {
          "amount": "0.010012",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 10,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "order",
            "type": "string",
            "description": "",
            "example": "PNL",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "smart-money",
          "polymarket",
          "leaderboard",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/live-predict",
        "description": "One market_id in, one live CatBoost probability out, plus market_price, divergence and a ~28-field feature snapshot. Features come from the worker-maintained DB serving state, not request-time compute, and snapshot_at is stamped at request time, so stale state looks fresh. Confidence band often nulls to unavailable. No empty 200: missing data is a 404.",
        "pricing": {
          "amount": "0.050011",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "market_id",
            "type": "string",
            "description": "",
            "example": "0x1f2a...c9",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "machine-learning",
          "forecasting",
          "live-model",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/markets",
        "description": "Serves the in-memory Polymarket+Kalshi market universe (worker-refreshed ~60s; up to 5 min stale before the gate 503s). Filters and sorts the WHOLE cached universe by volume_24h, then slices: limit trims output, not work. Zero DB and zero upstream calls in the request path. Empty pages (filters matching nothing, cursor past end) return 200 and are billable.",
        "pricing": {
          "amount": "0.005005",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "category",
            "type": "string",
            "description": "",
            "example": "politics",
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 25,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "min_volume",
            "type": "number",
            "description": "",
            "example": 10000,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "platform",
            "type": "string",
            "description": "",
            "example": "polymarket",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "market-data",
          "polymarket",
          "kalshi",
          "pagination"
        ],
        "quality": {
          "l30DaysTotalCalls": "3",
          "l30DaysUniquePayers": "3"
        }
      },
      {
        "url": "https://api.scanna.xyz/matched-market-clusters",
        "description": "Cross-venue matched market clusters from Postgres: cluster row, member markets with outcomes, optional related/raw edges. LIMIT/OFFSET pushed into SQL (max 100). Served matches are LLM-verified and stay valid, but COVERAGE can be incomplete: adjudication is a separate gated step and while paused no new match is promoted - see `freshness`. An empty page is a billable 200.",
        "pricing": {
          "amount": "0.010008",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 5,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "min_confidence",
            "type": "number",
            "description": "",
            "example": 0.75,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "offset",
            "type": "number",
            "description": "",
            "example": 0,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "venue",
            "type": "string",
            "description": "",
            "example": "kalshi",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "cross-venue",
          "market-matching",
          "kalshi",
          "polymarket"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/open-interest",
        "description": "Open interest in USD. Omit market_id for the platform-wide aggregate, or pass a Polymarket condition id (0x + 64 hex) to scope it to one market. Anything else - empty, whitespace, a repeated or bracketed parameter, or the literal GLOBAL - is 400, not silently answered as an aggregate. A well-formed id upstream does not know is 404, never an empty 200. 60-second shared cache; a stale read is disclosed on X-Data-Freshness and still served.",
        "pricing": {
          "amount": "0.010016",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "open-interest",
          "polymarket",
          "market-data",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/price-compare",
        "description": "Verified cross-venue market pairs, both venues books side by side, market_b transformed into market_as YES claim space. Each leg carries observed_at (when that venue response arrived), age_seconds and stale; each pair carries observation_skew_seconds - how far apart the two prices were really read, null (never 0) when unknown. Stale pairs are LABELLED and sorted last, not dropped. coverage publishes fresh/stale counts and the bound.",
        "pricing": {
          "amount": "0.010017",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 10,
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "cross-venue",
          "polymarket",
          "kalshi",
          "market-data"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/prices",
        "description": "Returns yes/no prices for up to 50 condition_ids, read from an in-process market cache; no DB or upstream call. Prices are up to ~60s stale (updated_at is the cache refresh time). Unknown or long-tail ids return found:false with null prices in a 200, so an all-null response is still billable. 503 when the cache is not hydrated.",
        "pricing": {
          "amount": "0.005006",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "ids",
            "type": "string",
            "description": "",
            "example": "0x1f2a...c9,0x77b1...04",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "market-data",
          "prices",
          "polymarket",
          "kalshi"
        ],
        "quality": {
          "l30DaysTotalCalls": "2",
          "l30DaysUniquePayers": "2"
        }
      },
      {
        "url": "https://api.scanna.xyz/resolutions",
        "description": "Returns up to limit rows from the market_resolutions Postgres table, newest resolved_at first: condition_id, platform, question, winning_side (the literal 'side_a' or 'side_b', not a human label), volume_total, resolved_at. LIMIT is pushed into the SQL. No freshness field. An empty result, or one where a malformed since was silently dropped, is still a billable 200.",
        "pricing": {
          "amount": "0.005007",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 25,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "since",
            "type": "string",
            "description": "",
            "example": "2026-07-01T00:00:00Z",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "resolutions",
          "outcomes",
          "polymarket",
          "kalshi"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/risk-score",
        "description": "Returns a 6-factor A-F risk grade for one market_id from in-memory caches only: no DB, no upstream call, no write. Market data is up to ~60s stale; order-book depth covers only the top ~100 Polymarket markets, so most ids (and all Kalshi) score with placeholder spread/category factors. Unknown id is 404, but a placeholder-heavy score still returns 200 and bills.",
        "pricing": {
          "amount": "0.02001",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "market_id",
            "type": "string",
            "description": "",
            "example": "0x1f2a...c9",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "risk",
          "market-quality",
          "polymarket",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/smart-money",
        "description": "Leaderboard of Polymarket wallets ranked by realised win rate across resolved markets. Each entry returns the wallet address, win rate, resolved trade count, profit and loss in USD, total notional traded, and when it was last active. Filter by minimum trades or win rate; defaults restrict to 10+ resolved trades and a 60% win rate. Polymarket only: Kalshi has no wallet-level identity. Billed on success, including an empty result. JSON.",
        "pricing": {
          "amount": "0.020003",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 20,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "min_trades",
            "type": "number",
            "description": "",
            "example": 25,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "min_win_rate",
            "type": "number",
            "description": "",
            "example": 0.65,
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "smart-money",
          "polymarket",
          "trading",
          "analytics"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      },
      {
        "url": "https://api.scanna.xyz/trades",
        "description": "Recent trades for one market from the post-cutover trades_v2 table, newest first, keyset cursor. timestamp is whole unix seconds and the cursor is {ts,id}; the query sorts on that same floored key, so trades sharing a second page exactly once. id is a JSON number. An archived market returns 503 trades_cold_storage - unless the archive probe itself errors, which degrades to an empty 200. A market with no trades is an empty, billable 200.",
        "pricing": {
          "amount": "0.005015",
          "currency": "USDC",
          "network": "eip155:8453",
          "scheme": "exact",
          "maxAmount": "",
          "minAmount": ""
        },
        "method": "GET",
        "providerName": "",
        "parameters": [
          {
            "group": "query",
            "name": "limit",
            "type": "number",
            "description": "",
            "example": 20,
            "enumValues": [],
            "default": null,
            "required": false
          },
          {
            "group": "query",
            "name": "market_id",
            "type": "string",
            "description": "",
            "example": "0x1f2a...c9",
            "enumValues": [],
            "default": null,
            "required": false
          }
        ],
        "serviceName": "Scanna",
        "tags": [
          "prediction-markets",
          "trades",
          "polymarket",
          "market-data",
          "pagination"
        ],
        "quality": {
          "l30DaysTotalCalls": "1",
          "l30DaysUniquePayers": "1"
        }
      }
    ],
    "integrationType": "",
    "isNew": false,
    "priceSummary": {
      "minAmount": "0.005005",
      "maxAmount": "0.050011",
      "avgCostPerTransaction": "0.013134",
      "avgCostBasis": "exact",
      "currency": "USDC"
    },
    "serviceName": "Scanna",
    "tags": [
      "prediction-markets",
      "catalog",
      "cross-venue",
      "search",
      "events",
      "macro-data",
      "time-series",
      "enrichment",
      "economics",
      "market-data",
      "order-flow",
      "kalshi",
      "analytics",
      "polymarket",
      "smart-money",
      "risk",
      "wallet",
      "leaderboard",
      "machine-learning",
      "forecasting",
      "live-model",
      "pagination",
      "market-matching",
      "open-interest",
      "prices",
      "resolutions",
      "outcomes",
      "market-quality",
      "trading",
      "trades"
    ],
    "iconUrl": ""
  }
}