Betano CZ Data API

Betano CZ API for Czech Pre-Match, Live & Results Data

Access Betano's Czech sportsbook through one API — the Czech 1. liga and Extraliga, the Premier League, Serie A, LaLiga, the Bundesliga, Ligue 1, the Brasileirão and the MLS, the NBA and the Euroleague, the NHL, the NFL, ATP and WTA tennis, Counter-Strike and more across 22 sports. Betano (CZ) carries the full Betano catalogue: the top soccer leagues run to 590–724 markets in the two days before kick-off, with goalscorers, cards, corners, shots, offsides and fouls, every market has a canonical type, and the event, market and selection IDs are the same as on Betano (DE). Push-fed in-play boards, a 30-day results archive, REST and WebSocket, one API key.

What a Betano CZ API Response Looks Like

GET /api/betano-cz/soccer/events/92434471
{
  "data": {
    "eventId": "92434471",
    "away": "1. FC Slovacko",
    "country": "Czechia",
    "home": "AC Sparta Praha",
    "league": "1. liga",
    "live": false,
    "markets": [
      {
        "canonicalMarket": "MATCH_RESULT",
        "rawName": "Match Result",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "HOME",
            "rawName": "1",
            "odds": 1.3,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049744"
          },
          {
            "canonicalOutcome": "DRAW",
            "rawName": "X",
            "odds": 5.2,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049745"
          },
          {
            "canonicalOutcome": "AWAY",
            "rawName": "2",
            "odds": 9.25,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049746"
          }
        ],
        "marketId": "2957572576"
      },
      {
        "canonicalMarket": "DOUBLE_CHANCE",
        "rawName": "Double Chance",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "HOME_DRAW",
            "rawName": "AC Sparta Praha or Draw",
            "odds": 1.08,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049760"
          },
          {
            "canonicalOutcome": "DRAW_AWAY",
            "rawName": "1. FC Slovacko or Draw",
            "odds": 3.6,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049761"
          },
          {
            "canonicalOutcome": "HOME_AWAY",
            "rawName": "AC Sparta Praha or 1. FC Slovacko",
            "odds": 1.15,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049762"
          }
        ],
        "marketId": "2957572581"
      },
      {
        "canonicalMarket": "OVER_UNDER",
        "rawName": "Over/Under Total Goals",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 0.5",
            "odds": 1.03,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566883",
            "line": 0.5
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 0.5",
            "odds": 12.5,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566884",
            "line": 0.5
          },
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 1.5",
            "odds": 1.16,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566877",
            "line": 1.5
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 1.5",
            "odds": 5.3,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566878",
            "line": 1.5
          }
        ],
        "marketId": "3018901965"
      },
      {
        "canonicalMarket": "BOTH_TEAMS_TO_SCORE",
        "rawName": "Both Teams to Score",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "YES",
            "rawName": "Yes",
            "odds": 1.82,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049771"
          },
          {
            "canonicalOutcome": "NO",
            "rawName": "No",
            "odds": 1.93,
            "isActive": true,
            "suspended": false,
            "selectionId": "10407049772"
          }
        ],
        "marketId": "2957572585"
      },
      {
        "canonicalMarket": "ASIAN_HANDICAP",
        "rawName": "Asian Handicap (Current Score 0 - 0)",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "HOME",
            "rawName": "AC Sparta Praha -2.25",
            "odds": 2.67,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566949",
            "line": -2.25
          },
          {
            "canonicalOutcome": "AWAY",
            "rawName": "1. FC Slovacko +2.25",
            "odds": 1.47,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566950",
            "line": 2.25
          },
          {
            "canonicalOutcome": "HOME",
            "rawName": "AC Sparta Praha -2.0",
            "odds": 2.37,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566947",
            "line": -2
          },
          {
            "canonicalOutcome": "AWAY",
            "rawName": "1. FC Slovacko +2.0",
            "odds": 1.6,
            "isActive": true,
            "suspended": false,
            "selectionId": "10647566948",
            "line": 2
          }
        ],
        "marketId": "3018901998"
      },
      {
        "canonicalMarket": "CORNERS_OVER_UNDER",
        "rawName": "Over/Under Corners",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 5.5",
            "odds": 1.04,
            "isActive": true,
            "suspended": false,
            "selectionId": "10681589649",
            "line": 5.5
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 5.5",
            "odds": 9,
            "isActive": true,
            "suspended": false,
            "selectionId": "10681589650",
            "line": 5.5
          },
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 6.5",
            "odds": 1.1,
            "isActive": true,
            "suspended": false,
            "selectionId": "10681589643",
            "line": 6.5
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 6.5",
            "odds": 6.3,
            "isActive": true,
            "suspended": false,
            "selectionId": "10681589644",
            "line": 6.5
          }
        ],
        "marketId": "3027622396"
      },
      {
        "canonicalMarket": "ANYTIME_GOALSCORER",
        "rawName": "Score Anytime",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "OTHER",
            "rawName": "Jonatan Brunes (AC Sparta Praha)",
            "odds": 1.82,
            "isActive": true,
            "suspended": false,
            "selectionId": "10674763383"
          },
          {
            "canonicalOutcome": "OTHER",
            "rawName": "Matyas Vojta (AC Sparta Praha)",
            "odds": 1.82,
            "isActive": true,
            "suspended": false,
            "selectionId": "10674763403"
          },
          {
            "canonicalOutcome": "OTHER",
            "rawName": "Ebrima Singhateh (AC Sparta Praha)",
            "odds": 2.1,
            "isActive": true,
            "suspended": false,
            "selectionId": "10674763385"
          }
        ],
        "marketId": "2957572639"
      },
      {
        "canonicalMarket": "CARDS_OVER_UNDER",
        "rawName": "Total Cards Over/Under",
        "period": "FULL_TIME",
        "isActive": true,
        "suspended": false,
        "selections": [
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 2.5",
            "odds": 1.32,
            "isActive": true,
            "suspended": false,
            "selectionId": "10688517925",
            "line": 2.5
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 2.5",
            "odds": 3.2,
            "isActive": true,
            "suspended": false,
            "selectionId": "10688517926",
            "line": 2.5
          },
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 3.5",
            "odds": 1.72,
            "isActive": true,
            "suspended": false,
            "selectionId": "10679836227",
            "line": 3.5
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 3.5",
            "odds": 2.05,
            "isActive": true,
            "suspended": false,
            "selectionId": "10679836228",
            "line": 3.5
          }
        ],
        "marketId": "3029461505"
      }
    ],
    "slug": "/en/match-odds/ac-sparta-praha-1-fc-slovacko/92434471/",
    "sport": "soccer",
    "startTime": "2026-10-25T14:00:00.000Z",
    "suspended": false,
    "updatedAt": "2026-10-24T21:33:05.725Z"
  }
}

