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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pymempool-0.3.0.tar.gz
(57.4 kB
view details)
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
pymempool-0.3.0-py3-none-any.whl
(39.4 kB
view details)
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
|