Blockchain — entry 002 of 11

Blockscout

Verified Sep 2026

Blockscout is the open-source, EVM-compatible block explorer behind dozens of public chain explorers (Ethereum mainnet, its L2s, and more), and its REST v2 API exposes the same block, address, token, and transaction data that powers those explorer UIs. No signup or API key is required for the per-instance hosted public REST API, though anonymous callers are rate-limited per endpoint (confirmed live: `x-ratelimit-limit` varies by route, e.g. 180 on an address lookup vs. 10 on `/stats`); docs.blockscout.com also flags this per-instance API for deprecation in favor of a separate, paid, API-key-gated multichain "PRO API," though the free per-instance API this entry tracks was still live and keyless as of this run's probe. Every response is JSON.

Blockscout is the open-source block explorer behind dozens of public chain explorers, and its REST v2 API exposes the same address, transaction, and stats data that powers the explorer UI. A live GET to eth.blockscout.com/api/v2/addresses/{address} in this run returned full real account data — balance, contract-verification status, resolved ENS name — with zero credentials, and access-control-allow-origin: * on every call. eth.blockscout.com is documented here as the Ethereum-mainnet instance; Blockscout also runs a separate hosted instance per chain (L2s, sidechains, and more) behind the same API shape.

block-exploreropen-sourceevmmultichainrest-api
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/blockscout/"><img src="https://greatapis.com/badge/blockscout.svg" alt="Scored 94 on greatapis.com"></a>

Auth quickstart

  1. No API key or signup required for this per-instance public REST API — every probe in this run answered with no auth header sent at all. Anonymous callers are rate-limited per endpoint (see gotchas); a bypass-429-option: temporary_token response header points at a captcha-gated temporary token for higher throughput, and Blockscout also sells a separate, paid, multichain "PRO API" (dev.blockscout.com) with its own API keys and higher limits — not required for the reads this quickstart covers.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