In-Play — Score, Clock, Cards & Incidents

GET /api/betano-cz/live-events?sport=soccer&limit=1
{
  "total": 70,
  "page": 1,
  "limit": 1,
  "totalPages": 70,
  "hasNextPage": true,
  "hasPrevPage": false,
  "sport": "soccer",
  "events": [
    {
      "eventId": "90124357",
      "away": "Defensa y Justicia",
      "country": "Argentina",
      "home": "CA Talleres de Cordoba",
      "league": "Liga Profesional",
      "markets": [
        {
          "canonicalMarket": "MATCH_RESULT",
          "rawName": "Match Result",
          "period": "FULL_TIME",
          "isActive": true,
          "suspended": false,
          "selections": [
            {
              "canonicalOutcome": "HOME",
              "rawName": "CA Talleres de Cordoba",
              "odds": 3.9,
              "isActive": true,
              "suspended": false,
              "selectionId": "10124267645"
            },
            {
              "canonicalOutcome": "DRAW",
              "rawName": "Draw",
              "odds": 1.62,
              "isActive": true,
              "suspended": false,
              "selectionId": "10124267646"
            },
            {
              "canonicalOutcome": "AWAY",
              "rawName": "Defensa y Justicia",
              "odds": 5.2,
              "isActive": true,
              "suspended": false,
              "selectionId": "10124267647"
            }
          ],
          "marketId": "2887725247"
        },
        {
          "canonicalMarket": "OVER_UNDER",
          "rawName": "Over/Under Total Goals",
          "period": "FULL_TIME",
          "isActive": true,
          "suspended": false,
          "selections": [
            {
              "canonicalOutcome": "OVER",
              "rawName": "Over",
              "odds": 2.02,
              "isActive": true,
              "suspended": false,
              "selectionId": "10602168882",
              "line": 2.5
            },
            {
              "canonicalOutcome": "UNDER",
              "rawName": "Under",
              "odds": 1.7,
              "isActive": true,
              "suspended": false,
              "selectionId": "10602168883",
              "line": 2.5
            },
            {
              "canonicalOutcome": "OVER",
              "rawName": "Over",
              "odds": 6.2,
              "isActive": true,
              "suspended": false,
              "selectionId": "10602168886",
              "line": 3.5
            },
            {
              "canonicalOutcome": "UNDER",
              "rawName": "Under",
              "odds": 1.09,
              "isActive": true,
              "suspended": false,
              "selectionId": "10602168887",
              "line": 3.5
            }
          ],
          "marketId": "3007142020"
        },
        {
          "canonicalMarket": "BOTH_TEAMS_TO_SCORE",
          "rawName": "Both Teams to Score in Second Half",
          "period": "SECOND_HALF",
          "isActive": true,
          "suspended": false,
          "selections": [
            {
              "canonicalOutcome": "YES",
              "rawName": "Yes",
              "odds": 3.1,
              "isActive": true,
              "suspended": false,
              "selectionId": "10124268027"
            },
            {
              "canonicalOutcome": "NO",
              "rawName": "No",
              "odds": 1.34,
              "isActive": true,
              "suspended": false,
              "selectionId": "10124268028"
            }
          ],
          "marketId": "2887725366"
        }
      ],
      "matchClock": {
        "minute": 76,
        "second": 37,
        "running": true
      },
      "moreInfo": {
        "incidents": [
          {
            "description": "Match started",
            "type": "EBEG"
          },
          {
            "description": "1-0 CA Talleres de Cordoba Agustin Alvarez Martinez (with Shot)",
            "time": "32'",
            "type": "GOAL",
            "teamSide": 0
          },
          {
            "description": "1st Yellow Card: CA Talleres de Cordoba (Roman Riquelme)",
            "time": "42'",
            "type": "YELL",
            "teamSide": 0
          },
          {
            "description": "1-1 Defensa y Justicia Leandro Fernandez (with Shot)",
            "time": "47'",
            "type": "GOAL",
            "teamSide": 1
          }
        ],
        "betradarMatchId": 73265448,
        "totalMarketsAvailable": 108
      },
      "score": {
        "home": "1",
        "away": "1"
      },
      "slug": "/en/live/ca-talleres-de-cordoba-defensa-y-justicia/90124357/",
      "sport": "soccer",
      "startTime": "2026-10-24T20:00:00.000Z",
      "updatedAt": "2026-10-24T21:35:00.814Z",
      "statistics": {
        "football": {
          "home": {
            "yellowCards": 2,
            "redCards": 0,
            "corners": 6
          },
          "away": {
            "yellowCards": 1,
            "redCards": 0,
            "corners": 3
          }
        }
      }
    }
  ]
}

