Polymarket vs Kalshi API

API ID 14618

Same prediction markets on Polymarket and Kalshi, matched and verified, with both prices, price gaps, and alerts when new markets open. Covers elections, economics, and sports, including games, spreads, and totals.

API Documentation

Endpoints

Request
Returns the same prediction market listed on both Polymarket and Kalshi, matched and verified, with both Yes prices, the gap in cents, the pre-fee edge and volume on each side. Filter by keyword, category, sports league and bet type (winner, spread, total), minimum gap or edge, and markets traded today. Sorted by biggest gap by default.
Endpoint ID: 37562
GET https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37562/same+market+on+polymarket+and+kalshi
INPUT PARAMETERS

Same market on Polymarket and Kalshi — Endpoint Features

Object Description
minVolume Optional Minimum volume on both sides
offset Optional Skip this many rows, for paging. Use nextOffset from the previous response
limit Optional Rows to return, 1 to 50. Default 50
sort Optional gap (default), edge, volume or similarity
kalshiTicker Optional Find the pair for one Kalshi ticker
polymarketId Optional Find the pair for one Polymarket market id
tradedToday Optional true for pairs traded in the last 24 hours on both sides
tier Optional verified (default), candidate or all
minEdge Optional Minimum pre-fee edge in points
minGap Optional Minimum gap in points (cents)
type Optional Sports bet type: moneyline, spread or total
league Optional Sports league codes, comma-separated, e.g. nba,nfl,nhl,cfb,epl
sports Optional only (sports games only) or exclude (no sports)
category Optional e.g. Elections, Politics, Economics, Crypto, Sports
q Optional Keywords, all must match, e.g. senate ohio

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

