# Bitget API: REST and WebSocket

Independent and unofficial. Not affiliated with or endorsed by any broker or platform named here. Educational only: nothing here is advice, and nothing here recommends a broker or a trade.

This is the markdown version of https://openbrokerapi.com/brokers/bitget, written from the same records as that page.

Risk warning: CFDs and spread bets are complex instruments and come with a high risk of losing money rapidly due to leverage. You can lose money on these products, and each provider publishes its own loss figure under FCA rules. You should consider whether you understand how they work and whether you can afford to take the high risk of losing your money. Automated and API trading can amplify losses through bugs, connectivity failures and runaway orders.

A crypto exchange with a REST and WebSocket API of its own.

- Kind: Broker API
- Newest reading: 2026-10-12
- Official documentation: [bitget.com](https://www.bitget.com/docs/uta/Introduction)
- Everything recorded for Bitget, as one JSON file: https://openbrokerapi.com/data/brokers/bitget.json

## Bitget API rate limits and allowances

One record per limit. The scope is part of the limit: a figure without its scope is not a figure you can pace against.

- Public market data, legacy v1 API: 20 per 2 s per IP, public market data
  - Scope: Per IP address, public market data endpoints of the legacy v1 API
  - Status: verified. Source: [bitgetlimited.github.io](https://bitgetlimited.github.io/apidoc/en/spot/), checked 2026-10-12.
  - Note: Re-read on the legacy v1 documentation on 12 Oct 2026: 20 requests in 2 seconds. Authenticated endpoints there are set per endpoint per UID, and a general endpoint with no figure of its own is 10 a second. HTTP 429 on breach. The window is 2 seconds, which a single unit cannot state, so the figure stays as wording. The current API states its own overall limit, held in a separate record.
- Overall requests a minute: 6,000 requests per minute
  - Scope: Per IP address, all requests to the common domain name, with REST and WebSocket sharing one allowance
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: Each endpoint also carries its own limit on its own documentation page, counted separately. HTTP 429 on breach.
- Concurrent WebSocket connections: 100 connections
  - Scope: Per IP address
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: Also 300 connection requests per IP in 5 minutes.
- WebSocket messages a second: 10 messages per second
  - Scope: Per WebSocket connection, counting ping, login, subscribe and unsubscribe messages
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: A connection that sends more is disconnected, and an IP that is disconnected repeatedly may be blocked.
- WebSocket subscription requests an hour: 240 subscription requests per hour
  - Scope: Per WebSocket connection
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
- Concurrent WebSocket channel subscriptions: 1,000 channel subscriptions
  - Scope: Per WebSocket connection
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Note: Bitget recommends fewer than 50 channels on one connection.

[Bitget API rate limits in full](https://openbrokerapi.com/brokers/bitget/rate-limits), with the related error codes.

## Access, authentication and streaming

- How you get a key: Log in to the Bitget website and create an API key under API Key Management. Each key set is an API key, a secret key and a passphrase you choose, with read or read and write permissions, and one UID can hold up to 50 key sets. Bitget recommends binding the key to an IP address.
  - Status: verified. Source: [Bitget API quick start](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
- Demo: Yes: demo trading with virtual funds. Switch the account to Demo mode on the website, create a Demo API key there, then send REST requests to the usual host with the header paptrading set to 1. WebSocket demo trading has its own addresses on wspap.bitget.com.
  - Status: verified. Source: [Bitget API quick start, Demo Trading](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
- Authentication: Signed requests. Every REST request carries the headers ACCESS-KEY, ACCESS-SIGN, ACCESS-TIMESTAMP and ACCESS-PASSPHRASE. The signature is the timestamp, the upper case method, the request path, the query string and the body joined together, signed with HMAC SHA256 using the secret key (or with an RSA private key) and then Base64 encoded. For REST the page gives the timestamp in milliseconds since the epoch, and its sample code computes it that way. The WebSocket login is signed in a similar way, but Bitget's page is not consistent about its timestamp unit, so this record states none for it; the login message page sets out both readings.
  - Status: verified. Source: [Bitget API quick start, Header and Signature](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
- Streaming: WebSocket, with a public channel and a private channel that needs a login message. Stated on the quick start page: at most 100 connections per IP, 300 connection requests per IP in 5 minutes, at most 1,000 channel subscriptions per connection (Bitget advises fewer than 50), 240 subscription requests an hour per connection, and up to 10 messages a second per connection. Send the string ping every 30 seconds; the server disconnects after 2 minutes without one.
  - Status: verified. Source: [Bitget API quick start, WebSocket](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
- Rate limits, as worded: The quick start page for the current API states an overall limit of 6,000 requests a minute per IP on the common domain name, with each endpoint also carrying its own limit on its own documentation page, counted separately. REST and WebSocket share one allowance, and a breach returns HTTP 429. The response header x-mbx-used-remain-limit reports what is left for the endpoint called. Bitget's legacy v1 documentation, still published, states 20 requests in 2 seconds for public market data and 10 a second for a general endpoint with no figure of its own.
  - Status: verified. Source: [Bitget API quick start, Rate Limit](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.
  - Status: verified. Source: [Bitget API docs (legacy v1), frequency limiting rules](https://bitgetlimited.github.io/apidoc/en/spot/), checked 2026-10-12.

## Bitget messages

10 documented messages. They are not HTTP endpoints: none has a method or a path. [Grouped by what they do](https://openbrokerapi.com/brokers/bitget/messages).

- [account](https://openbrokerapi.com/brokers/bitget/messages/account) (Bitget WebSocket API): The unified trading account: equity, margin figures and the balance of each coin. Bitget says data is pushed on first subscribing, when orders are filled, when funds are settled and when a balance changes.
- [books](https://openbrokerapi.com/brokers/bitget/messages/books) (Bitget WebSocket API): Order book depth for one symbol. The topic chooses the depth: books for every level, books1 for 1, books5 for 5 and books50 for 50. books and books50 send a snapshot first and then incremental updates, while books1 and books5 send a snapshot every time.
- [fill](https://openbrokerapi.com/brokers/bitget/messages/fill) (Bitget WebSocket API): The fills of the unified trading account in real time. Bitget says nothing is pushed on first subscribing, and that a push follows when a spot, leveraged or futures order is filled.
- [kline](https://openbrokerapi.com/brokers/bitget/messages/kline) (Bitget WebSocket API): Candlesticks for one symbol at one interval. Bitget says data is pushed once a second while there are trades, and once per interval when there are none.
- [login](https://openbrokerapi.com/brokers/bitget/messages/login) (Bitget WebSocket API): Logs a WebSocket connection in, so that private channels can be subscribed to. It carries the API key, its passphrase, a timestamp and a signature of that timestamp made with the secret key. Bitget says a failed login disconnects the connection.
- [order](https://openbrokerapi.com/brokers/bitget/messages/order) (Bitget WebSocket API): The orders of the unified trading account. Bitget says nothing is pushed on first subscribing, and that a push follows when a spot, margin or futures order is placed, filled or cancelled.
- [ping](https://openbrokerapi.com/brokers/bitget/messages/ping) (Bitget WebSocket API): Keeps a connection alive. It is the plain string ping, not JSON, and the server answers with the string pong. Bitget recommends sending it every 30 seconds and says the server disconnects after 2 minutes without one.
- [position](https://openbrokerapi.com/brokers/bitget/messages/position) (Bitget WebSocket API): The positions of the unified trading account. Bitget says data is pushed on first subscribing, and then incrementally when futures positions are opened or closed and when orders that close a position are placed, changed or cancelled.
- [publicTrade](https://openbrokerapi.com/brokers/bitget/messages/publictrade) (Bitget WebSocket API): The public trades of one symbol, pushed in real time: the price, the size, the side and the time of each fill.
- [ticker](https://openbrokerapi.com/brokers/bitget/messages/ticker) (Bitget WebSocket API): The latest price of one symbol with its best bid and ask and its 24 hour figures. Bitget says updates are pushed every 200 ms while the market is changing.

## Bitget API SDKs and wrappers

- bitget-java-sdk-api (Java, Official): Listed as an official SDK on Bitget's SDK page. The repository itself was not opened.
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/sdk/overview), checked 2026-10-12.
- bitget-python-sdk-api (Python, Official): Listed as an official SDK on Bitget's SDK page. The repository itself was not opened.
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/sdk/overview), checked 2026-10-12.
- bitget-node-sdk-api (Node.js, Official): Listed as an official SDK on Bitget's SDK page. The repository itself was not opened.
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/sdk/overview), checked 2026-10-12.
- bitget-golang-sdk-api (Go, Official): Listed as an official SDK on Bitget's SDK page. The repository itself was not opened.
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/sdk/overview), checked 2026-10-12.
- bitget-php-sdk-api (PHP, Official): Listed as an official SDK on Bitget's SDK page. The repository itself was not opened.
  - Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/sdk/overview), checked 2026-10-12.

## Bitget API: questions and answers

### Does Bitget have an API?

Yes. This register records Bitget as having its own API (REST and WebSocket), with availability marked as active. A crypto exchange with a REST and WebSocket API of its own.

- Status: verified. Source: [Bitget API introduction](https://www.bitget.com/docs/uta/Introduction), checked 2026-10-12.

### Bitget API key: how do I get one?

Log in to the Bitget website and create an API key under API Key Management. Each key set is an API key, a secret key and a passphrase you choose, with read or read and write permissions, and one UID can hold up to 50 key sets.

- Status: verified. Source: [Bitget API quick start](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.

### Bitget API demo: is there a demo or sandbox?

Yes: demo trading with virtual funds. Switch the account to Demo mode on the website, create a Demo API key there, then send REST requests to the usual host with the header paptrading set to 1. WebSocket demo trading has its own addresses on wspap.bitget.com.

- Status: verified. Source: [Bitget API quick start, Demo Trading](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.

### What are the Bitget API rate limits?

Public market data, legacy v1 API: 20 per 2 s per IP, public market data. Scope: Per IP address, public market data endpoints of the legacy v1 API. Overall requests a minute: 6,000 requests per minute. Scope: Per IP address, all requests to the common domain name, with REST and WebSocket sharing one allowance. Concurrent WebSocket connections: 100 connections. Scope: Per IP address. WebSocket messages a second: 10 messages per second. Scope: Per WebSocket connection, counting ping, login, subscribe and unsubscribe messages. WebSocket subscription requests an hour: 240 subscription requests per hour. Scope: Per WebSocket connection. Concurrent WebSocket channel subscriptions: 1,000 channel subscriptions. Scope: Per WebSocket connection. As the record words it: The quick start page for the current API states an overall limit of 6,000 requests a minute per IP on the common domain name, with each endpoint also carrying its own limit on its own documentation page, counted separately.

- Status: verified. Source: [bitgetlimited.github.io](https://bitgetlimited.github.io/apidoc/en/spot/), checked 2026-10-12.
- Status: verified. Source: [bitget.com](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.

### How does Bitget API authentication work?

Signed requests. Every REST request carries the headers ACCESS-KEY, ACCESS-SIGN, ACCESS-TIMESTAMP and ACCESS-PASSPHRASE.

- Status: verified. Source: [Bitget API quick start, Header and Signature](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.

### Does the Bitget API support streaming?

WebSocket, with a public channel and a private channel that needs a login message.

- Status: verified. Source: [Bitget API quick start, WebSocket](https://www.bitget.com/docs/uta/quick-start), checked 2026-10-12.

### Is there a Python library for the Bitget API?

This register lists one Python library for the Bitget API. bitget-python-sdk-api (official, Python): Listed as an official SDK on Bitget's SDK page. The repository itself was not opened.

- Status: verified. Source: [bitget-python-sdk-api](https://www.bitget.com/docs/uta/sdk/overview), checked 2026-10-12.

[Bitget API questions, each answered in a sentence or two](https://openbrokerapi.com/answers/bitget).

## Partner programme

Not verified. No programme page could be opened at the last check, 2026-10-05, which is not evidence that no programme exists. [The Bitget partner programme record](https://openbrokerapi.com/partners/bitget). This site carries no affiliate links.

## Licence and how to cite

The limit records on this page come from the limits register, which is CC BY 4.0 (https://openbrokerapi.com/data/limits.json). Everything else on it comes from records that are all rights reserved. This file is the page itself, at its own address, in another format, and it is not part of the CC BY 4.0 downloads listed at https://openbrokerapi.com/data.

Cite as: Bitget API: REST and WebSocket. Broker API Hub, https://openbrokerapi.com/brokers/bitget, newest check 2026-10-12.

Where you rely on a single figure, cite the source and the checked date printed beside it as well. Where this page and a broker's own documentation differ, the documentation wins.
