# RapidAPI · betsapi2 (BetsAPI)

Gateway provider `rapidapi-betsapi2` · call `https://fetchapi.co/api/gw/rapidapi-betsapi2/<path>` with header `x-api-key` (get a key at https://fetchapi.co/keys) · MCP: tools `search_endpoints`, `get_endpoint`, `call_endpoint` at https://fetchapi.co/api/mcp · listing: https://rapidapi.com/b365api-b365api-default/api/betsapi2/pricing

Upstream plan: Pro: $150/month for 2,592,000 requests; free tier: Basic: $0, 24 requests/day hard limit, 10 requests/hour (https://rapidapi.com/b365api-b365api-default/api/betsapi2/pricing).

7 working endpoints, each tested live through this gateway. Endpoints that returned no data in our latest test, write actions and endpoints that need the end user's own login are not listed.

## `rapidapi-betsapi2.bet365_inplay` — Bet365 InPlay

`GET /v1/bet365/inplay` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 196 ms

Bet365's whole in-play board in its own stream format: one flat list of rows typed CL (sport), CT (competition), EV (a game: NA teams, SS score, TM/TS clock, CP period), MA (a market) and PA (an outcome with fractional odds OD; 0/0 = suspended). 214 games across 19 sports and about 416 KB in one call on 2026-10-22. 1 request.

Fields: `results[][].type` row type: CL sport, CT competition, EV game, MA market, PA outcome; `results[][].NA` name (sport, competition, 'Home v Away', market); `results[][].SS` EV: current score; `results[][].ID` EV: <Bet365 id>C<sport id>A_1_3; the number before C is the FI for /v1/bet365/event and /v1/bet365/result; `results[][].TM` EV: clock minutes (TS seconds, TT 1 = running); `results[][].OD` PA: fractional odds

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v1/bet365/inplay" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "stats": {
  "update_at": "1792694669",
  "update_dt": "2026-10-22 18:44:29"
 },
 "results": [
  [
   {
    "CD": "1",
    "CL": "1",
    "FF": "1~IA",
    "HC": "10",
    "HM": "1777#Fulltime Result^1778#Next Goal^10124#Match Goals",
    "ID": "1",
    "IT": "OV_1_1_3",
    "MR": "21#Fulltime Result#Draw^1777$1¬X¬2$3^1778$1¬X¬2$3^50169$1¬X¬2$3^10117$1¬X¬2$3^1786$1¬2$2^50151$1¬2$2^10116$1¬2$2~163#Next Goal#Draw^1778$1¬X¬2$2^10117$1¬X¬2$2~164#Match Goals#Draw^10124$Match$2$O$U^10552$Match$2$O$U^10565$BTTS$2$Yes$No^50596$BTTS$2$Yes$No^10568$1st Half$2$O$U^50386$1st Half$2$O$U~20…",
    "NA": "Football",
    "OF": "111",
    "OR": "0",
    "type": "CL"
   },
   {
    "FF": "",
    "ID": "1",
    "IT": "OVUEFA-EuropaC1_1_3",
    "L3": "UEFA Europa",
    "NA": "UEFA Europa League",
    "OF": "1",
    "OR": "0",
    "type": "CT"
   },
   {
    "AC": "#C40010,#C40010,#C40010,#C40010,#5C8FAE,#FFDF1B,#0A0A0A,#C40010,#0A0A0A,#0A0A0A,#F0F0F0",
    "AT": "126349",
    "AU": "1",
    "BI": "0",
    "C1": "1",
    "C2": "140206013",
    "C3": "203251420",
    "CB": "",
    "CE": "0",
    "CL": "1",
    "CP": "",
    "CT": "UEFA Europa League",
    "DC": "1",
    "DS": "",
    "ES": "0",
    "ET": "0",
    "FB": "0",
    "FF": "",
    "FS": "1",
    "GO": "5th",
    "HP": "1",
    "HT": "126359",
    "ID": "201410942C1A_1_3",
    "IH": "0",
    "IT": "OV201410942C1A_1_3",
    "K1": "Juventus_Home_Front_2627.svg",
    "K2": "Rennes_Home_Front_26-27.svg",
    "KC": "#0A0A0A,#F0F0F0,#0A0A0A
…
```

## `rapidapi-betsapi2.bet365_inplay_event` — Bet365 InPlay Event

`GET /v1/bet365/event` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 101 ms

One game Bet365 has in play, by its Bet365 id (FI), in Bet365's stream format: EV (score SS; clock TM:TS at time TU, UK time, running while TT is 1), TE (per team: score SC and stats S1-S9), SC/SL (the scoreboard), ST (timeline lines) and MG/MA/PA (every live market: MG the market, MA a column such as Over / Under, PA an outcome with fractional odds OD). 388 markets, 318 KB for a Europa League game on 2026-10-22; with stats=1 the markets are left out. A game that has ended answers success 0 PARAM_INVALID, which still counts 1 request.

| param | required | example / default |
|---|---|---|
| `FI` | yes | 202616118 |
| `stats` | no | 1 |
| `lineup` | no |  |

Fields: `results[][].type` EV game, TE team, SC/SL scoreboard column/line, ST timeline, MA market, PA outcome; `results[][].SS` EV: score; `results[][].NA` team / market / outcome name; `results[][].LA` ST: a timeline line, e.g. Score After 1st Quarter - 29-17; `results[][].D1` SL: one team's value in a scoreboard column; `stats.event_id` BetsAPI's own event id

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v1/bet365/event?FI=202616118&stats=1" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "stats": {
  "event_id": "12321571",
  "update_at": "1792694828",
  "update_dt": "2026-10-22 18:47:08"
 },
 "results": [
  [
   {
    "AT": "",
    "C1": "1",
    "C2": "203343181",
    "CC": "ELB",
    "CK": "5091",
    "CL": "18",
    "CT": "Euroleague",
    "DC": "1",
    "ED": "",
    "EL": "",
    "EX": "",
    "FI": "202616118",
    "FO": "0-0,0-0",
    "FS": "1",
    "HS": "1",
    "HT": "",
    "ID": "202616118C18A_1",
    "IO": "GpHEIhIi",
    "IT": "152033431815M18_1",
    "LB": "0",
    "LT": "",
    "LU": "1",
    "MD": "3",
    "ML": "0",
    "NA": "Anadolu Efes vs Besiktas",
    "NT": "",
    "PG": "",
    "PM": "1",
    "PS": "1",
    "RD": "",
    "S1": "3 Pts",
    "S2": "2 Pts",
    "S3": "Ft",
    "S4": "Time Outs#T.O",
    "S5": "Fouls",
    "S6": "",
    "S7": "4 Pts",
    "S9": "1 Pts",
    "SA": "1",
    "SB": "0",
    "SS": "63-51",
    "SV": "1",
    "T1": "5",
    "T2": "5",
    "TA": "",
    "TD": "1",
    "TM": "4",
    "TS": "59",
    "TT": "0",
    "TU": "20261022194703",
    "VC": "1118",
    "XT": "0",
    "XY": "",
    "type": "EV"
   },
   {
    "AD": "",
    "CT": "Basketball",
    "DS": "1",
    "ED": "",
    "ID": "202616118",
    "IT": "ML202616118C18G_1",
    "OR": "0",
    "type": "TG"
   },
   {
    "A1": "/",
    "A2": "/",
    "A3": "/",
    "D0": "",
    "D1": "27",
    "D2": "17",
    "D3": "",
    "D4": "",
    "D5": "",
    "D6": "",
    "D7": "",
    "D8": "",
    "D9": "",
    "EX": "",
    "ID": "1",
    "IT": "ML202616118C
…
```

## `rapidapi-betsapi2.bet365_inplay_filter` — Bet365 Inplay Filter

`GET /v1/bet365/inplay_filter` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 505 ms

Every game Bet365 has in play right now for one sport (sport_id 1 soccer, 18 basketball, 13 tennis, 17 ice hockey...), one row each: the Bet365 id, league, home and away team, current score (ss) and kick-off time; no odds. 38 soccer games in one call on 2026-10-22. Every call counts 1 request of the Basic plan's 24 a day, error answers included.

| param | required | example / default |
|---|---|---|
| `sport_id` | no | 1 |
| `league_id` | no |  |
| `skip_esports` | no |  |

Fields: `results[].id` Bet365 id (FI): pass it as FI to /v1/bet365/event and as event_id to /v1/bet365/result; `results[].ss` current score, home-away; `results[].time` kick-off, unix seconds; `results[].time_status` 1 in play; `results[].league.name` league; `results[].our_event_id` BetsAPI's own event id

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v1/bet365/inplay_filter?sport_id=1" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "pager": {
  "page": 1,
  "total": 38,
  "per_page": 1000
 },
 "results": [
  {
   "id": "201410942",
   "ss": "2-2",
   "away": {
    "id": "10359807",
    "name": "Rennes"
   },
   "home": {
    "id": "10359730",
    "name": "Juventus"
   },
   "r_id": "201410942C1A",
   "time": "1792687500",
   "ev_id": "151402060132C1",
   "league": {
    "id": "10041957",
    "name": "UEFA Europa League"
   },
   "sport_id": "1",
   "updated_at": "1792694653",
   "time_status": "1",
   "our_event_id": "13044758"
  },
  {
   "id": "203116808",
   "ss": "2-2",
   "away": {
    "id": "10410155",
    "name": "Al-Ahli Doha"
   },
   "home": {
    "id": "10414667",
    "name": "Al Gharafa"
   },
   "r_id": "203116808C1A",
   "time": "1792687500",
   "ev_id": "151401853472C1",
   "league": {
    "id": "10041350",
    "name": "Qatar Stars League"
   },
   "sport_id": "1",
   "updated_at": "1792694653",
   "time_status": "1",
   "our_event_id": "12352270"
  },
  {
   "id": "203235614",
   "ss": "2-1",
   "away": {
    "id": "11333804",
    "name": "Al Hilal Riyadh (W)"
   },
   "home": {
    "id": "11323835",
    "name": "Al-Nassr Riyadh (W)"
   },
   "r_id": "203235614C1A",
   "time": "1792687500",
   "ev_id": "151401975132C1",
   "league": {
    "id": "10076929",
    "name": "Saudi Arabia Premier League Women"
   },
   "sport_id": "1",
   "updated_at": "1792694651",
   "time_status": "1",
   "our_event_id": "13331487"
  },
  "… 35 more"
 ],
 "success": 1
}
```

## `rapidapi-betsapi2.bet365_prematch_odds` — Bet365 PreMatch Odds

`GET /v3/bet365/prematch` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 165 ms

All of Bet365's pre-match markets for one upcoming game by its Bet365 id (FI), grouped in sections (main, asian_lines, goals, half, corners... depending on the sport): each market has a name and its outcomes with decimal odds, a header (1, Draw, 2, Over, Under) and a handicap or line. 1 request a game.

| param | required | example / default |
|---|---|---|
| `FI` | yes | 203346577 |

Fields: `results[].main.sp` the main markets keyed by market (full_time_result, goals_over_under, correct_score...); `results[].main.sp.full_time_result.odds[].odds` decimal odds; `results[].main.sp.full_time_result.odds[].name` outcome: 1, Draw, 2; `results[].asian_lines.sp` Asian handicap and goal line markets; `results[].main.updated_at` when the section's odds last changed, unix seconds

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v3/bet365/prematch?FI=203346577" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "results": [
  {
   "FI": "203346577",
   "main": {
    "sp": {
     "draw_no_bet": {
      "id": "10544",
      "name": "Draw No Bet",
      "odds": [
       {
        "id": "280691774",
        "name": "1",
        "odds": "2.400",
        "handicap": ""
       },
       {
        "id": "280691775",
        "name": "2",
        "odds": "1.480",
        "handicap": ""
       }
      ]
     },
     "correct_score": {
      "id": "43",
      "name": "Correct Score",
      "odds": [
       {
        "id": "280691609",
        "name": "1-0",
        "odds": "15.000",
        "header": "1"
       },
       {
        "id": "280691610",
        "name": "2-0",
        "odds": "21.000",
        "header": "1"
       },
       {
        "id": "280691611",
        "name": "2-1",
        "odds": "12.000",
        "header": "1"
       },
       "… 24 more"
      ]
     },
     "double_chance": {
      "id": "10114",
      "name": "Double Chance",
      "odds": []
     },
     "full_time_result": {
      "id": "40",
      "name": "Full Time Result",
      "odds": [
       {
        "id": "280690481",
        "name": "1",
        "odds": "3.100"
       },
       {
        "id": "280690498",
        "name": "Draw",
        "odds": "3.900"
       },
       {
        "id": "280690500",
        "name": "2",
        "odds": "1.900"
       }
      ]
     },
     "goals_over_under": {
      "id": "981",
      "name": "Goals Over/Under",
      "odds": [
       {
        "id": "280690503",
      
…
```

## `rapidapi-betsapi2.bet365_result` — Bet365 Result

`GET /v1/bet365/result` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 601 ms

One game by its Bet365 id (event_id): status (time_status 1 in play, 3 ended), final or current score, score by period, match stats as home/away pairs (attacks, possession, shots, corners, xG...), the timeline of events (goals, cards, corners) and extras (venue, referee, managers, round). Works while the game is in play too. 1 request.

| param | required | example / default |
|---|---|---|
| `event_id` | yes | 201410942 |

Fields: `results[].ss` score, home-away; `results[].time_status` 0 not started, 1 in play, 3 ended; `results[].scores` score by period (1 = first half...); `results[].stats` match stats as [home, away]; `results[].events[].text` a timeline line, e.g. 15' - 2nd Goal - Tamari (Rennes); `results[].extra.stadium_data.name` venue; `results[].bet365_id` the Bet365 id asked for

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v1/bet365/result?event_id=201410942" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "results": [
  {
   "id": "13044758",
   "ss": "2-2",
   "away": {
    "cc": "fr",
    "id": "44004",
    "name": "Rennes",
    "image_id": "1658"
   },
   "home": {
    "cc": "it",
    "id": "22228",
    "name": "Juventus",
    "image_id": "2687"
   },
   "time": "1792687500",
   "extra": {
    "round": "3",
    "length": 90,
    "referee": {
     "cc": "dk",
     "id": "125266",
     "name": "Morten Krogh"
    },
    "away_pos": "13",
    "home_pos": "1",
    "away_manager": {
     "cc": "fr",
     "id": "1071894",
     "name": "Franck Haise"
    },
    "home_manager": {
     "cc": "it",
     "id": "52970",
     "name": "Luciano Spalletti"
    },
    "periodlength": "45",
    "stadium_data": {
     "id": "2657",
     "city": "Turin",
     "name": "Allianz Stadium",
     "country": "Italy",
     "capacity": "41507",
     "googlecoords": "45.109444,7.641111"
    },
    "numberofperiods": "2"
   },
   "stats": {
    "xg": [
     "2.20",
     "1.73"
    ],
    "fouls": [
     "3",
     "0"
    ],
    "goals": [
     "2",
     "2"
    ],
    "saves": [
     "1",
     "0"
    ],
    "attacks": [
     "120",
     "70"
    ],
    "corners": [
     "7",
     "5"
    ],
    "crosses": [
     "21",
     "9"
    ],
    "corner_f": [
     "7",
     "5"
    ],
    "corner_h": [
     "2",
     "3"
    ],
    "injuries": [
     "0",
     "0"
    ],
    "offsides": [
     "0",
     "0"
    ],
    "redcards": [
     "0",
     "0"
    ],
    "ball_safe": [
     "13",
     "15"
    ],
    "
…
```

## `rapidapi-betsapi2.bet365_upcoming_events` — Bet365 Upcoming Events

`GET /v1/bet365/upcoming` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 139 ms

Bet365's not-yet-started games of one sport (sport_id required; league_id, day YYYYMMDD optional), 50 a page (page=2 for the next; 1,596 soccer games in total on 2026-10-22): Bet365 id, league, home and away team, kick-off time and when its odds last changed. 1 request a page.

| param | required | example / default |
|---|---|---|
| `sport_id` | yes | 1 |
| `league_id` | no |  |
| `day` | no |  |
| `page` | no |  |

Fields: `results[].id` Bet365 id (FI): pass it to /v3/bet365/prematch; `results[].time` kick-off, unix seconds; `results[].league` league id and name; `results[].home.name` home team; `results[].away.name` away team; `pager.total` games in all pages

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v1/bet365/upcoming?sport_id=1" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "pager": {
  "page": 1,
  "total": 1596,
  "per_page": 50
 },
 "results": [
  {
   "id": "203346577",
   "ss": null,
   "away": {
    "id": "11237500",
    "name": "Arsenal (DANTE)"
   },
   "home": {
    "id": "11235449",
    "name": "Aston Villa (ASHE)"
   },
   "r_id": null,
   "time": "1792694760",
   "league": {
    "id": "10082427",
    "name": "Esoccer H2H GG League - 8 mins play"
   },
   "sport_id": "1",
   "updated_at": "1792694645",
   "time_status": "0",
   "our_event_id": "13339816",
   "odds_updated_at": "1792694640"
  },
  {
   "id": "203342375",
   "ss": null,
   "away": {
    "id": "11435800",
    "name": "VfB Stuttgart (Kostolom89)"
   },
   "home": {
    "id": "11223831",
    "name": "RB Leipzig (Sheva)"
   },
   "r_id": null,
   "time": "1792695180",
   "league": {
    "id": "10083563",
    "name": "Esoccer Battle Volta - 6 mins play"
   },
   "sport_id": "1",
   "updated_at": "1792694649",
   "time_status": "0",
   "our_event_id": "13339821",
   "odds_updated_at": "1792694640"
  },
  {
   "id": "203342377",
   "ss": null,
   "away": {
    "id": "11222647",
    "name": "Bayern (fantazer)"
   },
   "home": {
    "id": "11301173",
    "name": "Dortmund (Bob)"
   },
   "r_id": null,
   "time": "1792695180",
   "league": {
    "id": "10083563",
    "name": "Esoccer Battle Volta - 6 mins play"
   },
   "sport_id": "1",
   "updated_at": "1792694649",
   "time_status": "0",
   "our_event_id": "13339822",
   "odds_updated_at": "1792694640"
  },
  "… 47 more"
 ]
…
```

## `rapidapi-betsapi2.bet365_upcoming_leagues` — Bet365 Upcoming Leagues

`GET /v1/bet365/league` · ✓ working (tested 2026-10-22) · sampled 2026-10-22, 261 ms

The leagues of one sport that have upcoming Bet365 games, each with its league id (for league_id on upcoming events) and how many games it has. 1 request.

| param | required | example / default |
|---|---|---|
| `sport_id` | yes | 1 |

Fields: `results[].id` league id, for league_id on /v1/bet365/upcoming; `results[].name` league; `results[].count` upcoming games

```bash
curl "https://fetchapi.co/api/gw/rapidapi-betsapi2/v1/bet365/league?sport_id=1" \
  -H "x-api-key: $FETCHAPI_KEY"
```

Real answer (trimmed):

```json
{
 "results": [
  {
   "id": "10070454",
   "name": "Argentina Liga Profesional",
   "count": "30"
  },
  {
   "id": "10037291",
   "name": "England FA Trophy",
   "count": "27"
  },
  {
   "id": "10041396",
   "name": "Greece Super League 1",
   "count": "21"
  },
  "… 288 more"
 ],
 "success": 1
}
```
