Skip to main content

Unified Python client for Etherscan, Routescan and Blockscout EVM block explorer APIs

Project description

blockparty

A unified Python client for EVM block explorer APIs — Etherscan, Routescan, and Blockscout.

Normalizes responses across providers, supports both sync and async usage, provides automatic fallback across providers, and builds frontend explorer URLs.

Installation

pip install blockparty

For httpx support:

pip install "blockparty[httpx]"

Requires Python ≥ 3.10.

Features

  • Multi-provider support — Etherscan, Routescan, and Blockscout behind one API
  • Normalized responses — Consistent Pydantic models regardless of which explorer answered
  • Sync and asyncSyncBlockpartyClient and AsyncBlockpartyClient
  • Provider fallback — Clients try providers in order, automatically falling back on transient errors
  • Shared rate limiting — Per-(provider, api_key) token bucket shared across all clients via ProviderSet
  • Pluggable HTTP backend — aiohttp + requests (default) or httpx (optional)
  • Transport injection — Pass your own aiohttp.ClientSession or httpx.AsyncClient
  • Response caching — Configurable TTL, per-request force_refresh override
  • Retry with backoff — Exponential backoff + jitter on transient errors
  • Frontend URL builder — Generate explorer links for addresses, transactions, tokens, and blocks
  • Bundled chain registry — 600+ chains with offline lookup and CLI regeneration

Quick Start

Async

from blockparty import AsyncBlockpartyClient

async with AsyncBlockpartyClient(chain_id=8453) as client:
    response = await client.get_internal_transactions(
        address="0x4200000000000000000000000000000000000006",
        start_block=7775467,
        limit=10,
        sort="asc",
    )
    for tx in response.result:
        print(f"{tx.hash}: {tx.value} wei")

Sync

from blockparty import SyncBlockpartyClient

with SyncBlockpartyClient(chain_id=8453) as client:
    response = client.get_internal_transactions(address="0x...", limit=10)

No API key required — blockparty auto-resolves to the best available explorer (priority: Etherscan > Routescan > Blockscout).

What Else It Does

Client configuration — Explicit explorer types, API keys, tier selection, httpx backend, transport injection, cache tuning.

Shared providersProviderSet shares rate limit budgets across clients, supports per-chain API keys via chain_ids, and gives every client automatic fallback with FallbackWarning.

Connection poolAsyncBlockpartyPool / SyncBlockpartyPool caches clients per chain and delegates all fallback logic to ProviderSet.

URL builder.urls for the preferred explorer, .urls_for(resp.provider) for the explorer that actually served a response. Supports Etherscan, Routescan (vanity + generic), and Blockscout.

Chain registry — 600+ chains bundled, offline lookup by ID or name search, custom JSON files, CLI regeneration.

Rate limits & tiers — Built-in tier enums for all three providers, CustomRateLimit for enterprise plans, Blockscout adaptive headers.

Development

git clone https://github.com/your-org/blockparty.git
cd blockparty
pip install -e ".[dev]"
pytest
ruff check src/ tests/

See CONTRIBUTING.md for how to add new endpoints, run tests, and submit changes.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

blockparty-0.7.1.tar.gz (203.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blockparty-0.7.1-py3-none-any.whl (80.0 kB view details)

Uploaded Python 3

File details

Details for the file blockparty-0.7.1.tar.gz.

File metadata

  • Download URL: blockparty-0.7.1.tar.gz
  • Upload date:
  • Size: 203.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for blockparty-0.7.1.tar.gz
Algorithm Hash digest
SHA256 8b23bdb05e251c86af94968c2502dd33b0a74a5e01941fe1129fe6941cb4ec74
MD5 807ae3a5e1e71aefeb7268a1a49bbce8
BLAKE2b-256 73f76acafb1c5560d4523f4b36d80f3cb9db24a904823c7222d388fc3b1b6653

See more details on using hashes here.

Provenance

The following attestation bundles were made for blockparty-0.7.1.tar.gz:

Publisher: publish.yml on DefiDebauchery/blockparty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file blockparty-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: blockparty-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 80.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for blockparty-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 23672cd49100f5b2f81ee7a424990e5b7ccfe6f2b6ecce3f3b94c586354b9bda
MD5 be91aa14559d30a29083ed145ec0dc92
BLAKE2b-256 ea00b9eed276333557f033e3b8910024faa1964a6c12a590d9e675aeffa7be9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for blockparty-0.7.1-py3-none-any.whl:

Publisher: publish.yml on DefiDebauchery/blockparty

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page