Cosmos-SDK Validator & LCD Extractor avatar

Cosmos-SDK Validator & LCD Extractor

Pricing

from $0.35 / 1,000 chain records

Go to Apify Store
Cosmos-SDK Validator & LCD Extractor

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

Datamule

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a month ago

Last modified

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

  • tokens and delegatorShares are base units kept as exact strings. On Cosmos Hub the base denom is uatom (1 ATOM = 1,000,000 uatom), so "1213663922995" is about 1,213,664 ATOM. Other chains use their own base denom and exponent.
  • commissionRate is a decimal fraction: "0.050000000000000000" means 5%.
  • Rows come in the node's order (by operator address), not sorted by stake. Sort by tokens as a number after download if you need a ranking.
  • _raw holds 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:

ModuleEndpointOne row per
validators/cosmos/staking/v1beta1/validatorsvalidator (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/supplysupply 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/inflationthe 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. And pagination.total is very often "0" because chains disable the count for performance — so it is never used as a terminator. This actor loops purely on next_key (with a looping-cursor guard).
  • Governance version drift. Newer chains serve gov/v1 (yes_count, top-level title); older chains only serve gov/v1beta1 (yes, proposal_id, title nested under content). 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 implemented for 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
}