BetLiveChess
Available– Total Coins–

Live games

Trade on who wins, move by move. A White contract pays 100 if White wins, a Black contract 100 if Black wins; a draw pays 50 to both.

Community games

Any live Lichess game, connected by a player. No market maker here: you trade only with other players.

Tap White or Black on a game to bet here.

Settings

Theme

Board & pieces

Pieces

Board

Piece sets and boards from Lichess (lichess-org/lila); each keeps its author's license.

Game page

Watch from
Which side is at the bottom of the board (the Flip button and the F key switch it any time)
Engine
Show Stockfish's evaluation, best line and the eval bar

Titled Tuesday

Chess.com's weekly Titled Tuesday blitz event. Yes pays 100 if the player finishes in the place shown; a player who does not play settles No. Trading closes when the event starts.

Tap Yes or No on a player to trade here.

Leaderboard

Signed-in players who placed an order or traded in the last 30 days. Winners = profit on games settled in the period. Bets = orders placed. Coins = total coins now (cash plus open positions at fair value).

Account

–

Email

Following

Get a notification when these Lichess players start a game. Tap ☆ next to a player's name on any game to follow.

API

Trade from your own code with an API key. Keys act as your account: keep them secret. Read the API documentation →

Portfolio value
–
Available–
Positions–

Admin

Titled Tuesday flow

What players did against our odds. The market maker starts at our model and moves 1 point per 2,000 contracts of net flow (1M a side). Net > 0: players bought, so they think we are too low.

Bug reports & suggestions

Recent chat

Choose a new password

Messages

Pick a conversation, or tap a name in chat to message someone.

Buy coins

Coins are play money for trading on BetLiveChess. They can't be withdrawn or exchanged for cash.

Betting API

Every game is one market: Yes = White wins. A Yes contract pays 100 coins if White wins, 50 on a draw and 0 if Black wins. Prices are whole coins from 1 to 99. Once your Total Coins exceed 1,000, one order can risk at most half of them (market orders fill up to that; larger limit orders are refused). Orders are limit orders by default; buying No at p is the same as selling Yes at 100 − p. The market maker quotes the official games only; community games have no market maker. There are no fees.

Authentication

Create a key under Settings → API keys (signed-in accounts), then send it with every trading request:

Authorization: Bearer lo_xxxxxxxxxxxxxxxx

Market data needs no key. Limit: 20 requests per second per account.

Endpoints

GET/api/v1/marketsLive markets: players, speed, fair value, best bid / ask, market_maker flag
GET/api/v1/markets/{id}One market: order book (?depth=), recent trades, board (FEN, last move, clocks, engine)
GET/api/v1/leaderboard?board=winners|bets|coins&period=day|week|month|year|all
POST/api/v1/markets/{id}/market-makerCommunity games: run the market maker with your own stake, {"stake": coins} (min 10,000; 1,000-coin fee)
GET/api/v1/chat/{room}Recent chat messages (lobby or a market id); POST {"text": …} to send (key needed)
GET/api/v1/max?market=id&side=buy|sell&type=market|limit&price= → the most contracts you could trade right now
POST/api/v1/dailyClaim today's 1,000 free coins (once per UTC day)
GET/api/v1/accountYour coins: cash, available (worst case, what you can still risk), net
GET/api/v1/positionsYour Yes contracts per market (negative = No)
GET/api/v1/ordersYour resting orders
POST/api/v1/ordersPlace: {"market": id, "side": "buy"|"sell", "qty": n, "type": "market"|"limit", "price": 1-99, "post_only": true|false}. market: fills now against the best offers (as many as you can afford), the rest is cancelled; price is an optional worst price. limit (default): rests until filled or cancelled; post_only refuses it if it would trade at once. → filled, avg_price, resting, cancelled, order id
DELETE/api/v1/orders/{id}Cancel one order
DELETE/api/v1/orders?market=idCancel all your orders (in one market, or everywhere)
WS/api/v1/stream?key=lo_…Live push: live (game list), market (every move and book change), me (your account)

Example (Python)

import requests
API = 'https://betlivechess.com/api/v1'
H = {'Authorization': 'Bearer lo_your_key'}

m = requests.get(f'{API}/markets').json()['markets'][0]
print(m['title'], 'fair', m['fair'], 'bid', m['best_bid'], 'ask', m['best_ask'])

# buy 10 Yes (White wins) at 45 or better
r = requests.post(f'{API}/orders', headers=H, json={'market': m['id'], 'side': 'buy', 'type': 'limit', 'price': 45, 'qty': 10})
print(r.json())          # {'id': 123, 'filled': 0, 'resting': 10, ...}

# buy 5 Yes right now at the market (paying at most 60)
r = requests.post(f'{API}/orders', headers=H, json={'market': m['id'], 'side': 'buy', 'type': 'market', 'price': 60, 'qty': 5})
print(r.json())          # {'filled': 5, 'avg_price': 52.0, 'cancelled': 0, ...}

Interactive reference: /docs

Add a market maker

Your stake backs a market maker on this game. It quotes a 3-coin spread around the engine's fair value and takes orders priced through it, so other players always have someone to trade with. It can never lose more than your stake. Whatever is left when the game ends comes back to you (profit or loss counts on the leaderboard).

Report a bug or send feedback

🪙

Daily bonus

+1,000 coins

Your free coins for today are ready. Come back every day for another 1,000.

Sign in