Ergo mainnet

API

Wallet API for Ergo. The same paths as the official explorer, on this host.

https://api.ergoscan.me/api/v1

/api/v1 and /v1 are one router. No API key. CORS is open.

Explorer · ergoscan.me

Compared with the official explorer

Official explorerErgoScan API
Wallet pathsapi.ergoplatform.com/api/v1/…The same path on api.ergoscan.me/api/v1/…
nanoERG and token amountsJSON numbersDecimal strings. Parse with BigInt.
Heights, indexes, sizes, timestampsJSON numbers. Timestamps are unix milliseconds.The same.
Box and transaction by idExplorer documentThe same field names. value is a string.
Register search and a full unspent dumpServedHTTP 501. A wallet does not need them.

Not served

These official paths return HTTP 501 { error: not_implemented, status: 501 }. Register predicates and an unbounded unspent dump can scan the whole chain.

  • POST /api/v1/boxes/search
  • POST /api/v1/boxes/unspent/search
  • POST /api/v1/boxes/unspent/search/union
  • GET /api/v1/boxes/unspent/stream
  • GET /api/v1/blocks/byGlobalIndex/stream

Amounts

nanoERG and token raw amounts are decimal strings, including inside boxes, balances, and assets. Official JSON numbers already lose precision past 2^53. Heights, indexes, sizes, and timestamps stay JSON numbers.

Index

globalIndex on a box or a transaction is ErgoScan's own sequence. The same box carries the same globalIndex in a list and in GET /boxes/{id}. It is not the official explorer's global index. dataInputs on a transaction is an empty list. inputs and outputs are filled.

Wallet paths

Paths are relative to /api/v1. Lists use items and total. total comes from the address summary. Prefer cursor when hasMore is true.

  • GET /boxes/unspent/byAddress/{address}
  • GET /boxes/unspent/unconfirmed/byAddress/{address}
  • GET /boxes/unspent/byTokenId/{tokenId}
  • GET /boxes/{boxId}
  • GET /transactions/{txId}
  • GET /addresses/{address}/balance/confirmed
  • GET /addresses/{address}/balance/total
  • GET /addresses/{address}/transactions
  • GET /tokens/{tokenId}
  • GET /tokens/bySymbol/{symbol}
  • GET /epochs/params
  • GET /blocks/headers
  • GET /info
  • GET /networkState
  • POST /mempool/transactions/submit
curl -sS https://api.ergoscan.me/api/v1/info
curl -sS https://api.ergoscan.me/api/v1/epochs/params

Rate limit

Reads: 120 requests per minute per IP. Submit: 10 per minute and 2 in flight. Over the limit the API returns HTTP 429 { error: rate_limited, retryAfterSec }.

/openapi.json
API