All posts
GuidesPolymarket APITestingTrading Bots

Does Polymarket Have a Testnet?

Short answer: no. Polymarket has never shipped a public testnet, and there is no sandbox environment or demo API. Your first real order is a real order, with real money, against real counterparties. Here is how experienced builders work around that.

9 min read

This surprises people coming from crypto exchanges, where a testnet is standard. Binance has one. Kalshi — Polymarket's closest competitor — runs a full sandbox at demo-api.kalshi.com that mirrors the production API with fake money. Polymarket has nothing equivalent.

So the practical question is not where is the testnet but how do I de-risk a strategy when the only environment is production? There are four approaches, and they catch different classes of bug. Most people need more than one.

Why there is no testnet

It is worth understanding the reason, because it explains why one is unlikely to appear. Polymarket is an on-chain order book settling on Polygon. A testnet would need more than a copy of the API — it would need a parallel deployment of the CTF exchange contracts, a testnet pUSD, a matching engine, and a synthetic order book with realistic liquidity on both sides.

That last part is the hard one. A sandbox order book with fake liquidity teaches you almost nothing useful, because the thing you actually need to learn is how your orders interact with real counterparties: what fills, at what price, with how much slippage. A testnet gives you a working integration and a false sense of an edge. Which is arguably worse than nothing.

The four ways to test without a testnet

ApproachCatchesMissesCost
Read-only integration testAuth, serialisation, parsing, rate limit handlingEverything about order behaviourFree
Backtesting on historical order booksWhether the strategy has an edge; slippage and fill realismLive infrastructure bugs, latency, partial-fill racesLow
Paper trading against live pricesPlumbing, timing, signal generation in real timeReal fills, market impact, queue positionFree, but slow — real time only
Minimum-size live ordersEverything, definitivelyNothing — but only at a size that may not be representativeReal money

1. Test everything that is not an order, for free

A surprising share of bot bugs have nothing to do with trading. Auth, request signing, clock drift, pagination, decimal handling, reconnect logic, rate limit backoff — all of it can be exercised against production read endpoints without spending anything or placing a single order.

The market data endpoints are public and unauthenticated. Point your bot at them, run it for a day, and you will surface most integration defects before any capital is at risk.

# Public, unauthenticated, safe to hammer (within rate limits).
curl -s "https://clob.polymarket.com/book?token_id=<TOKEN_ID>" | jq .

# Confirm your auth works without placing an order:
# a 200 here proves your key, secret, passphrase and clock are all correct.
curl -s "https://clob.polymarket.com/auth/api-keys" \
  -H "POLY_ADDRESS: $ADDRESS" \
  -H "POLY_SIGNATURE: $SIG" \
  -H "POLY_TIMESTAMP: $TS" \
  -H "POLY_NONCE: 0" | jq .

2. Backtest against historical order books

This is the closest thing to a testnet that exists, and it answers a question no testnet could: does this strategy actually make money?

The catch is that Polymarket's own API cannot give you the data. It serves the current state of the book — there is no historical depth archive, and when a market resolves it disappears from the public feeds entirely. You cannot reconstruct what the book looked like at 14:03:17 last Tuesday from the API, at any rate limit tier, on any plan.

So backtesting requires point-in-time snapshots that somebody recorded while the markets were running. That is what PolyTest does: 90M+ snapshots of Polymarket crypto Up/Down markets, with 8 levels of order book depth on both sides, sub-second timestamps, and resolved markets preserved rather than discarded.

# List recent BTC 5-minute Up/Down markets
curl -H "X-API-Key: $POLYTEST_KEY" \
  "https://api.polytest.io/api/v1/markets?coin=btc&market_type=5m&limit=20"

# Replay one market's book, snapshot by snapshot
curl -H "X-API-Key: $POLYTEST_KEY" \
  "https://api.polytest.io/api/v1/markets/$MARKET_ID/snapshots?include_orderbook=true"

3. Paper trade against live prices

Backtesting proves the edge existed historically. Paper trading proves your bot works now — that it reconnects, handles the 429s, reads the clock correctly and generates signals in real time under real conditions.

There is no Polymarket endpoint for this, so you build it: run your live strategy loop against production market data, and instead of calling POST /order, write the intended order to a log with the book state at that instant. Then mark it against what the book did next.

