Asian Exchange API: 4casters, Fair999, Orbit, Piwi247 & Sharp Exchange Data

Asian Exchange API - OddsPapi API Blog
How To Guides May 1, 2026

The Asian Exchange Network: Betfair-Clone Liquidity You Can’t Open an Account On

If you’ve been deep enough into the sharp betting world to know the names Fair999, Orbit Exchange, Piwi247 and Sharp Exchange, you also know the problem: you can’t sign up for any of them. All four (plus 4casters and a small cluster of related platforms) are part of the Asian betting exchange network, and they run a distribution model that’s entirely agent-based. No website signup. No KYC portal. No “add to cart” button. You find a Hong Kong or Macau agent, you send them a deposit, they give you an account with a credit line, and you bet against their exchange liquidity pool.

For the 99.9% of developers and traders sitting outside that network, these books have always been a black box. You’d see their names referenced in betting forums. You’d hear that they carry sharp pricing and Asian Handicap depth that Betfair struggles to match. But you couldn’t see their odds.

Exchange Slug What It Actually Is
4casters Exchange 4casters Standalone exchange with full back/lay ladder, active on soccer, MLB, NHL
Fair999 Exchange fair999-ex Asian agent-network exchange, mirrors Betfair Exchange pricing
Orbit Exchange orbitx Asian agent-network exchange, mirrors Betfair Exchange pricing
Piwi247 Exchange piwi247-ex Asian agent-network exchange, mirrors Betfair Exchange pricing
Sharp Exchange sharpxch Asian agent-network exchange, mirrors Betfair Exchange pricing

The One Thing Nobody Tells You: Fair999, Orbit, Piwi247 and Sharp Exchange Are Betfair Clones

Here’s the detail that changes everything for developers: four of the five exchanges on this list aren’t independent order books. They’re distribution skins that plug directly into Betfair Exchange’s liquidity. The agent network at the front, Betfair’s ladder at the back.

You can verify this yourself through the OddsPapi API. Every one of these slugs carries cloneOf: "betfair-ex" in the /v4/bookmakers response:

import requests

API_KEY = "YOUR_API_KEY"
r = requests.get(
    "https://api.oddspapi.io/v4/bookmakers",
    params={"apiKey": API_KEY},
)
clones = [b for b in r.json() if b.get("cloneOf") == "betfair-ex"]
for b in clones:
    print(b["slug"], "->", b["bookmakerName"])

Output:

fair999-ex -> Fair999 Exchange
orbitx     -> Orbit Exchange
piwi247-ex -> Piwi247 Exchange
sharpxch   -> Sharp Exchange

What does “clone” mean in practice? The order book, the prices, the back/lay ladders, the liquidity — it’s all Betfair Exchange. When you place a bet on Fair999 through an agent, your stake flows into the same order book that every other Betfair Exchange participant is trading against. The agent’s role is KYC avoidance, credit-line issuance, and (critically) privacy from Betfair’s bet-limiting logic — not a separate market.

For you as a developer, that’s actually good news. It means:

  • You don’t need a Fair999 account to see Fair999 prices. You need Betfair Exchange prices — which OddsPapi already aggregates under the betfair-ex slug.
  • The pricing is genuinely sharp. It’s not a second-tier book with thin liquidity. It’s the deepest exchange in the world.
  • You can model the agent-network side of the market using the same data your Betfair integration already ships.

The One Exception: 4casters Is a Real, Standalone Exchange

4casters is the odd one out. Same part of the world, same target audience, but 4casters runs its own order book rather than reselling Betfair liquidity. When you query it through OddsPapi, you get a distinct back/lay ladder with its own prices and sizes — often different from Betfair on the same fixture, which is exactly what makes it interesting for arbitrage and value modeling.

Here’s a real 4casters outcome pulled through OddsPapi:

# 4casters exchange-type outcome
{
  "active": true,
  "betslip": "https://4casters.io/exchange-single/69d3722ec4ea8afda30d16c5",
  "bookmakerOutcomeId": "69da5a54b5be98be02f4c698",
  "changedAt": "2026-04-11T15:03:04.604136+00:00",
  "limit": 1547.33,
  "playerName": null,
  "price": 1.435,
  "exchangeMeta": {
    "back": [
      {"limit": 1547.33, "price": 1.435, "size": 1547.33},
      {"limit": 336.37, "price": 1.397, "size": 336.37}
    ],
    "lay": []
  }
}

Real ladder depth, real size available, a live deep link into the 4casters UI, and prices that are their own — not a Betfair mirror. This is the real prize of the Asian exchange cluster from a modeling perspective: a second, independent liquidity pool that occasionally disagrees with Betfair and can tell you when one venue is running ahead of the other.

Tutorial: Pull the Full Asian Exchange Stack in One Call

Step 1: Auth

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.oddspapi.io/v4"

Step 2: Find an Asian-Handicap-Heavy Fixture

