vike
API EndpointsPolymarket

/smart_money

Polymarket smart-money signals — markets with the largest net inflow from the profitable-wallet cohort, or markets that cohort bought well below the mid.

GET https://data.vike.io/v1/polymarket/smart_money

Where the wallets that have historically made money are putting it. The cohort is the set of wallets with at least $1,000 of realized P&L, at least five resolved markets and at least $5,000 of volume; the route reports what that cohort is doing, in one of two modes. It is the same answer the polymarket_smart_money MCP tool gives — the route runs that tool.

cURL
# where the profitable cohort has been putting net money over the last day: markets ranked by net_inflow, largest first
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=24&limit=2"

# what the cohort is buying right now: the same ranking over the last hour; 20 is the most rows the route returns
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=1&limit=20"

# the longest view the route allows: 720 hours, thirty days of cohort flow
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=720&limit=20"

# crypto markets only: the category scopes the cohort as well as the markets, and its names are exact (Crypto, Sports, Politics, Pop-Culture, Tech)
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&category=Crypto&hours=24&limit=10"

# markets the cohort bought well below where they trade now, best delta first: a market needs at least $500 of cohort buying and a 0.03 gap to appear
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=mispricings&hours=24&limit=10"

# mispricings inside one category: a filter is how to keep the fast five-minute up-or-down markets, which resolve quickly and show large deltas, from filling the board
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=mispricings&category=Politics&hours=72&limit=10"

# there is no as-of parameter, so a research series is a stored one: keep each hourly response with its timestamp
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=1&limit=20" -o "flows-$(date -u +%Y%m%dT%H).json"
modequeryoptional
flows (default) — markets with the largest net cohort inflow in the window. mispricings — markets where the cohort bought meaningfully below the current mid. Any other value is a 400.
hoursqueryoptional
Lookback window in hours, an integer from 1 to 720. Default 24. Anything else is a 400.
categoryqueryoptional
Restrict to one market category (at most 64 characters). Default: all. An unknown category returns [], not an error.
limitqueryoptional
Maximum rows, a positive integer. Default 10; values above 20 are capped at 20.

A real response for mode=flows.

Example response (mode=flows)
[
  {
    "condition_id": "0xe0b5bd8eef80fe8976e2c287e0b76a5cda138ddc437acf95f9ba91112dbc983d",
    "title": "Seahawks vs. Broncos",
    "slug": "nfl-sea-den-2026-10-16",
    "smart_wallets": 227,
    "buy_inflow": 3819464.49,
    "sell_outflow": 166081.01,
    "net_inflow": 3653383.48,
    "trades": 4576,
    "last_ts": "2026-10-16 03:49:49",
    "yes_mid": 0.015
  }
]

And a real response for mode=mispricings.

Example response (mode=mispricings)
[
  {
    "condition_id": "0x6a93a3190840da7ad3545168388c83c2244c4b5279bbe8ef537f1a091bcec7a0",
    "title": "Solana Up or Down - October 15, 10:50AM-10:55AM ET",
    "slug": "sol-updown-5m-1792075800",
    "smart_wallets": 49,
    "last_buy_ts": "2026-10-15 14:55:16",
    "total_buy_value": 1548.59,
    "side": "YES",
    "avg_buy_price": 0.2466,
    "current_mid": 0.985,
    "delta": 0.7384,
    "buy_value": 384.66
  }
]

Reading it

  • net_inflow is dollars, not shares: cohort buys minus cohort sells in the window.
  • yes_mid can be null — the market has no recorded mid yet. It is absent data, not zero.
  • mispricings only lists clear cases. A market appears when the cohort put at least $500 into it and the current mid is at least 0.03 away from their average entry in their favour. delta is current_mid - avg_buy_price for the side they bought; a large positive value means the market has already moved toward the cohort. It records where they were early and is not a forecast.
  • side is the outcome position, not a literal Yes/No. YES is the first outcome of the market and NO the second, so on an Over/Under or a two-team market read them as "outcome 1" and "outcome 2" and take the names from the market.
  • category names are exact. The categories are Crypto, Sports, Politics, Pop-Culture and Tech; omit the parameter for all markets. The cohort is built per category, and any other spelling matches no cohort, so it returns [] rather than an error.
  • Rows are ordered best first: flows by net_inflow descending, mispricings by delta descending, then by total_buy_value.
  • A short-dated market can dominate. Five-minute "up or down" markets resolve fast and show large deltas; filter with category when you want slower markets.

Errors

StatusWhen
400mode, hours or limit is outside the values above, category is too long, or an unknown query parameter is sent. The body is {"error": "…"}.
401 / 429No or bad credential, or the hourly budget is spent — see Authentication and Rate limits.
503The store behind it is unavailable. The body carries no driver text.
cURL
# where the profitable cohort has been putting net money over the last day: markets ranked by net_inflow, largest firstcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=24&limit=2"# what the cohort is buying right now: the same ranking over the last hour; 20 is the most rows the route returnscurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=1&limit=20"# the longest view the route allows: 720 hours, thirty days of cohort flowcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=720&limit=20"# crypto markets only: the category scopes the cohort as well as the markets, and its names are exact (Crypto, Sports, Politics, Pop-Culture, Tech)curl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&category=Crypto&hours=24&limit=10"# markets the cohort bought well below where they trade now, best delta first: a market needs at least $500 of cohort buying and a 0.03 gap to appearcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=mispricings&hours=24&limit=10"# mispricings inside one category: a filter is how to keep the fast five-minute up-or-down markets, which resolve quickly and show large deltas, from filling the boardcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=mispricings&category=Politics&hours=72&limit=10"# there is no as-of parameter, so a research series is a stored one: keep each hourly response with its timestampcurl -s -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/polymarket/smart_money?mode=flows&hours=1&limit=20" -o "flows-$(date -u +%Y%m%dT%H).json"
Example response (mode=flows)
[  {    "condition_id": "0xe0b5bd8eef80fe8976e2c287e0b76a5cda138ddc437acf95f9ba91112dbc983d",    "title": "Seahawks vs. Broncos",    "slug": "nfl-sea-den-2026-10-16",    "smart_wallets": 227,    "buy_inflow": 3819464.49,    "sell_outflow": 166081.01,    "net_inflow": 3653383.48,    "trades": 4576,    "last_ts": "2026-10-16 03:49:49",    "yes_mid": 0.015  }]