BFB247 Exchange Data API

BFB247 Exchange API for Back & Lay Odds, Liquidity, Racing & Results

Access the BFB247 betting exchange through one API: the three best back and lay prices on every runner with the US-dollar stake waiting at each. It covers soccer from the Champions League to the Japanese third tier, ATP, WTA and Challenger tennis, the NBA and the Euroleague, the NHL, international and franchise cricket and the NFL, plus horse racing from Britain, Ireland, the USA, Australia, New Zealand, France and South Africa. The exchange is Betfair-fed, so event, market and selection IDs match Orbit Exchange, and every market has a canonical type. In-play boards come from the exchange's price stream, and results carry the exchange's own grades.

What a BFB247 API Response Looks Like

GET /api/bfb247/soccer/events/36223258
{
  "data": {
    "sport": "soccer",
    "country": "International",
    "league": "UEFA Champions League",
    "eventId": "36223258",
    "slug": "/customer/sport/1/event/36223258",
    "home": "Barcelona",
    "away": "Aston Villa",
    "live": false,
    "startTime": "2026-11-03T20:00:00.000Z",
    "markets": [
      {
        "canonicalMarket": "MATCH_RESULT",
        "rawName": "Match Odds",
        "period": "FULL_TIME",
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "AWAY",
            "rawName": "Aston Villa",
            "odds": 10,
            "isActive": true,
            "selectionId": "63908",
            "back": [
              { "price": 10, "liquidity": 944.82 },
              { "price": 9.8, "liquidity": 976 },
              { "price": 9.6, "liquidity": 1251.18 }
            ],
            "lay": [
              { "price": 10.5, "liquidity": 1606.73 },
              { "price": 11, "liquidity": 2944.78 },
              { "price": 11.5, "liquidity": 1151 }
            ],
            "suspended": false
          },
          {
            "canonicalOutcome": "HOME",
            "rawName": "Barcelona",
            "odds": 1.29,
            "isActive": true,
            "selectionId": "52480964",
            "back": [
              { "price": 1.29, "liquidity": 10034.32 },
              { "price": 1.28, "liquidity": 27393.38 },
              { "price": 1.27, "liquidity": 37182.73 }
            ],
            "lay": [
              { "price": 1.3, "liquidity": 1622.84 },
              { "price": 1.31, "liquidity": 19692.18 },
              { "price": 1.32, "liquidity": 18561.06 }
            ],
            "suspended": false
          },
          {
            "canonicalOutcome": "DRAW",
            "rawName": "The Draw",
            "odds": 7.6,
            "isActive": true,
            "selectionId": "58805",
            "back": [
              { "price": 7.6, "liquidity": 148.78 },
              { "price": 7.4, "liquidity": 759.48 },
              { "price": 7.2, "liquidity": 2368.73 }
            ],
            "lay": [
              { "price": 7.8, "liquidity": 1573.75 },
              { "price": 8, "liquidity": 2851.98 },
              { "price": 8.2, "liquidity": 2532.4 }
            ],
            "suspended": false
          }
        ],
        "marketId": "1.264320685",
        "updatedAt": "2026-11-03T09:02:28.414Z",
        "suspended": false
      },
      {
        "canonicalMarket": "OVER_UNDER",
        "rawName": "Over/Under 2.5 Goals",
        "period": "FULL_TIME",
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "OVER",
            "rawName": "Over 2.5 Goals",
            "odds": 1.23,
            "isActive": true,
            "selectionId": "47973",
            "line": 2.5,
            "back": [
              { "price": 1.23, "liquidity": 110.04 },
              { "price": 1.22, "liquidity": 6148.32 },
              { "price": 1.21, "liquidity": 1275.07 }
            ],
            "lay": [
              { "price": 1.24, "liquidity": 694.83 },
              { "price": 1.25, "liquidity": 3513.1 },
              { "price": 1.26, "liquidity": 1526.03 }
            ],
            "suspended": false
          },
          {
            "canonicalOutcome": "UNDER",
            "rawName": "Under 2.5 Goals",
            "odds": 5.2,
            "isActive": true,
            "selectionId": "47972",
            "line": 2.5,
            "back": [
              { "price": 5.2, "liquidity": 80.72 },
              { "price": 5.1, "liquidity": 454.59 },
              { "price": 5, "liquidity": 502.96 }
            ],
            "lay": [
              { "price": 5.4, "liquidity": 286.76 },
              { "price": 5.5, "liquidity": 390.1 },
              { "price": 5.6, "liquidity": 763.14 }
            ],
            "suspended": false
          }
        ],
        "marketId": "1.264320624",
        "line": 2.5,
        "updatedAt": "2026-11-03T09:03:53.046Z",
        "suspended": false
      },
      {
        "canonicalMarket": "ASIAN_HANDICAP",
        "rawName": "Asian Handicap",
        "period": "FULL_TIME",
        "isActive": true,
        "selections": [
          {
            "canonicalOutcome": "AWAY",
            "rawName": "Aston Villa",
            "odds": 4.33,
            "isActive": true,
            "selectionId": "63908",
            "line": 0.5,
            "back": [
              { "price": 4.33, "liquidity": 487.22 },
              { "price": 4.31, "liquidity": 262.36 },
              { "price": 4.25, "liquidity": 1316.75 }
            ],
            "lay": [
              { "price": 4.4, "liquidity": 5.46 },
              { "price": 4.45, "liquidity": 2903.43 },
              { "price": 4.48, "liquidity": 2734.66 }
            ],
            "suspended": false
          },
          {
            "canonicalOutcome": "HOME",
            "rawName": "Barcelona",
            "odds": 1.29,
            "isActive": true,
            "selectionId": "52480964",
            "line": -0.5,
            "back": [
              { "price": 1.29, "liquidity": 10034.32 },
              { "price": 1.28, "liquidity": 27393.38 },
              { "price": 1.27, "liquidity": 37182.73 }
            ],
            "lay": [
              { "price": 1.3, "liquidity": 1622.84 },
              { "price": 1.31, "liquidity": 19692.18 },
              { "price": 1.32, "liquidity": 18561.06 }
            ],
            "suspended": false
          }
        ],
        "marketId": "1.264320638",
        "updatedAt": "2026-11-03T09:03:55.617Z",
        "suspended": false
      }
    ],
    "moreInfo": { "competitionId": "228" },
    "updatedAt": "2026-11-03T09:04:02.574Z"
  }
}