minVolume
offset
limit
sort
kalshiTicker
polymarketId
tradedToday
tier
minEdge
minGap
type
league
sports
category
q
API EXAMPLE RESPONSE
JSON
{
    "total": 10758,
    "returned": 5,
    "offset": 0,
    "nextOffset": 5,
    "searchMs": 10,
    "databaseUpdatedAt": "2026-10-30T18:20:11.424Z",
    "pairs": [
        {
            "id": "6312568-o0~KXQSTARSSPREAD-26OCT30SADSHM-SAD3",
            "tier": "verified",
            "similarity": 1,
            "notes": [
                "sports: spread, same QAT1 game on 2026-10-30"
            ],
            "title": "Al Sadd SC vs. Al-Shamal: spread",
            "outcome": "Al Sadd SC (-2.5)",
            "category": "Sports",
            "gapPoints": 47.5,
            "higherYesOn": "kalshi",
            "edgePointsPreFee": 46,
            "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
            "bothSidesTraded24h": true,
            "quoted": {
                "polymarket": true,
                "kalshi": true
            },
            "game": {
                "league": "QAT1",
                "date": "2026-10-30",
                "type": "spread",
                "line": -2.5,
                "startsAt": "2026-10-30T16:30:00.000Z"
            },
            "polymarket": {
                "id": "6312568-o0",
                "question": "Al Sadd SC vs. Al-Shamal: spread",
                "outcome": "Al Sadd SC (-2.5)",
                "yesPrice": 0.43,
                "yesBid": 0.42,
                "yesAsk": 0.44,
                "volumeUsd": 3412.2269939999996,
                "volume24hUsd": 3428.2269939999996,
                "liquidityUsd": 5395.8272,
                "closesAt": "2026-10-30T16:30:00.000Z",
                "url": "https://polymarket.com/event/qat1-sad-shm-2026-10-30-more-markets"
            },
            "kalshi": {
                "ticker": "KXQSTARSSPREAD-26OCT30SADSHM-SAD3",
                "eventTicker": "KXQSTARSSPREAD-26OCT30SADSHM",
                "question": "Al Sadd vs Al-Shamal: Al Sadd wins by more than 2.5 goals?",
                "outcome": null,
                "yesPrice": 0.905,
                "yesBid": 0.9,
                "yesAsk": 0.91,
                "volumeContracts": 9530.54,
                "volume24hContracts": 7139.07,
                "openInterest": 5535.65,
                "closesAt": "2026-11-01T16:30:00Z",
                "url": "https://kalshi.com/markets/kxqstarsspread"
            },
            "updatedAt": "2026-10-30T18:20:11.424Z"
        },
        {
            "id": "3948041~KXSERIEATOP-27TOP4-ACM",
            "tier": "verified",
            "similarity": 0.716,
            "title": "Will Inter Milan finish in the top 4 of the 2026-27 Serie A season?",
            "outcome": "Inter Milan",
            "category": "Sports",
            "gapPoints": 44.8,
            "higherYesOn": "polymarket",
            "edgePointsPreFee": 38.5,
            "edgeHow": "Buy Yes on Kalshi, buy No on Polymarket",
            "bothSidesTraded24h": false,
            "quoted": {
                "polymarket": true,
                "kalshi": true
            },
            "polymarket": {
                "id": "3948041",
                "question": "Will Inter Milan finish in the top 4 of the 2026-27 Serie A season?",
                "outcome": "Inter Milan",
                "yesPrice": 0.948,
                "yesBid": 0.925,
                "yesAsk": 0.971,
                "volumeUsd": 183.11678,
                "volume24hUsd": null,
                "liquidityUsd": 1683.69926,
                "closesAt": "2027-05-30T23:59:00Z",
                "url": "https://polymarket.com/event/serie-a-top-4-finishers-2026-27"
            },
            "kalshi": {
                "ticker": "KXSERIEATOP-27TOP4-ACM",
                "eventTicker": "KXSERIEATOP-27TOP4",
                "question": "Will Milan finish in the top 4 in the Serie A season?",
                "outcome": null,
                "yesPrice": 0.5,
                "yesBid": 0.46,
                "yesAsk": 0.54,
                "volumeContracts": 198.03,
                "volume24hContracts": 0,
                "openInterest": 132.87,
                "closesAt": "2027-06-14T02:00:00Z",
                "url": "https://kalshi.com/markets/kxserieatop"
            },
            "updatedAt": "2026-10-30T18:20:11.424Z"
        },
        {
            "id": "3886788~KXIPO-27-KRAKEN",
            "tier": "verified",
            "similarity": 1,
            "title": "Kraken IPO by December 31, 2027?",
            "outcome": "December 31, 2027",
            "category": "Financials",
            "gapPoints": 42.5,
            "higherYesOn": "polymarket",
            "edgePointsPreFee": 34,
            "edgeHow": "Buy Yes on Kalshi, buy No on Polymarket",
            "bothSidesTraded24h": false,
            "quoted": {
                "polymarket": true,
                "kalshi": true
            },
            "polymarket": {
                "id": "3886788",
                "question": "Kraken IPO by December 31, 2027?",
                "outcome": "December 31, 2027",
                "yesPrice": 0.83,
                "yesBid": 0.76,
                "yesAsk": 0.9,
                "volumeUsd": 2690.784334,
                "volume24hUsd": null,
                "liquidityUsd": 1081.5461,
                "closesAt": "2028-01-01T04:59:00Z",
                "url": "https://polymarket.com/event/kraken-ipo-in-2025"
            },
            "kalshi": {
                "ticker": "KXIPO-27-KRAKEN",
                "eventTicker": "KXIPO-27",
                "question": "Will Kraken IPO before Jan 1, 2028?",
                "outcome": null,
                "yesPrice": 0.405,
                "yesBid": 0.39,
                "yesAsk": 0.42,
                "volumeContracts": 80,
                "volume24hContracts": 0,
                "openInterest": 80,
                "closesAt": "2028-01-01T04:59:00Z",
                "url": "https://kalshi.com/markets/kxipo"
            },
            "updatedAt": "2026-10-30T18:20:11.424Z"
        },
        {
            "id": "6312580-o0~KXQSTARSTOTAL-26OCT30SADSHM-5",
            "tier": "verified",
            "similarity": 1,
            "notes": [
                "sports: total, same QAT1 game on 2026-10-30"
            ],
            "title": "Al Sadd SC vs. Al-Shamal: total points",
            "outcome": "Over 4.5",
            "category": "Sports",
            "gapPoints": 42,
            "higherYesOn": "kalshi",
            "edgePointsPreFee": 41,
            "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
            "bothSidesTraded24h": false,
            "quoted": {
                "polymarket": true,
                "kalshi": true
            },
            "game": {
                "league": "QAT1",
                "date": "2026-10-30",
                "type": "total",
                "line": 4.5,
                "startsAt": "2026-10-30T16:30:00.000Z"
            },
            "polymarket": {
                "id": "6312580-o0",
                "question": "Al Sadd SC vs. Al-Shamal: total points",
                "outcome": "Over 4.5",
                "yesPrice": 0.575,
                "yesBid": 0.57,
                "yesAsk": 0.58,
                "volumeUsd": 3126.01323,
                "volume24hUsd": 4656.019897,
                "liquidityUsd": 5744.3752,
                "closesAt": "2026-10-30T16:30:00.000Z",
                "url": "https://polymarket.com/event/qat1-sad-shm-2026-10-30-more-markets"
            },
            "kalshi": {
                "ticker": "KXQSTARSTOTAL-26OCT30SADSHM-5",
                "eventTicker": "KXQSTARSTOTAL-26OCT30SADSHM",
                "question": "Al Sadd vs Al-Shamal: Will over 4.5 goals be scored?",
                "outcome": null,
                "yesPrice": 0.995,
                "yesBid": 0.99,
                "yesAsk": null,
                "volumeContracts": 66228.31,
                "volume24hContracts": 62012.2,
                "openInterest": 34405.88,
                "closesAt": "2026-11-01T16:30:00Z",
                "url": "https://kalshi.com/markets/kxqstarstotal"
            },
            "updatedAt": "2026-10-30T18:20:11.424Z"
        },
        {
            "id": "4410905~KXUEFANLROUND-27FINAL-FRA",
            "tier": "verified",
            "similarity": 0.701,
            "title": "Will France host the 2027 UEFA Nations League Finals?",
            "outcome": "France",
            "category": "Sports",
            "gapPoints": 32.6,
            "higherYesOn": "kalshi",
            "edgePointsPreFee": 22.7,
            "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
            "bothSidesTraded24h": false,
            "quoted": {
                "polymarket": true,
                "kalshi": true
            },
            "polymarket": {
                "id": "4410905",
                "question": "Will France host the 2027 UEFA Nations League Finals?",
                "outcome": "France",
                "yesPrice": 0.0695,
                "yesBid": 0.036,
                "yesAsk": 0.103,
                "volumeUsd": 103,
                "volume24hUsd": null,
                "liquidityUsd": 316.92413,
                "closesAt": "2027-06-10T03:59:00Z",
                "url": "https://polymarket.com/event/uefa-nations-league-2027-finals-host"
            },
            "kalshi": {
                "ticker": "KXUEFANLROUND-27FINAL-FRA",
                "eventTicker": "KXUEFANLROUND-27FINAL",
                "question": "Will France qualify for the UEFA Nations League Final?",
                "outcome": null,
                "yesPrice": 0.395,
                "yesBid": 0.33,
                "yesAsk": 0.46,
                "volumeContracts": 96.48,
                "volume24hContracts": 0,
                "openInterest": 81.96,
                "closesAt": "2027-06-28T14:00:00Z",
                "url": "https://kalshi.com/markets/kxuefanlround"
            },
            "updatedAt": "2026-10-30T18:20:11.424Z"
        }
    ]
}
Same market on Polymarket and Kalshi — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37562/same+market+on+polymarket+and+kalshi?offset=Optionallimit=5' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Returns every open market on Polymarket and Kalshi in one consistent format: question, outcome, Yes bid, ask and mid price, volume, 24-hour volume, liquidity, category and closing date. Filter by keyword, platform, category, minimum volume and closing date. Sports game markets also include league, date, teams and line.
Endpoint ID: 37563
GET https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37563/all+open+markets+on+both+platforms
INPUT PARAMETERS

