This guide will walk you through migrating from Mempool.space to Maestro’s Esplora API service. Maestro provides an Esplora-compatible REST API for querying Bitcoin data: addresses, transactions, blocks, and the mempool. This enables users currently relying on Mempool.space for their Bitcoin data to utilize Maestro as their provider and enjoy significant savings with minimal switching cost. Transitioning from Mempool.space involves mapping endpoints to their Maestro counterparts and adjusting the URL and request structures accordingly.

About Esplora

Esplora is a block explorer and RESTful API framework developed and maintained by Blockstream. The service offers a lightweight, high-performance interface for querying Bitcoin blockchain data including blocks, transactions, addresses, and the mempool.

Prerequisites

  1. Obtain a Maestro API key.
  2. Review Bitcoin API documentation.

Base URL

NetworkMempool.spaceMaestro
Mainnethttps://mempool.space/apihttps://xbt-mainnet.gomaestro-api.org/v0/esplora
Testnet4https://mempool.space/testnet4/apihttps://xbt-testnet.gomaestro-api.org/v0/esplora

Headers

Mempool.spaceMaestro
-api-key

Examples

# Maestro
curl -sSL "https://xbt-mainnet.gomaestro-api.org/v0/esplora/address/bc1qcx7ys0ahvtfqcc63sfn6axls0qrhkadnslpd94" \
--header 'Accept: application/json' \
--header 'api-key: <MAESTRO_API Key>'

# Mempool.space
curl -sSL "https://mempool.space/api/address/bc1qcx7ys0ahvtfqcc63sfn6axls0qrhkadnslpd94"

Supported Areas

Maestro’s Esplora-compatible API supports:
ServiceSupported
Addresses
Blocks
General-
Mining-
Fees-
Mempool
Transactions
Lightning-
Accelerator (Public)-
Accelerator (Authenticated)-

Address

Mempool.spaceMaestro
/api/address/:address/address/:address
/api/address/:address/txs/address/:address/txs
/api/address/:address/txs/chain/address/:address/txs/chain
/api/address/:address/txs/mempool/address/:address/txs/mempool
/api/address/:address/utxo/address/:address/utxo

Block

Mempool.spaceMaestro
/api/block/:hash/block/:hash
/api/block/:hash/header/block/:hash/:header
/api/block/:hash/status/block/:hash/status
/api/block/:hash/txs[/:start_index]/block/:hash/txs/:start_index
/api/block/:hash/txids/block/:hash/txids
/api/block/:hash/txid/:index/block/:hash/txid/:index
/api/block/:hash/raw/block/:hash/raw
/api/blocks[/:start_height]/blocks/:start_height
/api/block-height/:height/block-height/:height
/api/blocks/tip/height/blocks/tip/height
/api/blocks/tip/hash/blocks/tip/hash

Mempool

Mempool.spaceMaestro
/api/mempool/mempool
/api/mempool/txids/mempool/txids
/api/mempool/recent/mempool/recent

Transaction

Mempool.spaceMaestro
/api/tx/:txid/merkeblock-proof/tx/:txid/merkleblock-proof
/api/tx/:txid/merkle-proof/tx/:txid/merkle-proof
/api/tx/:txid/outspend/:vout/tx/:txid/outspend/:vout
/api/tx/:txid/outspends/tx/:txid/outspends
/api/tx/:txid/raw/tx/:txid/raw
/api/tx/:txid/rbf/tx/:txid/rbf
/api/tx/:txid/status/tx/:txid/status
/api/tx/:txid/tx/:txid
/api/tx/:txid/hex/tx/:txid/hex
/api/tx (POST)/tx (POST)

Key Differences

  • Maestro is focused on Bitcoin mainnet/testnet4 data; no Liquid or Lightning support
  • Maestro returns identical JSON structures to Esplora spec, making migration straightward
  • Some endpoints such as stats, mining/pools, or prices must be implemented elsewhere if needed

Using the Esplora-BDK-Proxy for Maestro API Key Authorization

When migrating from Mempool.space to Maestro’s Esplora API, applications that rely on the BDK (Bitcoin Development Kit) may encounter authorization issues. Maestro’s Esplora API requires an api-key to be included in every request, while many BDK integrations (or other Esplora clients) don’t natively support adding custom headers. The Maestro Esplora-BDK-Proxy solves this problem by acting as a lightweight, local proxy that automatically injects your Maestro API key into requests.

Why You Need It

  • BDK limitation: No built-in method to send custom headers like api-key.
  • Solution: Run the Esplora-BDK-Proxy locally; your BDK app connects to it instead of calling Maestro directly.
  • Benefit: Transparent to your BDK code—no code changes needed beyond pointing to the proxy URL.

Installation & Configuration

1. Clone the Repository
git clone https://github.com/maestro-org/maestro-esplora-proxy.git && cd maestro-esplora-proxy
2. Configure Environment Copy the .env.example file to .env:
cp .env.example .env
Edit .env and set:
MAESTRO_API_KEY=your-maestro-api-key-here

# For Mainnet
ESPLORA_URL=https://xbt-mainnet.gomaestro-api.org/v0/esplora

# For Testnet4 (uncomment if needed)
# ESPLORA_URL=https://xbt-testnet.gomaestro-api.org/v0/esplora
3. Run the Proxy
cargo run
By default, the proxy listens on http://localhost:8080.

Updating Your BDK Code

In your BDK initialization, replace the direct Maestro Esplora URL with the proxy’s local address:
let blockchain = EsploraBlockchain::new("http://localhost:8080", 20);
Your BDK app now makes requests to the proxy, which automatically appends the api-key and forwards requests to Maestro’s Esplora API.

🎉 You’re Done!

You now have walked through a guide on how to migrate from Mempool.space to Maestro as your de-facto on-chain data provider.

Additional Resources

Be sure to review Maestro’s rate limits and pricing tiers to select the plan that best fits your application’s needs.
SupportIf you are experiencing any trouble with the above, reach out on Discord.