Racing: Back Prices with Liquidity

GET /api/bfb247/horse-racing/races/36267072.1218
{
  "data": {
    "id": "36267072.1218",
    "EW": "",
    "active": "true",
    "country": "GB",
    "horses": [
      {
        "id": "80278957",
        "number": "2",
        "name": "Un Sens A La Vie",
        "jockey": "Sam Twiston-Davies",
        "trainer": "Nigel & Willy Twiston-Davies",
        "active": true,
        "EW": { "status": "active", "fractional": "", "decimal": "1.4" },
        "back": [
          { "price": 1.4, "liquidity": 6.85 },
          { "price": 1.39, "liquidity": 23.98 },
          { "price": 1.37, "liquidity": 45.2 }
        ]
      },
      {
        "id": "75798976",
        "number": "1",
        "name": "Loriko",
        "jockey": "Harry Skelton",
        "trainer": "Dan Skelton",
        "active": true,
        "EW": { "status": "active", "fractional": "", "decimal": "3.4" },
        "back": [
          { "price": 3.4, "liquidity": 3.16 },
          { "price": 3.35, "liquidity": 13.77 },
          { "price": 3.3, "liquidity": 14.03 }
        ]
      }
    ],
    "isInPlay": "false",
    "meetingId": "36267072",
    "name": "Warwick 12:18 2m Beg Chs",
    "region": "UK and Irish",
    "settled": false,
    "slug": "/customer/sport/7/market/1.264886209",
    "startDate": "2026-11-03T12:18:00.000Z",
    "updatedAt": "2026-11-03T09:03:44.567Z"
  }
}