All open markets on both platforms — Endpoint Features

Object Description
q Optional Keywords, all must match
platform Optional polymarket or kalshi
category Optional e.g. Elections, Economics
minVolume Optional Minimum total volume
closesBefore Optional Date, e.g. 2026-12-31
sort Optional volume24h (default), volume or closes
limit Optional Rows to return, 1 to 50. Default 50
offset Optional Skip this many rows, for paging. Use nextOffset from the previous response

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

q
platform
category
minVolume
closesBefore
sort
limit
offset
API EXAMPLE RESPONSE
JSON
{
    "total": 207035,
    "returned": 5,
    "offset": 0,
    "nextOffset": 5,
    "searchMs": 1259,
    "databaseUpdatedAt": "2026-10-30T18:20:11.424Z",
    "markets": [
        {
            "platform": "kalshi",
            "id": "SENATETX-26-R",
            "eventId": "SENATETX-26",
            "seriesId": "SENATETX",
            "eventTitle": "Texas Senate winner?",
            "eventSubtitle": "In 2026",
            "question": "Will Republicans win the Senate race in Texas?",
            "outcome": "Ken Paxton",
            "category": "Elections",
            "yesBid": 0.28,
            "yesAsk": 0.29,
            "lastPrice": 0.29,
            "yesPrice": 0.285,
            "volume": 37981530.44,
            "volume24h": 3655943.62,
            "openInterest": 28719281.69,
            "closesAt": "2027-11-03T15:00:00Z",
            "expectedResolution": "2027-01-04T15:00:00Z",
            "url": "https://kalshi.com/markets/senatetx"
        },
        {
            "platform": "kalshi",
            "id": "CONTROLH-2026-R",
            "eventId": "CONTROLH-2026",
            "seriesId": "CONTROLH",
            "eventTitle": "Who will control the House?",
            "eventSubtitle": "In 2026",
            "question": "Will Republicans win the House in 2026?",
            "outcome": "Republican Party",
            "category": "Elections",
            "yesBid": 0.069,
            "yesAsk": 0.07,
            "lastPrice": 0.07,
            "yesPrice": 0.0695,
            "volume": 59160788.6,
            "volume24h": 2969930.24,
            "openInterest": 44628096.65,
            "closesAt": "2027-02-01T15:00:00Z",
            "expectedResolution": "2027-02-01T15:00:00Z",
            "url": "https://kalshi.com/markets/controlh"
        },
        {
            "platform": "kalshi",
            "id": "KXBALANCEPOWERCOMBO-27FEB-DR",
            "eventId": "KXBALANCEPOWERCOMBO-27FEB",
            "seriesId": "KXBALANCEPOWERCOMBO",
            "eventTitle": "2026 Midterms: Congress Balance of Power?",
            "eventSubtitle": "For Feb 2027",
            "question": "Will House Control be Democratic AND Senate Control be Republican for Feb 2027?",
            "outcome": "D-House, R-Senate",
            "category": "Elections",
            "yesBid": 0.26,
            "yesAsk": 0.27,
            "lastPrice": 0.27,
            "yesPrice": 0.265,
            "volume": 9961161.09,
            "volume24h": 2846174.67,
            "openInterest": 7367461.01,
            "closesAt": "2027-02-01T15:00:00Z",
            "expectedResolution": "2027-02-01T15:00:00Z",
            "url": "https://kalshi.com/markets/kxbalancepowercombo"
        },
        {
            "platform": "polymarket",
            "eventId": "1278826",
            "eventTitle": "Counter-Strike: MOUZ vs FURIA (BO3) - PGL Masters Bucharest Playoffs",
            "category": "Sports",
            "volume": 2204660.029359,
            "volume24h": 2222723.5893590013,
            "liquidity": 618299.06889,
            "closesAt": "2026-10-30T15:00:00.000Z",
            "url": "https://polymarket.com/event/cs2-mouz-furia-2026-10-30",
            "id": "6394905-o0",
            "question": "Counter-Strike: MOUZ vs FURIA (BO3)",
            "outcome": "MOUZ",
            "yesBid": null,
            "yesAsk": 0.001,
            "lastPrice": null,
            "yesPrice": 0.0005,
            "game": {
                "league": "cs2",
                "date": "2026-10-30",
                "gameKey": "cs2|mouz-furia|2026-10-30",
                "teams": [
                    {
                        "abbr": "MOUZ",
                        "name": "MOUZ"
                    },
                    {
                        "abbr": "FURIA",
                        "name": "FURIA"
                    }
                ],
                "type": "moneyline",
                "side": 0,
                "line": null
            }
        },
        {
            "platform": "polymarket",
            "eventId": "1278826",
            "eventTitle": "Counter-Strike: MOUZ vs FURIA (BO3) - PGL Masters Bucharest Playoffs",
            "category": "Sports",
            "volume": 2204660.029359,
            "volume24h": 2222723.5893590013,
            "liquidity": 618299.06889,
            "closesAt": "2026-10-30T15:00:00.000Z",
            "url": "https://polymarket.com/event/cs2-mouz-furia-2026-10-30",
            "id": "6394905-o1",
            "question": "Counter-Strike: MOUZ vs FURIA (BO3)",
            "outcome": "FURIA",
            "yesBid": 0.999,
            "yesAsk": null,
            "lastPrice": null,
            "yesPrice": 0.9995,
            "game": {
                "league": "cs2",
                "date": "2026-10-30",
                "gameKey": "cs2|mouz-furia|2026-10-30",
                "teams": [
                    {
                        "abbr": "MOUZ",
                        "name": "MOUZ"
                    },
                    {
                        "abbr": "FURIA",
                        "name": "FURIA"
                    }
                ],
                "type": "moneyline",
                "side": 1,
                "line": null
            }
        }
    ]
}
All open markets on both platforms — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37563/all+open+markets+on+both+platforms?limit=5&offset=Optional' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Returns the price gaps that recently opened between Polymarket and Kalshi, newest first. For each matched market it shows when the gap opened, the previous gap, the current gap, the pre-fee edge and the prices on both platforms. Check it every few minutes to catch new gaps as they appear.
Endpoint ID: 37564
GET https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37564/gaps+that+just+opened
INPUT PARAMETERS