// A paper-trading shim: identical interface, no capital at risk.
interface OrderIntent {
  tokenId: string;
  side: "BUY" | "SELL";
  price: number;
  size: number;
}

class PaperExecutor {
  readonly fills: Array<OrderIntent & { at: number; bookTop: number }> = [];

  async submit(intent: OrderIntent, book: { asks: { price: number; size: number }[] }) {
    // Record what the book actually looked like at decision time —
    // this is what lets you mark the trade honestly afterwards.
    this.fills.push({ ...intent, at: Date.now(), bookTop: book.asks[0].price });
  }
}

// Swap this for the real CLOB client only once the numbers look right.
const executor = new PaperExecutor();

The limitation is honest and unavoidable: paper fills assume you got the fill. You will not learn about queue position or market impact this way. But you will learn whether your bot survives a week of uptime, which is a different and equally necessary thing.

4. Go live small

Eventually you have to place a real order, and the honest framing is that this is the test — everything before it is a rehearsal. Do it deliberately: minimum size, a single market, a hard position cap, and a kill switch you have actually tested.

  • Start at the market minimum size, not at your intended size.
  • Cap total exposure in code, not in your head.
  • Test the cancel path before the entry path. Being unable to exit is worse than being unable to enter.
  • Handle 503 cancel-only mode explicitly — a bot that re-quotes before cancelling can loop instead of flattening.
  • Log every request and response for the first week. You will need them.

What about Polymarket US?

Polymarket US, the regulated US-facing entity, is a separate matter. It has offered qualified integration partners access to a sandbox environment as part of onboarding, after which production credentials are issued. That is a commercial onboarding process for approved partners rather than a self-serve testnet — you cannot sign up and start hitting it this afternoon, and it does not help someone building against the main international CLOB.

A testing sequence that works

  1. Integration test read-only, against production market data. Prove auth, parsing and backoff. Free, one day.
  2. Backtest on historical order books with realistic fill simulation. Prove the edge exists and survives spread. This is where most strategies die — better here than with money.
  3. Paper trade live for at least a week. Prove the bot is operationally sound: uptime, reconnects, rate limits, clock.
  4. Go live at minimum size with a hard exposure cap and a tested kill switch.
  5. Scale only after the live numbers match the paper numbers. If they diverge, your fill model was wrong — go back to step 2.

Steps 1, 3 and 4 you can build yourself in a few days. Step 2 is the one that needs data you cannot get from Polymarket, and it is also the one that most often saves people money. Start free on PolyTest — no card, and the free tier is enough to see whether your idea holds up.

Frequently asked questions

Does Polymarket have a testnet?
No. Polymarket has no public testnet, sandbox, demo API or test account. As of September 2026 the terms testnet, sandbox, demo and paper trading do not appear anywhere in Polymarket's official documentation. The production CLOB is the only environment available, so your first real order is placed with real money.
Is there a Polymarket sandbox or demo API for developers?
There is no self-serve sandbox. Polymarket US has offered a sandbox environment to qualified integration partners as part of commercial onboarding, but that is an approval-gated process rather than a public test environment, and it does not apply to the main international CLOB API.
How do I test a Polymarket trading bot without risking money?
Use three layers. First, integration-test everything that is not an order against production read endpoints — auth, parsing, rate limit handling — which is free. Second, backtest the strategy against historical order book snapshots with realistic fill simulation. Third, paper trade against live prices by logging intended orders instead of submitting them. Only then go live at minimum size.
Can I get historical Polymarket data to backtest against?
Not from Polymarket's own API, which serves only current market state and drops resolved markets from public feeds. You need point-in-time snapshots recorded while markets were live. PolyTest provides 90M+ such snapshots of Polymarket crypto Up/Down markets with 8 levels of order book depth and sub-second timestamps, including resolved markets.
Does Kalshi have a testnet when Polymarket does not?
Yes. Kalshi runs a full sandbox at demo-api.kalshi.com that mirrors its production API with simulated funds. It is one of the clearest practical differences between building on the two platforms, and it is why Polymarket builders lean much more heavily on backtesting and paper trading.

Get the historical data Polymarket does not keep

PolyTest records Polymarket crypto Up/Down markets as they run — 90M+ snapshots with 8 levels of order book depth, sub-second timestamps, and resolved markets preserved. Free tier, no card.

Keep reading