Results — The Last Board State with the Incident Feed

GET /api/betano-cz/results?sport=soccer&league=1.%20liga&country=Czechia&limit=1
{
  "total": 4,
  "page": 1,
  "limit": 1,
  "totalPages": 4,
  "hasNextPage": true,
  "hasPrevPage": false,
  "results": [
    {
      "eventId": "92434530",
      "away": "FK Mlada Boleslav",
      "country": "Czechia",
      "home": "SK Slavia Praha",
      "league": "1. liga",
      "matchClock": {
        "minute": 90,
        "second": 0,
        "running": false
      },
      "moreInfo": {
        "incidents": [
          {
            "description": "Match started",
            "type": "EBEG"
          },
          {
            "description": "0-1 FK Mlada Boleslav Martin Subert (with Shot)",
            "time": "15'",
            "type": "GOAL",
            "teamSide": 1
          },
          {
            "description": "1-1 SK Slavia Praha Mojmír Chytil (with Shot)",
            "time": "86'",
            "type": "GOAL",
            "teamSide": 0
          },
          {
            "description": "Ended",
            "type": "EEND"
          }
        ],
        "betradarMatchId": 72608036,
        "totalMarketsAvailable": 1
      },
      "score": {
        "home": "1",
        "away": "1"
      },
      "slug": "/en/live/sk-slavia-praha-fk-mlada-boleslav/92434530/",
      "sport": "soccer",
      "startTime": "2026-10-24T16:00:00.000Z",
      "updatedAt": "2026-10-24T17:57:19.206Z",
      "statistics": {
        "football": {
          "home": {
            "yellowCards": 1,
            "redCards": 0,
            "corners": 11
          },
          "away": {
            "yellowCards": 1,
            "redCards": 0,
            "corners": 5
          }
        }
      }
    }
  ]
}