Gaps that just opened — Endpoint Features

Object Description
minGap Optional Alert when the gap is at least this many points. Default 3
hours Optional Only gaps that opened within this many hours. Default 6, max 72
newPairs Optional Include pairs first seen in the window (default true)
q Optional Keywords, all must match
category Optional e.g. Elections, Sports
sports Optional only or exclude
league Optional e.g. nba,nfl
type Optional moneyline, spread or total
minVolume Optional Minimum volume on both sides
limit Optional Rows to return, 1 to 50. Default 50
offset Optional Skip this many rows, for paging. Use nextOffset from the previous response

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

minGap
hours
newPairs
q
category
sports
league
type
minVolume
limit
offset
API EXAMPLE RESPONSE
JSON
{
    "total": 366,
    "returned": 5,
    "offset": 0,
    "nextOffset": 5,
    "searchMs": 124,
    "databaseUpdatedAt": "2026-10-30T18:20:11.424Z",
    "alerts": [
        {
            "pairId": "6312568-o0~KXQSTARSSPREAD-26OCT30SADSHM-SAD3",
            "openedAt": "2026-10-30T18:20:00.000Z",
            "newPair": false,
            "previousGapPoints": 0.5,
            "gapPoints": 47.5,
            "edgePointsPreFee": 46,
            "pair": {
                "id": "6312568-o0~KXQSTARSSPREAD-26OCT30SADSHM-SAD3",
                "tier": "verified",
                "similarity": 1,
                "notes": [
                    "sports: spread, same QAT1 game on 2026-10-30"
                ],
                "title": "Al Sadd SC vs. Al-Shamal: spread",
                "outcome": "Al Sadd SC (-2.5)",
                "category": "Sports",
                "gapPoints": 47.5,
                "higherYesOn": "kalshi",
                "edgePointsPreFee": 46,
                "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
                "bothSidesTraded24h": true,
                "quoted": {
                    "polymarket": true,
                    "kalshi": true
                },
                "game": {
                    "league": "QAT1",
                    "date": "2026-10-30",
                    "type": "spread",
                    "line": -2.5,
                    "startsAt": "2026-10-30T16:30:00.000Z"
                },
                "polymarket": {
                    "id": "6312568-o0",
                    "question": "Al Sadd SC vs. Al-Shamal: spread",
                    "outcome": "Al Sadd SC (-2.5)",
                    "yesPrice": 0.43,
                    "yesBid": 0.42,
                    "yesAsk": 0.44,
                    "volumeUsd": 3412.2269939999996,
                    "volume24hUsd": 3428.2269939999996,
                    "liquidityUsd": 5395.8272,
                    "closesAt": "2026-10-30T16:30:00.000Z",
                    "url": "https://polymarket.com/event/qat1-sad-shm-2026-10-30-more-markets"
                },
                "kalshi": {
                    "ticker": "KXQSTARSSPREAD-26OCT30SADSHM-SAD3",
                    "eventTicker": "KXQSTARSSPREAD-26OCT30SADSHM",
                    "question": "Al Sadd vs Al-Shamal: Al Sadd wins by more than 2.5 goals?",
                    "outcome": null,
                    "yesPrice": 0.905,
                    "yesBid": 0.9,
                    "yesAsk": 0.91,
                    "volumeContracts": 9530.54,
                    "volume24hContracts": 7139.07,
                    "openInterest": 5535.65,
                    "closesAt": "2026-11-01T16:30:00Z",
                    "url": "https://kalshi.com/markets/kxqstarsspread"
                },
                "updatedAt": "2026-10-30T18:20:11.424Z"
            }
        },
        {
            "pairId": "6226168~KXTFF1LIGGAME-26OCT30ESEKEC-ESE",
            "openedAt": "2026-10-30T18:20:00.000Z",
            "newPair": false,
            "previousGapPoints": 1,
            "gapPoints": 29.5,
            "edgePointsPreFee": 28,
            "pair": {
                "id": "6226168~KXTFF1LIGGAME-26OCT30ESEKEC-ESE",
                "tier": "verified",
                "similarity": 1,
                "notes": [
                    "sports: moneyline, same TUR2 game on 2026-10-30"
                ],
                "title": "Will Esenler Erokspor win on 2026-10-30?",
                "outcome": "Esenler Erokspor",
                "category": "Sports",
                "gapPoints": 29.5,
                "higherYesOn": "kalshi",
                "edgePointsPreFee": 28,
                "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
                "bothSidesTraded24h": true,
                "quoted": {
                    "polymarket": true,
                    "kalshi": true
                },
                "game": {
                    "league": "TUR2",
                    "date": "2026-10-30",
                    "type": "moneyline",
                    "line": null,
                    "startsAt": "2026-10-30T17:00:00.000Z"
                },
                "polymarket": {
                    "id": "6226168",
                    "question": "Will Esenler Erokspor win on 2026-10-30?",
                    "outcome": "Esenler Erokspor",
                    "yesPrice": 0.48,
                    "yesBid": 0.47,
                    "yesAsk": 0.49,
                    "volumeUsd": 4069.167626,
                    "volume24hUsd": 4015.106809,
                    "liquidityUsd": 7039.8365,
                    "closesAt": "2026-10-30T17:00:00.000Z",
                    "url": "https://polymarket.com/event/tur2-ese-kec-2026-10-30"
                },
                "kalshi": {
                    "ticker": "KXTFF1LIGGAME-26OCT30ESEKEC-ESE",
                    "eventTicker": "KXTFF1LIGGAME-26OCT30ESEKEC",
                    "question": "Esenler vs Keciorengucu: Esenler wins",
                    "outcome": null,
                    "yesPrice": 0.775,
                    "yesBid": 0.77,
                    "yesAsk": 0.78,
                    "volumeContracts": 20141.18,
                    "volume24hContracts": 13797.33,
                    "openInterest": 13461.57,
                    "closesAt": "2026-11-01T17:00:00Z",
                    "url": "https://kalshi.com/markets/kxtff1liggame"
                },
                "updatedAt": "2026-10-30T18:20:11.424Z"
            }
        },
        {
            "pairId": "5881028-o0~KXSUPERLIGSPREAD-26OCT30KONGAL-GAL4",
            "openedAt": "2026-10-30T18:20:00.000Z",
            "newPair": false,
            "previousGapPoints": 0.5,
            "gapPoints": 29,
            "edgePointsPreFee": 23,
            "pair": {
                "id": "5881028-o0~KXSUPERLIGSPREAD-26OCT30KONGAL-GAL4",
                "tier": "verified",
                "similarity": 1,
                "notes": [
                    "sports: spread, same TUR game on 2026-10-30"
                ],
                "title": "Konyaspor vs. Galatasaray SK: spread",
                "outcome": "Galatasaray SK (-3.5)",
                "category": "Sports",
                "gapPoints": 29,
                "higherYesOn": "kalshi",
                "edgePointsPreFee": 23,
                "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
                "bothSidesTraded24h": true,
                "quoted": {
                    "polymarket": true,
                    "kalshi": true
                },
                "game": {
                    "league": "TUR",
                    "date": "2026-10-30",
                    "type": "spread",
                    "line": -3.5,
                    "startsAt": "2026-10-30T17:00:00.000Z"
                },
                "polymarket": {
                    "id": "5881028-o0",
                    "question": "Konyaspor vs. Galatasaray SK: spread",
                    "outcome": "Galatasaray SK (-3.5)",
                    "yesPrice": 0.47,
                    "yesBid": 0.46,
                    "yesAsk": 0.48,
                    "volumeUsd": 3941.957926,
                    "volume24hUsd": 3941.957926,
                    "liquidityUsd": 11400.8168,
                    "closesAt": "2026-10-30T17:00:00.000Z",
                    "url": "https://polymarket.com/event/tur-kon-gal-2026-10-30-more-markets"
                },
                "kalshi": {
                    "ticker": "KXSUPERLIGSPREAD-26OCT30KONGAL-GAL4",
                    "eventTicker": "KXSUPERLIGSPREAD-26OCT30KONGAL",
                    "question": "Konyaspor vs Galatasaray: Galatasaray wins by more than 3.5 goals?",
                    "outcome": null,
                    "yesPrice": 0.76,
                    "yesBid": 0.71,
                    "yesAsk": 0.81,
                    "volumeContracts": 14436.97,
                    "volume24hContracts": 10799.59,
                    "openInterest": 11760.82,
                    "closesAt": "2026-11-01T17:00:00Z",
                    "url": "https://kalshi.com/markets/kxsuperligspread"
                },
                "updatedAt": "2026-10-30T18:20:11.424Z"
            }
        },
        {
            "pairId": "6227833-o0~KXTFF1LIGTOTAL-26OCT30ESEKEC-4",
            "openedAt": "2026-10-30T18:20:00.000Z",
            "newPair": false,
            "previousGapPoints": 0.5,
            "gapPoints": 28.5,
            "edgePointsPreFee": 27,
            "pair": {
                "id": "6227833-o0~KXTFF1LIGTOTAL-26OCT30ESEKEC-4",
                "tier": "verified",
                "similarity": 1,
                "notes": [
                    "sports: total, same TUR2 game on 2026-10-30"
                ],
                "title": "Esenler Erokspor vs. Ankara Keciorengucu: total points",
                "outcome": "Over 3.5",
                "category": "Sports",
                "gapPoints": 28.5,
                "higherYesOn": "kalshi",
                "edgePointsPreFee": 27,
                "edgeHow": "Buy Yes on Polymarket, buy No on Kalshi",
                "bothSidesTraded24h": true,
                "quoted": {
                    "polymarket": true,
                    "kalshi": true
                },
                "game": {
                    "league": "TUR2",
                    "date": "2026-10-30",
                    "type": "total",
                    "line": 3.5
                }
            }
        }
    ],
    "_note": "Response truncated for documentation purposes"
}
Gaps that just opened — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37564/gaps+that+just+opened?minGap=3&hours=24&limit=5&offset=Optional' --header 'Authorization: Bearer YOUR_API_KEY' 


    
Request
Returns the price history of one matched market: the Polymarket and Kalshi Yes prices and the gap between them at each refresh, for up to 30 days. Points are hourly for the last two days and every three hours before that. Get pair ids from the pairs or alerts endpoints.
Endpoint ID: 37565
GET https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37565/price+history+of+one+pair
INPUT PARAMETERS