CelestiaService3
GET/api/v1/celestia/blob
Parameters
NameInRequiredType
heightquerynostring
commitmentquerynostring
skipDataquerynoboolean
Responses
StatusDescriptionSchema
200A successful response.v1CelestiaBlob
defaultAn unexpected error response.rpcStatus
GET/api/v1/celestia/l2BatchMetadata
Parameters
NameInRequiredType
heightquerynostring
namespacequerynostring
commitmentquerynostring
Responses
StatusDescriptionSchema
200A successful response.v1CelestiaL2BatchMetadata
defaultAn unexpected error response.rpcStatus
GET/healthIf the requested service is unknown, the call will fail with status NOT_FOUND.
Parameters
NameInRequiredType
servicequerynostring
Responses
StatusDescriptionSchema
200A successful response.v1HealthCheckResponse
defaultAn unexpected error response.rpcStatus
addresses15
GET/addressesget native coin holders list
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/addresses/{address_hash}get address info
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200addressAddress
400bad input parameter—
GET/addresses/{address_hash}/blocks-validatedget blocks validated by address
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/coin-balance-historyget address coin balance history
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/coin-balance-history-by-dayget address coin balance history by day
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/countersget address counters
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200addressAddressCounters
400bad input parameter—
GET/addresses/{address_hash}/internal-transactionsget address internal transactions
Parameters
NameInRequiredType
address_hashpathyesstring
filterquerynostring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/logsget address logs
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/nftget list of NFT owned by address
Parameters
NameInRequiredType
address_hashpathyesstring
typequerynostring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/nft/collectionsget list of NFT owned by address, grouped by collection
Parameters
NameInRequiredType
address_hashpathyesstring
typequerynostring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/token-balancesget all tokens balances for the address
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/token-transfersget address token transfers
Parameters
NameInRequiredType
address_hashpathyesstring
typequerynostring
filterquerynostring
tokenquerynostring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/tokenstoken balances with filtering and pagination
Parameters
NameInRequiredType
address_hashpathyesstring
typequerynostring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/transactionsget address transactions
Parameters
NameInRequiredType
address_hashpathyesstring
filterquerynostring
Responses
StatusDescriptionSchema
200address—
400bad input parameter—
GET/addresses/{address_hash}/withdrawalsget address withdrawals
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200pay attention that receiver field is not included to response in this endpoint—
400bad input parameter—
blocks4
GET/blocksget blocks
Parameters
NameInRequiredType
typequerynostring
Responses
StatusDescriptionSchema
200block—
400bad input parameter—
GET/blocks/{block_number_or_hash}get block info
Parameters
NameInRequiredType
block_number_or_hashpathyesstring
Responses
StatusDescriptionSchema
200blockBlock
400bad input parameter—
GET/blocks/{block_number_or_hash}/transactionsget block transactions
Parameters
NameInRequiredType
block_number_or_hashpathyesstring
Responses
StatusDescriptionSchema
200block—
400bad input parameter—
GET/blocks/{block_number_or_hash}/withdrawalsget block withdrawals
Parameters
NameInRequiredType
block_number_or_hashpathyesstring
Responses
StatusDescriptionSchema
200block's withdrawals (pay attention that block_number together with timestamp fields is not included to response in this endpoint)—
400bad input parameter—
internal-transactions1
GET/internal-transactionsget internal transactions
Responses
StatusDescriptionSchema
200internal transactions—
main-page3
GET/main-page/blocksget main page blocks
Responses
StatusDescriptionSchema
200blocks—
GET/main-page/indexing-statusget indexing status
Responses
StatusDescriptionSchema
200indexing statusIndexingStatus
GET/main-page/transactionsget main page transactions
Responses
StatusDescriptionSchema
200transactions—
proxy1
GET/proxy/account-abstraction/statusget account abstraction indexing status
Responses
StatusDescriptionSchema
200A successful response.v1IndexerStatus
500unexpected error—
search2
GET/searchsearch
Parameters
NameInRequiredType
qquerynostring
Responses
StatusDescriptionSchema
200search response—
400bad input parameter—
GET/search/check-redirectsearch redirect
Parameters
NameInRequiredType
qquerynostring
Responses
StatusDescriptionSchema
200search responseSearchResultRedirect
400bad input parameter—
smart-contracts3
GET/smart-contractsget verified smart contracts
Parameters
NameInRequiredType
qquerynostring
filterquerynostring
Responses
StatusDescriptionSchema
200smart contract—
400bad input parameter—
GET/smart-contracts/countersget verified smart contracts counters
Responses
StatusDescriptionSchema
200smart contracts counters—
400bad input parameter—
GET/smart-contracts/{address_hash}get smart contract
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200smart contractSmartContract
400bad input parameter—
stats3
GET/statsget stats counters
Responses
StatusDescriptionSchema
200statsStatsResponse
GET/stats/charts/marketget market chart
Responses
StatusDescriptionSchema
200market chart—
GET/stats/charts/transactionsget transactions chart
Responses
StatusDescriptionSchema
200transaction chart—
token-transfers1
GET/token-transfersget token transfers
Responses
StatusDescriptionSchema
200token transfers—
400bad input parameter—
tokens10
GET/tokensget tokens list
Parameters
NameInRequiredType
qquerynostring
typequerynostring
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/tokens/{address_hash}get token info
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200tokenTokenInfo
400bad input parameter—
GET/tokens/{address_hash}/countersget token holders
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200tokenTokenCounters
400bad input parameter—
GET/tokens/{address_hash}/holdersget token holders
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/tokens/{address_hash}/instancesget NFT instances
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/tokens/{address_hash}/instances/{id}get NFT instance by id
Parameters
NameInRequiredType
address_hashpathyesstring
idpathyesinteger
Responses
StatusDescriptionSchema
200tokenNFTInstance
400bad input parameter—
GET/tokens/{address_hash}/instances/{id}/holdersget token instance holders
Parameters
NameInRequiredType
address_hashpathyesstring
idpathyesinteger
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/tokens/{address_hash}/instances/{id}/transfersget transfers of NFT instance
Parameters
NameInRequiredType
address_hashpathyesstring
idpathyesinteger
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/tokens/{address_hash}/instances/{id}/transfers-countget transfers count of NFT instance
Parameters
NameInRequiredType
address_hashpathyesstring
idpathyesinteger
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
GET/tokens/{address_hash}/transfersget token token transfers
Parameters
NameInRequiredType
address_hashpathyesstring
Responses
StatusDescriptionSchema
200token—
400bad input parameter—
transactions8
GET/transactionsget transactions
Parameters
NameInRequiredType
filterquerynostring
typequerynostring
methodquerynostring
Responses
StatusDescriptionSchema
200block—
400bad input parameter—
GET/transactions/{transaction_hash}get transaction info
Parameters
NameInRequiredType
transaction_hashpathyesstring
Responses
StatusDescriptionSchema
200transaction infoTransaction
400bad input parameter—
GET/transactions/{transaction_hash}/internal-transactionsget transaction internal transactions
Parameters
NameInRequiredType
transaction_hashpathyesstring
Responses
StatusDescriptionSchema
200internal transactions—
400bad input parameter—
GET/transactions/{transaction_hash}/logsget transaction logs
Parameters
NameInRequiredType
transaction_hashpathyesstring
Responses
StatusDescriptionSchema
200internal transactions—
400bad input parameter—
GET/transactions/{transaction_hash}/raw-traceget transaction raw trace
Parameters
NameInRequiredType
transaction_hashpathyesstring
Responses
StatusDescriptionSchema
200raw trace—
400bad input parameter—
GET/transactions/{transaction_hash}/state-changesget transaction state changes
Parameters
NameInRequiredType
transaction_hashpathyesstring
Responses
StatusDescriptionSchema
200state changes—
400bad input parameter—
GET/transactions/{transaction_hash}/summaryget human-readable transaction summary
Parameters
NameInRequiredType
transaction_hashpathyesstring
Responses
StatusDescriptionSchema
200human-readable transaction summaryTransactionSummary
400bad input parameter—
GET/transactions/{transaction_hash}/token-transfersget transaction token transfers
Parameters
NameInRequiredType
transaction_hashpathyesstring
typequerynostring
Responses
StatusDescriptionSchema
200token transfers—
400bad input parameter—
withdrawals1
GET/withdrawalsget withdrawals
Responses
StatusDescriptionSchema
200withdrawals—