In-Play: Score, Clock and Grades as They Settle

GET /api/bfb247/live-events?sport=soccer&limit=1
{
  "total": 4,
  "page": 1,
  "limit": 1,
  "totalPages": 4,
  "hasNextPage": true,
  "hasPrevPage": false,
  "sport": "soccer",
  "events": [
    {
      "sport": "soccer",
      "country": "International",
      "league": "AFC Champions League",
      "eventId": "36266667",
      "slug": "/customer/sport/1/event/36266667",
      "home": "Newcastle Jets",
      "away": "Shanghai Port FC",
      "startTime": "2026-11-03T07:45:00.000Z",
      "matchClock": { "minute": 60, "period": "REGULAR", "periodId": "SecondHalfKickOff", "running": true },
      "score": { "home": "1", "away": "3" },
      "statistics": {
        "football": {
          "home": { "yellowCards": 0, "redCards": 0, "corners": 0 },
          "away": { "yellowCards": 0, "redCards": 0, "corners": 0 }
        }
      },
      "markets": [
        {
          "canonicalMarket": "MATCH_RESULT",
          "rawName": "Match Odds",
          "period": "FULL_TIME",
          "isActive": true,
          "selections": [
            {
              "canonicalOutcome": "AWAY",
              "rawName": "Shanghai Port FC",
              "odds": 1.11,
              "isActive": true,
              "selectionId": "51006167",
              "back": [
                { "price": 1.11, "liquidity": 13684.49 },
                { "price": 1.1, "liquidity": 975.98 },
                { "price": 1.09, "liquidity": 1265.43 }
              ],
              "lay": [
                { "price": 1.13, "liquidity": 1427.97 },
                { "price": 1.14, "liquidity": 4587.68 },
                { "price": 1.15, "liquidity": 1995.31 }
              ],
              "suspended": false
            },
            {
              "canonicalOutcome": "HOME",
              "rawName": "Newcastle Jets",
              "odds": 50,
              "isActive": true,
              "selectionId": "1205125",
              "back": [
                { "price": 50, "liquidity": 5.38 },
                { "price": 48, "liquidity": 9.26 },
                { "price": 42, "liquidity": 16.12 }
              ],
              "lay": [
                { "price": 70, "liquidity": 1.64 },
                { "price": 75, "liquidity": 5.57 },
                { "price": 90, "liquidity": 1.49 }
              ],
              "suspended": false
            },
            {
              "canonicalOutcome": "DRAW",
              "rawName": "The Draw",
              "odds": 11,
              "isActive": true,
              "selectionId": "58805",
              "back": [
                { "price": 11, "liquidity": 28.75 },
                { "price": 10.5, "liquidity": 48.04 },
                { "price": 10, "liquidity": 180.63 }
              ],
              "lay": [
                { "price": 13, "liquidity": 56.92 },
                { "price": 13.5, "liquidity": 128.14 },
                { "price": 14, "liquidity": 33.05 }
              ],
              "suspended": false
            }
          ],
          "marketId": "1.264889431",
          "updatedAt": "2026-11-03T09:04:03.155Z",
          "suspended": false
        },
        {
          "canonicalMarket": "ASIAN_HANDICAP",
          "rawName": "Asian Handicap",
          "period": "FULL_TIME",
          "isActive": true,
          "selections": [
            {
              "canonicalOutcome": "HOME",
              "rawName": "Newcastle Jets",
              "odds": 2.04,
              "isActive": true,
              "selectionId": "1205125",
              "line": 2,
              "back": [
                { "price": 2.04, "liquidity": 11.03 },
                { "price": 2.03, "liquidity": 26.47 },
                { "price": 1.96, "liquidity": 383.43 }
              ],
              "lay": [
                { "price": 2.29, "liquidity": 549.59 },
                { "price": 2.3, "liquidity": 396.4 },
                { "price": 2.31, "liquidity": 757.28 }
              ],
              "suspended": false
            },
            {
              "canonicalOutcome": "AWAY",
              "rawName": "Shanghai Port FC",
              "odds": 1.78,
              "isActive": true,
              "selectionId": "51006167",
              "line": -2,
              "back": [
                { "price": 1.78, "liquidity": 180.8 },
                { "price": 1.77, "liquidity": 627.24 },
                { "price": 1.76, "liquidity": 4952.85 }
              ],
              "lay": [
                { "price": 1.96, "liquidity": 11.47 },
                { "price": 1.97, "liquidity": 27.28 },
                { "price": 2.04, "liquidity": 253.4 }
              ],
              "suspended": false
            }
          ],
          "marketId": "1.264889388",
          "updatedAt": "2026-11-03T09:04:03.161Z",
          "suspended": false
        }
      ],
      "moreInfo": { "competitionId": "39218" },
      "settlement": { "source": "orbitxch-exchange", "state": "in_play", "final": false, "inPlay": true, "settledSelections": 34, "totalSelections": 197, "settledMarkets": 5, "totalMarkets": 22, "lastGradeAt": "2026-11-03T09:02:22.373Z" },
      "settledOpportunities": [
        { "market": "OVER_UNDER", "period": "FULL_TIME", "line": 0.5, "outcome": "UNDER", "selection": "Under", "result": "LOST" },
        { "market": "OVER_UNDER", "period": "FULL_TIME", "line": 0.5, "outcome": "OVER", "selection": "Over", "result": "WON" },
        { "market": "OVER_UNDER", "period": "FULL_TIME", "line": 0.75, "outcome": "UNDER", "selection": "Under", "result": "LOST" }
      ],
      "updatedAt": "2026-11-03T09:04:03.325Z"
    }
  ]
}