Price history of one pair — Endpoint Features

Object Description
pairId Required Pair id from /pairs, e.g. 516706~KXALIENS-27

Free test requests remaining: 3 of 3.


INPUT PARAMETERS

pairId
API EXAMPLE RESPONSE
JSON
{
    "pairId": "5651536~KXNBAMIMP-27-RROLLINS13",
    "pair": {
        "id": "5651536~KXNBAMIMP-27-RROLLINS13",
        "tier": "verified",
        "similarity": 0.71,
        "title": "Will Ryan Rollins win the 2026-27 NBA Most Improved Player?",
        "outcome": "Ryan Rollins",
        "category": "Sports",
        "gapPoints": 3,
        "higherYesOn": "polymarket",
        "edgePointsPreFee": 0,
        "edgeHow": null,
        "bothSidesTraded24h": false,
        "quoted": {
            "polymarket": true,
            "kalshi": true
        },
        "polymarket": {
            "id": "5651536",
            "question": "Will Ryan Rollins win the 2026-27 NBA Most Improved Player?",
            "outcome": "Ryan Rollins",
            "yesPrice": 0.0345,
            "yesBid": 0.003,
            "yesAsk": 0.066,
            "volumeUsd": 59.4,
            "volume24hUsd": null,
            "liquidityUsd": 55.51376,
            "closesAt": "2027-07-01T03:59:00Z",
            "url": "https://polymarket.com/event/nba-2026-27-most-improved-player"
        },
        "kalshi": {
            "ticker": "KXNBAMIMP-27-RROLLINS13",
            "eventTicker": "KXNBAMIMP-27",
            "question": "Pro Basketball Most Improved Player: Ryan Rollins",
            "outcome": null,
            "yesPrice": 0.005,
            "yesBid": null,
            "yesAsk": 0.01,
            "volumeContracts": 448.1,
            "volume24hContracts": 0,
            "openInterest": 427.72,
            "closesAt": "2027-07-08T14:00:00Z",
            "url": "https://kalshi.com/markets/kxnbamimp"
        },
        "updatedAt": "2026-10-30T18:20:11.424Z"
    },
    "points": [
        {
            "time": "2026-10-30T17:19:00Z",
            "polymarketYes": 0.434,
            "kalshiYes": 0.02,
            "gapPoints": 41.4
        },
        {
            "time": "2026-10-30T17:34:00Z",
            "polymarketYes": 0.0345,
            "kalshiYes": 0.005,
            "gapPoints": 3
        },
        {
            "time": "2026-10-30T17:46:00Z",
            "polymarketYes": 0.0345,
            "kalshiYes": 0.005,
            "gapPoints": 3
        },
        {
            "time": "2026-10-30T18:20:00Z",
            "polymarketYes": 0.0345,
            "kalshiYes": 0.005,
            "gapPoints": 3
        }
    ]
}
Price history of one pair — CODE SNIPPETS