Why Use PulseScore for Betano CZ Data

Up to 724 Markets a Match

Betano opens its full board about two days before kick-off: Serie A, the Premier League, Ligue 1, LaLiga and the Bundesliga run 590 to 724 markets a match, the Czech 1. liga 428 to 479, with anytime, first and last goalscorer, 2+ and hat-trick markets, cards, corners, shots, offsides and fouls.

The Same IDs as Betano DE

Betano runs one catalogue behind its brands: every soccer fixture Betano (DE) lists is on Betano (CZ) under the same eventId and team names, with the same marketId and selectionId on shared markets — Betano (CZ) just lists more fixtures and about three times the markets.

Canonical Types on a Huge Board

Fifty canonical market types on soccer, each ladder in one market with the line on every selection and handicaps signed per side. Combos, minute windows and boosts keep Betano's English name as OTHER, and an Asian total's repeated legs are split off with moreInfo.duplicateOf, so no line is counted twice.

Push-Fed In-Play Boards

In-play prices come from Betano's push feed, up to 536 markets on a soccer match, with the score, the clock to the second, cards and corners, per-set scores on tennis, volleyball and table tennis, the Betradar match ID and Betano's own incident feed of goals, cards, corners and substitutions.

A 30-Day Results Archive

Every match Betano (CZ) takes in play is kept for 30 days with its last score, clock, statistics and the full incident list ending in Ended — 15 sports, filterable by sport, league, country and team.

REST Plus WebSocket Streaming

Poll the REST endpoints for prematch boards, leagues and results, or subscribe over WebSocket for in-play pushes roughly every second. All 22 prematch sports are subscribable on PRO, MAX and ULTRA plans, and one PulseScore API key works across Betano (CZ) and every other bookmaker on the platform.

Frequently Asked Questions

What data does the Betano CZ API provide?

PulseScore provides pre-match and live odds and a 30-day results archive from Betano's Czech sportsbook (betano.cz, read from its English board) across 22 sports. Events carry normalized market data with canonical market types and outcomes, decimal odds, the league and country, Betano's numeric event, market and selection IDs and the betano.cz page path; live events add the score, match clock, statistics, the Betradar match ID and Betano's incident feed.

Which sports are covered?