Results Graded by the Exchange

GET /api/bfb247/results?sport=soccer&league=English%20Premier%20League&limit=1
{
  "total": 2,
  "page": 1,
  "limit": 1,
  "totalPages": 2,
  "hasNextPage": true,
  "hasPrevPage": false,
  "results": [
    {
      "sport": "soccer",
      "country": "GBR",
      "league": "English Premier League",
      "eventId": "36205839",
      "slug": "/customer/sport/1/event/36205839",
      "home": "Liverpool",
      "away": "Arsenal",
      "startTime": "2026-11-01T16:30:00.000Z",
      "matchClock": { "minute": 96, "period": "REGULAR", "periodId": "ENDED", "running": false },
      "score": { "home": "0", "away": "1" },
      "statistics": {
        "football": {
          "home": { "yellowCards": 0, "redCards": 0, "corners": 0 },
          "away": { "yellowCards": 0, "redCards": 0, "corners": 0 }
        }
      },
      "moreInfo": { "competitionId": "10932509", "ended": true, "statusName": "ENDED" },
      "settlement": { "source": "orbitxch-exchange", "state": "final", "final": true, "inPlay": false, "reason": "status", "endedBy": "status", "finalAt": "2026-11-01T18:28:44.414Z", "settledSelections": 342, "totalSelections": 496, "settledMarkets": 49, "totalMarkets": 52, "lastGradeAt": "2026-11-01T18:28:42.185Z" },
      "settledOpportunities": [
        { "market": "MATCH_RESULT", "period": "FULL_TIME", "outcome": "HOME", "selection": "Liverpool", "result": "LOST" },
        { "market": "MATCH_RESULT", "period": "FULL_TIME", "outcome": "AWAY", "selection": "Arsenal", "result": "WON" },
        { "market": "MATCH_RESULT", "period": "FULL_TIME", "outcome": "DRAW", "selection": "The Draw", "result": "LOST" },
        { "market": "OVER_UNDER", "period": "FULL_TIME", "line": 2.5, "outcome": "UNDER", "selection": "Under", "result": "WON" },
        { "market": "OVER_UNDER", "period": "FULL_TIME", "line": 2.5, "outcome": "OVER", "selection": "Over", "result": "LOST" }
      ],
      "updatedAt": "2026-11-01T18:28:44.415Z"
    }
  ]
}