curl --location --request GET 'https://zylalabs.com/api/14618/polymarket+vs+kalshi+api/37565/price+history+of+one+pair?pairId=5651536~KXNBAMIMP-27-RROLLINS13' --header 'Authorization: Bearer YOUR_API_KEY' 


    

API Access Key & Authentication

After signing up, every developer is assigned a personal API access key, a unique combination of letters and digits provided to access to our API endpoint. To authenticate with the Polymarket vs Kalshi API simply include your bearer token in the Authorization header.

Headers
Header Description
Authorization Required Should be Bearer access_key. See "Your API Access Key" above when you are subscribed.

No long-term commitment. Upgrade, downgrade, or cancel anytime. Free Trial includes up to 50 requests.

(Save 2 months with annual billing 🎉)

Starts at
$10,000/Year


  • Custom Volume
  • Custom Rate Limit
  • Specialized Customer Support
  • Real-Time API Monitoring

Overview

Same prediction markets on Polymarket and Kalshi, matched and verified, with both prices, price gaps, and alerts when new markets open. Covers elections, economics, and sports, including games, spreads, and totals.

 
 

Polymarket vs Kalshi API FAQs

Each question is checked so the names, numbers, thresholds and deadlines agree on both platforms, and words like "not", "before" or a party name must appear on both sides. Sports games are matched by league, date and both teams, then each winner, spread and total line is paired with the identical line on the other platform. Close matches that fail a check are returned as candidates with the reason in notes.