The Asian exchange cluster is at its strongest on soccer markets with Asian Handicap and Over/Under lines. Any major European league match during matchday weekend will do.

from datetime import datetime, timezone, timedelta

today = datetime.now(timezone.utc)
params = {
    "apiKey": API_KEY,
    "sportId": 10,  # Soccer
    "from": today.strftime("%Y-%m-%d"),
    "to": (today + timedelta(days=3)).strftime("%Y-%m-%d"),
}
fixtures = requests.get(f"{BASE_URL}/fixtures", params=params).json()
candidates = [f for f in fixtures if f.get("hasOdds")]

Step 3: Query the Whole Cluster + Betfair

fixture_id = candidates[0]["fixtureId"]

slugs = "4casters,fair999-ex,orbitx,piwi247-ex,sharpxch,betfair-ex"
r = requests.get(
    f"{BASE_URL}/odds",
    params={
        "apiKey": API_KEY,
        "fixtureId": fixture_id,
        "bookmakers": slugs,
    },
)
books = r.json().get("bookmakerOdds", {})
print("returned:", sorted(books.keys()))

You’ll notice something interesting: the Betfair clones (fair999-ex, orbitx, piwi247-ex, sharpxch) map back to a single betfair-ex entry in the response, because that’s where the real ladder lives. 4casters comes back under its own slug.

That’s the clean mental model: one integration covers Betfair Exchange and all four Asian clones, plus 4casters as an independent second data source.

Step 4: Compare 4casters vs Betfair

This is where the actual alpha lives. When 4casters and Betfair disagree on a match result or an Asian Handicap, one of them is ahead of the other.

# Pull just 4casters and Betfair, compare on Full Time Result
r = requests.get(
    f"{BASE_URL}/odds",
    params={
        "apiKey": API_KEY,
        "fixtureId": fixture_id,
        "bookmakers": "4casters,betfair-ex",
    },
)
books = r.json()["bookmakerOdds"]

def best_back(book):
    market = book.get("markets", {}).get("101", {})
    home = market.get("outcomes", {}).get("101", {}).get("players", {}).get("0", {})
    meta = home.get("exchangeMeta") or {}
    # Handle both shape styles: 4casters uses back/lay, Betfair uses availableToBack/Lay
    if isinstance(meta, dict):
        back = meta.get("back") or meta.get("availableToBack") or []
        if back:
            return back[0]["price"]
    return home.get("price")

for slug in ("4casters", "betfair-ex"):
    if slug in books:
        print(f"{slug:12} home back @ {best_back(books[slug])}")

When 4casters posts a higher back price than Betfair on the home side, your stake on 4casters wins more for the same risk. That’s the trade.

Step 5: Asian Handicap Depth Comparison

Asian Handicap is the market where the agent-network exchanges historically beat European books. Pull the full ladder for a -0.5 handicap (market ID 1068) on both Betfair and 4casters:

market_id = "1068"  # Asian Handicap -0.5

for slug in ("4casters", "betfair-ex"):
    book = books.get(slug, {})
    market = book.get("markets", {}).get(market_id, {})
    if not market:
        print(f"{slug}: no {market_id} market")
        continue

    outcomes = market.get("outcomes", {})
    for oid, outcome in outcomes.items():
        p = outcome["players"]["0"]
        meta = p.get("exchangeMeta") or {}
        back = meta.get("back") or meta.get("availableToBack") or []
        total_back = sum(lvl.get("size", 0) for lvl in back)
        best = back[0]["price"] if back else p.get("price")
        print(f"  {slug} outcome {oid}: best back @ {best}, total size £{total_back:.0f}")

You now have a real cross-exchange comparison of Asian Handicap liquidity — the data point that used to require an agent relationship to even see.

Why This Matters for Developers Building Value / Arb Models

You no longer need an agent to model the Asian exchange market. The four Betfair clones share the same liquidity, which is already on OddsPapi as betfair-ex. If your model consumes Betfair Exchange data, it already covers Fair999, Orbit, Piwi247 and Sharp Exchange.

4casters gives you a genuine second exchange price — independent liquidity, real divergence from Betfair, and a deep link you can use to surface opportunities into a trader dashboard. For cross-exchange arbitrage work, this is the missing second data source.

Zero account overhead. The whole cluster is available from a single OddsPapi query. No agent network, no credit lines, no KYC workarounds, no regulatory grey zone.

Historical data is free. Backtest 4casters and Betfair divergence against /v4/historical-odds on the free tier. Neither platform sells historical data directly.

Get Started

  1. Sign up at oddspapi.io
  2. Copy your API key
  3. Pull the Asian exchange cluster in one call
curl "https://api.oddspapi.io/v4/odds?apiKey=YOUR_KEY&fixtureId=id1000003761320199&bookmakers=4casters,betfair-ex"

No Hong Kong agent. No credit line. No offshore account. Just the data that used to require all three.