Try it

Developer reference

Base URLhttps://eth.blockscout.com/api/v2
Rate limit

X-RateLimit-Limit: 10 (self-describing header on the public REST API; the paid multichain PRO API has separate, undocumented-here limits)

Key endpoints
  • GET/transactions
  • GET/addresses/{address_hash}
  • GET/stats

Gotchas & limits

  • The x-ratelimit-limit/x-ratelimit-remaining/x-ratelimit-reset response headers do not carry one fixed number for the whole API — a live probe in this run got x-ratelimit-limit: 180 on /addresses/{hash} but x-ratelimit-limit: 10 on /stats, confirming the limit is set per endpoint, not per instance. docs.blockscout.com's own requests-and-limits page separately documents a default "no API key (by IP)" limit of 3 requests/minute for the legacy per-instance model — that page's stated number and this run's observed headers don't agree, so no single rateLimit figure is trustworthy enough to state as fact; treat the headers on your own calls as the source of truth.
  • docs.blockscout.com carries an explicit notice that "PER INSTANCE API WILL BE DEPRECATED JULY 1" in favor of the paid, multichain PRO API (5 RPS on its free tier, API-key gated) — yet this run's live probe against eth.blockscout.com/api/v2/* still returned normal 200s with no key, so the per-instance API this quickstart documents is still live in practice even though its long-term future is explicitly in question.
  • A syntactically valid but unused address doesn't 404 — a live GET to a made-up-but-valid 40-hex-char address returned HTTP 200 with "coin_balance":null,"exchange_rate":"1880.27","is_contract":false and most other fields null, not an error. A genuinely malformed address (wrong length/characters) is what actually 404s/422s: a live GET to /addresses/not-a-real-address returned HTTP 422 {"errors":[{"title":"Invalid value",...,"detail":"Invalid format. Expected ~r/^0x([A-Fa-f0-9]{40})$/"}]}, and a made-up transaction hash in the correct format returned a plain HTTP 404 {"message":"Not found"}.
  • The entry's url (dev.blockscout.com) is Blockscout's PRO API developer portal, not the REST API reference — the actual endpoint docs live at docs.blockscout.com/devs/apis/rest, confirmed live 200 in this run and recorded as this entry's docsUrl.

Availability

Uptime100%
Median latency667 ms
Last checkUp · 200 · Sep 2026

16 checks since Aug 2026. A person runs this check by hand, not an automated monitor.

Changelog

  • Jul 2026gained a docs link

See every tracked change ↗ ·Subscribe with RSS ↗