Find source-matched Polymarket and Kalshi market pairs. Returns paired market questions, platform identifiers, match type, confidence and available volume or price differences. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Up to 0.0288 credits / call
The final charge is based on confirmed usage. Unused reserved credits return to your available balance.
Surf
Polymarket and Kalshi Market Pair Matcher
Find source-matched Polymarket and Kalshi market pairs. Returns paired market questions, platform identifiers, match type, confidence and available volume or price differences. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
You receive
Returns paired market questions, platform identifiers, match type, confidence and available volume or price differences. Exact and related matches have different meanings. Review both source markets and settlement rules; confidence and spread do not guarantee arbitrage.
Start with your task
Share [a Polymarket or Kalshi market link], describe [an event], or browse [a category]. I’ll show up to [20] closest pairs. If a separate paid lookup is needed, I’ll show its maximum price and ask first. If several matches fit, I’ll ask you to choose.
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
queryParamsqueryParams
object
Optional
limitqueryParams.limit
integer
Optional
Maximum rows to return. Example: 20. Defaults to 20.
Find source-matched Polymarket and Kalshi market pairs
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.limit (Optional): Maximum rows to return. Example: 20. Defaults to 20.
queryParams.order (Optional): Sort order. Defaults to "desc".
queryParams.offset (Optional): Pagination offset. Example: 0. Defaults to 0.
queryParams.sort_by (Optional): Sort field. Defaults to "confidence".
queryParams.category (Optional): Filter by category. Example: politics.
queryParams.match_type (Optional): Filter by match type. Example: exact.
queryParams.active_only (Optional): Only return pairs where both markets are currently active. Defaults to false.
queryParams.min_confidence (Optional): Minimum confidence score (0-100). Defaults to 0.
queryParams.kalshi_market_ticker (Optional): Find match for this Kalshi market.
queryParams.polymarket_condition_id (Optional): Find match for this Polymarket market.
What this Tool returns
Returns paired market questions, platform identifiers, match type, confidence and available volume or price differences.
Response fields and how to read them
The table follows the official response contract, including nested fields and useful response metadata. [] denotes an array item. Required means required within its parent object, not that a conditional parent always exists. A nullable type permits null; an optional field can be absent. Use the documented conditions below to distinguish missing, empty and zero values. Units and reporting windows apply only where explicitly documented.
Paths in the table start at the Surf response root. In this Tool's saved Example, Toolmu stores that response inside result; for example, data.[].field corresponds to result.data.[].field in the saved run output. This wrapper and the observed rows describe the saved request, not a guarantee for every future input.
Field, type and presence
Meaning and conditions
data.[].category
string; Required within parent
Market category
data.[].confidence
integer; Required within parent; format: int64
Match confidence score (75-100)
data.[].kalshi
object; Required within parent
Kalshi market details
data.[].kalshi.event_ticker
string; Required within parent
Kalshi event ticker
data.[].kalshi.market_ticker
string; Required within parent
Kalshi market ticker
data.[].kalshi.open_interest
number; Required within parent; format: double
Open interest in contracts
data.[].kalshi.status
string; Required within parent
Market status
data.[].kalshi.title
string; Required within parent
Market title
data.[].kalshi.volume_contracts
number; Required within parent; format: double
Total volume in contracts
data.[].kalshi_price
number; Optional within parent; format: double
Kalshi YES-side probability (0-1). Omitted when no realtime price is available.
data.[].match_type
string; Required within parent
Match type: exact or related
data.[].polymarket
object; Required within parent
Polymarket market details
data.[].polymarket.condition_id
string; Required within parent
Polymarket condition identifier
data.[].polymarket.event_slug
string; Required within parent
Event slug identifier
data.[].polymarket.is_active
boolean; Required within parent
Whether the market is currently active
data.[].polymarket.outcome_label
string; Optional within parent
Polymarket matched outcome label
data.[].polymarket.question
string; Required within parent
Market question text
data.[].polymarket.token_id
string; Optional within parent
Polymarket matched outcome token ID
data.[].polymarket.volume_usd
number; Required within parent; format: double
Total trading volume (USD)
data.[].polymarket_price
number; Optional within parent; format: double
Polymarket matched outcome probability (0-1). Omitted when no realtime price is available.
data.[].spread_pct
number; Optional within parent; format: double
Absolute spread between Polymarket matched-outcome and Kalshi YES probabilities, expressed as a percentage. Only present when both prices are known.
meta.cached
boolean; Required within parent
Whether this response was served from cache
meta.credits_used
integer; Required within parent; format: int64
Credits deducted for this request
meta.empty_reason
string; Optional within parent
Hint explaining why the data array is empty, when applicable
meta.has_more
boolean; Optional within parent
Whether more items may exist beyond this response. For offset-paged endpoints, continue with a larger offset. For time-series endpoints without offset/cursor controls, true means the requested time range hit an upstream cap; narrow from/to to continue. Omitted when exhaustion cannot be proven.
meta.limit
integer; Required within parent; format: int64
Maximum number of items returned in this response
meta.offset
integer; Required within parent; format: int64
Number of items skipped (pagination offset)
meta.total
integer; Optional within parent; format: int64
Total number of matching items (before pagination). Omitted when total is unknown.
meta.watermark
integer; Optional within parent; format: int64
Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades/aggregate) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.
Coverage, units and freshness
Exact and related matches have different meanings. Review both source markets and settlement rules; confidence and spread do not guarantee arbitrage.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.
Data source and references
Surf supplies this endpoint through its Data API. Response contract and deployed Tool inputs reviewed on 2026-10-03 against official OpenAPI v0.2.102. This is a contract review date, not a data observation time. Coverage depends on the selected endpoint and request.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Start with a market link
Example request: [Find this event on both sites]. Link: [Polymarket or Kalshi market link].
Example request: [Find this event on both sites]. Event: [Bitcoin above $100,000 by December 31, 2026].
Share [a Polymarket or Kalshi market link], describe [an event], or browse [a category]. I’ll show up to [20] closest pairs. If a separate paid lookup is needed, I’ll show its maximum price and ask first. If several matches fit, I’ll ask you to choose.
Browse a category
Example request: [Show 10 active sports market pairs, with closer matches first].
Questions about this tool.
Inputs, results and details to know before running it.
Share a market link from either site, describe the event, or ask for pairs from a category. You do not need to look up or copy any special code. By default, I’ll show up to 20 pairs, with closer matches first; ask for up to 100 or only currently active markets. If a separate paid lookup is needed to find your market, I’ll show the maximum charge and ask before using it. Check both original markets and their rules; a match does not guarantee the rules are identical or that a profitable trade is available.
Returns paired market questions, platform identifiers, match type, confidence and available volume or price differences.
Exact and related matches have different meanings. Review both source markets and settlement rules; confidence and spread do not guarantee arbitrage.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Ask your agent to Find source-matched Polymarket and Kalshi market pairs. Provide the required inputs above. If Toolmu is already connected, reuse that connection; otherwise use the setup instructions on this page. Before a paid execution, the agent must read the current Tool contract and check availability, the credit ceiling, balance, budget and your authorization. It should then execute the Tool and explain the returned fields and limitations.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.