Why Use PulseScore for BFB247 Data

Back, Lay and Liquidity

Every runner carries the three best back prices and the three best lay prices, each with the US-dollar stake available at that price, so you can see the market's real depth and spread rather than a single bookmaker price.

Full Handicap and Total Ladders

Asian handicap and goal-line ladders on soccer and the handicap and total-points ladders on the NBA and NFL list every rung, each with its own line and its own back and lay prices. A basketball handicap runs to about 118 rungs.

Betfair IDs, Shared with Orbit Exchange

Event, market (1.264320685) and selection IDs are Betfair's and identical to Orbit Exchange's. Join the two feeds directly, or line BFB247 up against any source that keys on Betfair IDs.

Horse Racing from Seven Countries

Today's and tomorrow morning's cards from Britain, Ireland, the USA, Australia, New Zealand, France and South Africa, with jockey, trainer and a back-price ladder with liquidity for every runner. Filter by ISO-2 country.

Results Graded by the Exchange

Every match the live board followed is kept for 30 days with the exchange's own settlement: hundreds of WON/LOST grades per match (342 on Liverpool – Arsenal), filterable by sport, league, country, team and final state.

REST Plus WebSocket Streaming

Poll the REST endpoints for prematch boards, competitions, racing cards and results, or subscribe over WebSocket for in-play pushes roughly every second. All six sports are subscribable on PRO, MAX and ULTRA plans, and one PulseScore API key covers every bookmaker.

Frequently Asked Questions

What data does the BFB247 API provide?

Back and lay prices with US-dollar liquidity for soccer, tennis, basketball, ice hockey, cricket and American football, horse racing cards, in-play exchange boards with the score and clock, and 30 days of results with the exchange's own grades, via REST, plus a WebSocket for live events.

What is BFB247?

BFB247 is the betting exchange inside the 96ex.one casino site. Its exchange is a Betfair-fed white label, the same one Orbit Exchange runs, so the events, markets, selection IDs and prices are the same. The difference is that BFB247 quotes liquidity in US dollars.

What do back, lay and liquidity mean?

A back price is what you can bet on an outcome at; a lay price is what you can bet against it at. Each selection lists the three best of each with the liquidity, the US-dollar stake other users are offering at that price. odds is the best back price, or 0 when only lay offers stand.

How deep are the BFB247 soccer boards?

Depth follows kick-off time. Fixtures within 24 hours carry 30–32 markets on average and up to 52: that evening's Champions League round averaged 39, with goalscorer, player shots, cards and corner markets. Fixtures one to three days out carry about 9, and later ones about 3 (Match Odds, over/under 2.5 and the Asian handicap).

Is horse racing included?

Yes. /api/bfb247/horse-racing/races lists today's races and tomorrow morning's from Britain, Ireland, the USA, Australia, New Zealand, France and South Africa, with a back-price ladder and liquidity on every runner, and takes an ISO-2 country filter. /horse-racing/countries lists the codes on the card. Racing has no lay prices and no greyhounds.

Is live in-play data available?

Yes: /api/bfb247/live-events over HTTP and a WebSocket for streaming. The in-play board comes from the exchange's price stream and keeps the prematch eventId. Soccer has the score and clock, tennis the sets and the current game, and markets the exchange has settled in play are graded right away.

Does the BFB247 API include results?

Yes. Every match the live board followed is kept for 30 days with its last score and the exchange's grades for every market it settled, hundreds per match on soccer, basketball and the NFL. Filter by sport, league, country, team and final. Ice hockey and American football rows carry grades but no score.

How do I connect to the BFB247 WebSocket?

Open wss://api.pulsescore.net/api/bfb247/ws/live?key=YOUR_KEY&sport=soccer. The sport parameter is kebab-case (ice-hockey, american-football), and all six sports are valid. The server sends a connected message, then a frame of live events about every second. WebSocket access needs a PRO, MAX or ULTRA plan.

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 BFB247 and every other bookmaker on PulseScore.

Start Using the BFB247 Exchange API Today

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