← Protocols
SimpleHash
Indexing / Data·EVM · Solana · Bitcoin · Multi-chain

SimpleHash

01Description

Multi-chain NFT and fungible-token API across 80+ chains (EVM, Solana, Bitcoin Ordinals, Flow, Tezos, Aptos) with normalized metadata, floor prices, and webhooks.

02Best for
  • 01wallet NFT galleries across chains
  • 02normalized NFT metadata + media
  • 03floor prices and listings
  • 04Bitcoin Ordinals / inscriptions
  • 05fungible token balances and prices
04Environment variables
VariableScopeDescription
SIMPLEHASH_API_KEYServerSimpleHash API key. Sent in the `X-API-KEY` header. Server-side only.
05Prompt snippet
SimpleHash has no first-party JS SDK — call the REST API directly. Base URL: `https://api.simplehash.com/api/v0`. Set the header `X-API-KEY: ${process.env.SIMPLEHASH_API_KEY}` on every request. For a wallet's NFTs: `GET /nfts/owners?chains=ethereum,polygon,solana&wallet_addresses=<addr>`. For a single NFT: `GET /nfts/<chain>/<contract>/<token_id>`. For fungibles use the `/fungibles/*` routes. Always pass `chains` as a comma-separated list of SimpleHash chain slugs (e.g. `ethereum`, not `eth-mainnet`).
06Gotchas
  • Chain identifiers are SimpleHash-specific slugs (`ethereum`, `polygon`, `base`, `solana`, `bitcoin`) — they are not the EIP-155 numeric IDs and not the same slugs Alchemy/Covalent use.
  • Pagination uses an opaque `next` cursor URL, not page numbers; loop until `next` is null instead of computing offsets.
  • Free / lower tiers throttle aggressively (low RPS) and queue large `wallet_addresses` queries — long lists may time out; chunk them client-side.
  • Bitcoin Ordinals and Runes are returned alongside EVM NFTs in the same endpoint — clients that assume EVM `contract_address` will crash on inscription IDs.
  • Floor price and trait data lag marketplace activity by seconds-to-minutes; do not use for real-time trading decisions.
07Alternatives