Cosmos-SDK Validator & LCD Extractor
Pricing
from $0.35 / 1,000 chain records
Cosmos-SDK Validator & LCD Extractor
Export validator data from a Cosmos-SDK chain's public LCD (REST) endpoint you choose: moniker, status, jailed, tokens, commission. The ready-to-run sample lists 20 bonded Cosmos Hub validators. Also reads governance proposals, supply, balances, delegations and inflation. Amounts stay raw strings.
Pricing
from $0.35 / 1,000 chain records
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a month ago
Last modified
Categories
Share
Cosmos-SDK LCD Extractor
Point at any Cosmos-SDK chain's public LCD (REST / gRPC-gateway) endpoint and pull
structured data out of its core modules — no per-chain scraper, no RPC node to run. One actor
reads the whole ~60-chain Cosmos ecosystem because every Cosmos-SDK chain exposes the identical
/cosmos/<module>/<version>/… REST surface.
Quick start: the active Cosmos Hub validator set in one run
Open the Input tab and keep the prefilled values. Cost is about $0.01 (20 records at $0.0005).
{"restUrl": "https://cosmos-rest.publicnode.com","module": "validators","status": "BOND_STATUS_BONDED","maxRecords": 20}
You get 20 validators from the active (bonded) set, each with moniker, bond status, jailed flag, bonded tokens, commission rate and operator address. Open the Validators view in the Output tab for a clean table. Raise maxRecords to 200 to get the full active set (Cosmos Hub staking params currently allow 180 active validators).
Why pick Bonded: with status left at "Any status", Cosmos Hub also returns unbonded and jailed validators, and the node lists them first. That is useful for a full audit, not for a first look.
Reading the output
tokensanddelegatorSharesare base units kept as exact strings. On Cosmos Hub the base denom isuatom(1 ATOM = 1,000,000 uatom), so"1213663922995"is about 1,213,664 ATOM. Other chains use their own base denom and exponent.commissionRateis a decimal fraction:"0.050000000000000000"means 5%.- Rows come in the node's order (by operator address), not sorted by stake. Sort by
tokensas a number after download if you need a ranking. _rawholds the untouched source object if you need a field that is not flattened.
What it does
Give it a chain's LCD base URL (e.g. https://cosmos-rest.publicnode.com, or
https://rest.cosmos.directory/<chain> — swap <chain> for cosmoshub, osmosis, juno,
celestia, injective, …) and pick a module:
| Module | Endpoint | One row per |
|---|---|---|
validators | /cosmos/staking/v1beta1/validators | validator (moniker, tokens, commission, status, jailed, self-delegation) |
proposals | /cosmos/gov/v1/proposals (auto-falls back to v1beta1) | governance proposal (title, status, tally, deposit, type) |
supply | /cosmos/bank/v1beta1/supply | supply denom + amount |
balances | /cosmos/bank/v1beta1/balances/{address} | account balance denom + amount |
delegations | /cosmos/staking/v1beta1/delegations/{address} | delegation (validator, shares, balance) |
inflation | /cosmos/mint/v1beta1/inflation | the chain's current annual inflation (single value) |
balances and delegations require an address (a bech32 account for the target chain).
Why a generic runner works — and the gotchas it handles
Every Cosmos-SDK chain speaks the same module contract, but the server decides several details that break naive clients:
- Pagination is opaque
pagination.next_key(base64), not an offset. Andpagination.totalis very often"0"because chains disable the count for performance — so it is never used as a terminator. This actor loops purely onnext_key(with a looping-cursor guard). - Governance version drift. Newer chains serve
gov/v1(yes_count, top-leveltitle); older chains only servegov/v1beta1(yes,proposal_id, title nested undercontent). The actor tries v1, falls back to v1beta1, and normalises both into one row shape. - Amounts are big-integer strings.
tokens,delegator_shares, supply/balance amounts and tally counts routinely exceed float precision, so they are kept verbatim as strings. - Pruned / non-Cosmos hosts fail loud. An HTML/nginx error, a
501 not implementedfor a module the chain doesn't run, or a body missing the expected key → fail-fast (exit 91), never a fabricated empty result. A reachable, valid, genuinely-empty response (un-staked account, no open proposals) is an honest success with 0 rows.
Output
One flat row per record with a lossless _raw copy of the source object and
_module / _restUrl / _endpoint / _rowIndex provenance. All source-derived fields are
nullable, so the six record types share one schema and render cleanly in a table view.
Pricing
Pay-per-event: $0.0005 per record (one validator / proposal / supply denom / balance / delegation), with a subscription-tier volume discount.
Example input
{"restUrl": "https://cosmos-rest.publicnode.com","module": "validators","status": "BOND_STATUS_BONDED","maxRecords": 200}