Twenty-two: Soccer, Tennis, Basketball, Ice Hockey, American Football, Handball, Volleyball, Esports, Baseball, Rugby Union, Rugby League, Futsal, Cricket, Darts, Boxing, MMA, Snooker, Golf, Formula 1, Motorsports, Cycling and Lacrosse. Golf, snooker, motorsports and lacrosse are outrights only, Formula 1 and cycling list races, and table tennis appears in play only. The smaller sports carry a handful of events at a time, so call /sport-availability for what is on right now.

How deep are the Betano CZ soccer boards?

Very deep close to kick-off: in the two days before a match the top flights carry 590 to 724 markets (Serie A 677–723, the Premier League 643–689, LaLiga 609–653, the Czech 1. liga 428–479). Further out the same leagues carry 139 to 175, lower tiers 20 to 49. Fifty canonical types are mapped — including goalscorers, corners, cards, shots, offsides and fouls — and about two thirds of the markets are combos, minute windows and specials filed as OTHER.

How is Betano CZ different from Betano DE?

Same platform, same IDs, a bigger board. Every soccer fixture Betano (DE) listed at our snapshot was on Betano (CZ) with the same eventId and team names, and shared markets carry the same marketId and selectionId. Betano (CZ) lists about 40% more fixtures and roughly three times the markets per match (142 against 49 on average on the shared fixtures), because the German licence strips most of the catalogue.

How do lines and handicaps work?

Betano keeps a whole ladder in one market — Over/Under Total Goals holds Over 0.5 to Under 7.5 — and the line sits on each selection. Handicap selections carry their own signed line (home -1.75, away +1.75); on the three-way Handicap Match Result the home and draw selections carry the home line. Soccer has a second totals book, Asian (Over/Under) Goals, with the whole and quarter lines; its legs that repeat the standard book are moved to an OTHER market marked moreInfo.duplicateOf.

Are outrights included?

Yes. Outrights sit in each sport's events with away set to an empty string and home naming the competition and season (Pohar FACR 2026/27, Six Nations 2027, World Championship 2027), their markets as OTHER with one selection per entrant. Filter on away to keep head-to-head fixtures only. On Formula 1 and cycling races home and away are the first two entrants Betano lists, not a head-to-head.

Is live in-play data available?

Yes — /api/betano-cz/live-events over HTTP and a WebSocket for streaming. Live documents keep the prematch eventId and appear about ten minutes before the start; prices come from Betano's push feed, up to 536 markets on a soccer match, with the score as strings (the current game's or set's points on the set sports), the match clock, cards and corners, per-set scores, the Betradar match ID and Betano's incident feed.

Does the Betano CZ API include results?

Yes, as a mirror of the in-play board: every match Betano (CZ) takes in play is kept for 30 days with the last score, match clock, statistics and Betano's full incident list, which ends with Ended on a finished soccer match. There is no status field and no settlement block, and simulated Esoccer and Ebasketball matches are a large share, so filter on country. /results/sports, /results/countries and /results/leagues list what is stored.

How do I connect to the Betano CZ WebSocket?

Open wss://api.pulsescore.net/api/betano-cz/ws/live?key=YOUR_KEY&sport=soccer. The sport parameter is kebab-case (ice-hockey, american-football, formula-1, rugby-union) and all 22 prematch sports are valid. The server sends a connected frame with your plan and the valid sport list, then pushes live events roughly every second. WebSocket access requires PRO, MAX or ULTRA.

How often is the data updated?

Every prematch board is re-read about every six minutes, and a fixture is closed in place when Betano flags it live. In play, Betano's push feed updates the boards as its changes arrive and the in-play list is re-read every 10 seconds; frames go out over WebSocket roughly every second, and a match leaves /live-events within 120 seconds of leaving Betano's in-play list.

Can I use this data commercially?

Yes. PulseScore plans cover commercial use — odds comparison sites, trading models, in-play dashboards and internal tooling. Rate limits and WebSocket connection counts scale with the plan, and one API key works across Betano (CZ) and every other bookmaker on the platform.

Start Using the Betano CZ API Today

Free tier available. No credit card required. Get your API key in 30 seconds.