BYTETOOLS

Gemini API

Free Gemini public API with no key: bid, ask, last price and 24-hour volume in both base and quote currency for any trading pair. Tested curl example and live response.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Gemini API?

The Gemini public API is a free, key-free market data API. Its pubticker endpoint returns the current bid, ask and last trade price for a pair, plus 24-hour volume expressed in both the base and the quote currency.

Gemini is a New York trust company, and that shapes its API more than you might expect: the public surface is deliberately small, stable and well-behaved, with no versioning churn and no key for market data. The v1 pubticker endpoint has looked the same for years, which is worth something when you are choosing a dependency.

The response has one structural quirk worth knowing. Volume is not a scalar — it is a nested object holding the 24-hour figure in **both** currencies of the pair, so `volume.BTC` and `volume.USD` describe the same trading in different denominations, alongside a millisecond timestamp. Every price is a string to avoid float rounding, and the volume window is a rolling 24 hours that rolls at the top of each hour rather than a UTC calendar day.

Quick facts

Base URL
https://api.gemini.com/v1
Authentication
No key for public market data. Order placement, balances and account endpoints require API credentials with request signing.
Rate limit
Roughly 120 requests per minute per IP for public endpoints, with short bursts allowed.
Pricing
Free for public market data.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Gemini API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Live BTC/USD ticker

GET https://api.gemini.com/v1/pubticker/btcusd

curl
curl 'https://api.gemini.com/v1/pubticker/btcusd'
JavaScript (fetch)
const res = await fetch("https://api.gemini.com/v1/pubticker/btcusd");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.gemini.com/v1/pubticker/btcusd", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "bid": "76485.20000",
  "ask": "76486.77000",
  "last": "76486.65000",
  "volume": {
    "BTC": "406.75781525",
    "USD": "31111542.6497914125",
    "timestamp": 1787298300000
  }
}

Parameters

ParameterTypeRequiredDescription
symbolpath segmentRequiredTrading pair in lowercase with no separator, such as `btcusd` or `ethbtc`. btcusd
/pubticker/{symbol}pathRequiredThe v1 ticker used in the example — the smallest and most stable shape. btcusd
/v2/ticker/{symbol}pathOptionalThe v2 ticker adds open, high, low, close and recent hourly candles. btcusd

Response fields

bidstring
Highest current bid price. A string, not a number.
askstring
Lowest current ask price. The gap to `bid` is the spread.
laststring
Price of the most recent trade — the number most people mean by 'the price'.
volumeobject
Nested object rather than a scalar, holding volume in both currencies of the pair.
volume.{BASE}string
24-hour volume denominated in the base currency, for example BTC.
volume.{QUOTE}string
The same 24 hours denominated in the quote currency, for example USD.
volume.timestampinteger
Unix **milliseconds** marking the end of the volume window.

What you can build with the Gemini API

  • Show a live crypto price on a dashboard or website
  • Compare bid-ask spreads across exchanges
  • Read 24-hour volume in either currency without converting it yourself
  • Monitor a pair without holding exchange credentials

Common errors and how to fix them

404

Unknown symbol.

Fix: Symbols are lowercase with no separator — `btcusd`, not `BTC-USD` or `BTC/USD`.

429

Rate limit exceeded.

Fix: Back off and cache. A ticker cached for a few seconds is indistinguishable from a live one for most displays.

Volume field is not a number

`volume` is an object keyed by currency.

Fix: Read `volume.BTC` or `volume.USD` explicitly. Which keys exist depends on the pair you requested.

Timestamp a thousand years out

Milliseconds parsed as seconds.

Fix: `volume.timestamp` is in milliseconds. Divide by 1000 for a seconds-based date function.

Gemini API — frequently asked questions

Is the Gemini API free without an API key?

Yes, all public market data — ticker, order book, trades and candles — needs no key. Only trading and account endpoints require credentials with request signing.

Why is volume an object instead of a number?

Because Gemini reports the same 24 hours of trading in both currencies of the pair. `volume.BTC` and `volume.USD` are two views of one figure, plus a timestamp for the window end.

What is the difference between the v1 and v2 ticker?

v1 pubticker returns bid, ask, last and volume in a minimal shape. v2 adds open, high, low, close and recent hourly candles. Use v1 for a price display and v2 when you need intraday context.

Can I call Gemini's public API from the browser?

Yes. The public endpoints return permissive CORS headers, so a direct fetch works. Since no key is involved, there is also no secret to expose by doing so.

Tools that pair with this API

Gemini is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.