Python Api for mempool.space
Project description
pymempool
Python wrapper and terminal dashboard for the mempool.space API.
Installation
PyPI:
pip install pymempool
From source:
git clone https://github.com/holgern/pymempool.git
cd pymempool
python -m pip install -e .
Quick Start
from pymempool import MempoolAPI, RecommendedFees
mp = MempoolAPI()
fees = RecommendedFees(mp.get_recommended_fees_precise())
print(fees.as_dict())
mempool = mp.get_mempool()
print(mempool["count"], mempool["vsize"])
projected_blocks = mp.get_mempool_blocks_fee()
print(projected_blocks[0]["medianFee"])
Best First Commands
pymempool overview
pymempool pressure
pymempool ladder
pymempool watch
CLI Commands
# One-screen mempool dashboard
pymempool overview --precise-fees --blocks 6
# Fee pressure across human-readable bands
pymempool pressure
# Decision-first projected block ladder
pymempool ladder --limit 8
# Legacy ASCII mempool blocks view
pymempool mempool-blocks --limit 4
# Live mempool dashboard
pymempool watch --rbf fullRbf
# Stream raw websocket events
pymempool stream --want stats --want mempool-blocks
For command details:
pymempool --help
pymempool overview --help
API Highlights
from pymempool import MempoolAPI, MempoolWebSocketClient
mp = MempoolAPI()
rounded = mp.get_recommended_fees()
precise = mp.get_recommended_fees_precise()
recent = mp.get_mempool_recent()
audit = mp.get_block_audit_summary("<block_hash>")
client = MempoolWebSocketClient(want_data=["stats", "mempool-blocks"])
print(client.build_subscription_payloads())
Rate Limiting
pymempool now treats HTTP 429 Too Many Requests as back-pressure instead of a
generic fast retry. The client:
- rate-limits itself before sending REST requests with conservative per-host defaults
- honors integer
Retry-Afterheaders when present - applies exponential backoff with jitter when
Retry-Afteris absent - keeps cooldown state per host so failover stays resilient without turning into rate-limit evasion
- reuses short-lived cached snapshots for hot endpoints like fees, mempool summary, and projected blocks
- prefers WebSocket flows for live dashboards so
watchandstreamdo not depend on tight REST polling
You can tune the policy via MempoolAPI(...):
from pymempool import MempoolAPI
mp = MempoolAPI(
rate_limit_per_sec=1.0,
rate_limit_burst=5,
respect_retry_after=True,
enable_response_cache=True,
cache_ttl_seconds=3.0,
)
Development
Install dev and test dependencies:
uv pip install -r requirements.txt -r requirements-test.txt
Common checks:
pytest
pre-commit run --show-diff-on-failure --color=always --all-files
mypy pymempool
python docs/make.py
Documentation
- REST API reference: https://mempool.space/docs/api/rest
- Project docs:
docs/
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymempool-0.3.0.tar.gz.
File metadata
- Download URL: pymempool-0.3.0.tar.gz
- Upload date:
- Size: 57.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac1b8ae5a0fabee1f0839f5c7e5e5726bde3e2641836d1d0116d482ee33926d0
|
|
| MD5 |
50a9e8bd2d3f1468706c4b2980e9868f
|
|
| BLAKE2b-256 |
1b3c96a63ad37cc277000d8356b5369b7a13fdaf1017063bdf92ae29dae75af9
|
File details
Details for the file pymempool-0.3.0-py3-none-any.whl.
File metadata
- Download URL: pymempool-0.3.0-py3-none-any.whl
- Upload date:
- Size: 39.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6298b90bc28b8b3392c65a322e3e2ac9c3618cb541eb3d3dbd2566caf2c5a8d6
|
|
| MD5 |
0e1afaafc691037f669be30a7ff2af63
|
|
| BLAKE2b-256 |
d7de1411f930db1e6d2429a9c37545aa2afa3dc22c0914209f69f57d9acb3867
|