The database refreshes every hour, about 20 minutes past the hour, from the public market data of both platforms. Every response includes databaseUpdatedAt, so you always know the exact time of the prices you received.

GapPoints is the difference between the two Yes prices, in cents per one dollar contract. edgePointsPreFee is what buying Yes on the cheaper platform and No on the other would lock in at the best quoted prices, before trading fees. Gaps are only reported when both platforms show a live two-sided quote, so empty order books never show up as fake opportunities.

More than 100 leagues, including NFL, NBA, NHL, college football and basketball, MLS, Premier League, La Liga, Serie A, Bundesliga, Champions League and major esports. Use the league parameter with codes like nba, nfl, nhl, cfb, cbb or epl, and the type parameter for moneyline, spread or total. Games drop out of the pairs once they start, because in-play prices change too fast for hourly data.

Call the alerts endpoint every few minutes. It returns matched markets that are now at least minGap points apart but were closer within the last hours window, newest first, with the time the gap opened and the previous and current gap. Set newPairs to false to skip markets that were only just listed.

No to both. This is market data only, built from the public market data both platforms publish, and it is not affiliated with either one. Resolution rules can differ in the details between the two platforms, so read both before trading.

Yes. For NFL, college football, NBA, NHL and college basketball games, each matched pair also includes the same bet at Pinnacle, DraftKings, FanDuel, BetMGM, Caesars, bet365 and BetRivers when they offer that exact line: American and decimal odds, the no-vig probability, the books' average fair price (sportsbookFairPrice) and how many points Polymarket and Kalshi sit above or below it (vsSportsbook).

General FAQs

To obtain your API key, first sign in to your account and navigate to the API you want to use. From the API's Pricing section, choose a plan and complete the subscription process. Once subscribed, return to the API page and you will see your API Access Key displayed at the top of the documentation page. You can use this key to authenticate your requests.

You can’t switch APIs during the free trial. If you subscribe to a different API, your trial will end and the new subscription will start as a paid plan.

The free trial lasts for 7 days and allows you to make up to 50 API requests.

No, the free trial is available only once, so we recommend using it on the API that interests you the most. Most of our APIs offer a free trial, but some may not include this option.

Yes. If the API offers a free trial, you will see a "Free 7-Day Trial" option in its Pricing section. The trial lasts for 7 days and allows up to 50 API requests, enabling you to evaluate the API before subscribing to a paid plan.

Zyla API Hub is like a big store for APIs, where you can find thousands of them all in one place. We also offer dedicated support and real-time monitoring of all APIs. Once you sign up, you can pick and choose which APIs you want to use. Just remember, each API needs its own subscription. But if you subscribe to multiple ones, you'll use the same key for all of them, making things easier for you.

Prices are listed in USD (United States Dollar), EUR (Euro), CAD (Canadian Dollar), AUD (Australian Dollar), and GBP (British Pound). We accept all major debit and credit cards. Our payment system uses the latest security technology and is powered by Stripe, one of the world's most reliable payment companies. If you have any trouble paying by card, just contact us at [email protected]

Additionally, if you already have an active subscription in any of these currencies (USD, EUR, CAD, AUD, GBP), that currency will remain for subsequent subscriptions. You can change the currency at any time as long as you don't have any active subscriptions.
The local currency shown on the pricing page is based on the country of your IP address and is provided for reference only. The actual prices are in USD (United States Dollar). When you make a payment, the charge will appear on your card statement in USD, even if you see the equivalent amount in your local currency on our website. This means you cannot pay directly with your local currency.
Occasionally, a bank may decline the charge due to its fraud protection settings. We suggest reaching out to your bank initially to check if they are blocking our charges. Also, you can access the Billing Portal and change the card associated to make the payment. If these does not work and you need further assistance, please contact our team at [email protected]
Prices are determined by a recurring monthly or yearly subscription, depending on the chosen plan.
API calls are deducted from your plan based on successful requests. Each plan comes with a specific number of calls that you can make per month. Only successful calls, indicated by a Status 200 response, will be counted against your total. This ensures that failed or incomplete requests do not impact your monthly quota.
Zyla API Hub works on a recurring monthly subscription system. Your billing cycle will start the day you purchase one of the paid plans, and it will renew the same day of the next month. So be aware to cancel your subscription beforehand if you want to avoid future charges.
To upgrade your current subscription plan, simply go to the pricing page of the API and select the plan you want to upgrade to. The upgrade will be instant, allowing you to immediately enjoy the features of the new plan. Please note that any remaining calls from your previous plan will not be carried over to the new plan, so be aware of this when upgrading. You will be charged the full amount of the new plan.
To check how many API calls you have left for the current month, refer to the 'X-Zyla-API-Calls-Monthly-Remaining' field in the response header. For example, if your plan allows 1,000 requests per month and you've used 100, this field in the response header will indicate 900 remaining calls.

You can monitor your API usage through the response headers included with every request:

x-zyla-api-calls-monthly-used: Shows the total number of API requests you have used during the current billing period.
x-zyla-api-calls-monthly-remaining: Shows the number of API requests you have remaining for the current billing period.

The 'X-Zyla-RateLimit-Reset' header shows the number of seconds until your rate limit resets. This tells you when your request count will start fresh. For example, if it displays 3,600, it means 3,600 seconds are left until the limit resets.

Yes, you can cancel your subscription at any time. Simply go to the Pricing section of the API you're subscribed to and click the "Unsubscribe" button.

Please note that upgrades, downgrades, and cancellations take effect immediately. Once your subscription is canceled, access to the service will end immediately, regardless of any remaining API calls in your quota.

After 7 days, you will be charged the full amount for the plan you were subscribed to during the trial. Therefore, it's important to cancel before the trial period ends. Refund requests for forgetting to cancel on time are not accepted.
When you subscribe to an API free trial, you can make up to 50 API calls. If you wish to make additional API calls beyond this limit, the API will prompt you to perform an "Start Your Paid Plan." You can find the "Start Your Paid Plan" button in your profile under Subscription -> Choose the API you are subscribed to -> Pricing tab.
You can contact us through our chat channel to receive immediate assistance. We are always online from 8 am to 5 pm (EST). If you reach us after that time, we will get back to you as soon as possible. Additionally, you can contact us via email at [email protected]

Please have a look at our Refund Policy: https://zylalabs.com/terms#refund


Related APIs