Starkscan
built for agents and humans

One explorer.
Agents and humans.

Every block, transaction, and contract on Starknet, indexed and decoded for agents to query and humans to read.

Latest blocks

CopyOpen ▾
BlockHashAgeTxns
#10,802,4350x7755…92d58s2
#10,802,4340x7ec3…fd9911s0
#10,802,4330x50de…150413s1
#10,802,4320x744c…ec5416s0

Search

Find anything on Starknet

Address, transaction, block, class, or token. Type a hash, or ask in plain words. One box, the whole chain.

Search the chain⌘K

Result

0x04d2…9ab11,204 transactionsAccount

Made for agents and humans

Give your agent a key.
It understands everything.

One decoded index, and docs written so agents and humans both get it instantly. MCP, the SDK, REST, or the explorer: one source of truth, every surface.

Give your agent a key

Point an MCP server at Starkscan. Your agent reads every block, transaction, and contract, already decoded. No scraping.

Claude · Cursor · Copilot · Cline

One index, every surface

MCP, SDK, REST, CLI. The same decoded data, whichever you reach for.

@starkscan/mcpAgent-native chain access
@starkscan/sdkTyped models, end to end
REST APIStable, paginated, documented
starkscan (CLI)Query from your terminal
OpenAPIGenerate your own client
llms.txtDocs an agent can read whole

Built for engineers

Drop the SDK into your stack. Decoded events and typed responses, no felt wrangling.

TypeScript SDK
import { Starkscan } from "@starkscan/sdk";
const scan = new Starkscan({ apiKey: process.env.STARKSCAN_API_KEY });
const tx = await scan.transactions.get("0x0a91f3c2…");
tx.events.forEach((e) => console.log(e.name, e.args));
// Transfer { from, to, value }, already decoded

And made for humans

Decoded the same way for humans. Readable events, not raw calldata.

0x0a91f3c2…INVOKE Success
TransferERC-20 · STRK
0x04d2…9ab1 to 0x0719…3c6f · 125.0
SwapAVNU router
125.0 STRK to 0.0413 ETH

Decoded

From felts to meaning

Every call arrives as raw felts. Starkscan resolves the contract, the selector, and the arguments, so you read intent, not bytes. Same data, two views.

0x0a91f3c2…INVOKE
contract0x04718f…8d3
selector0x0083af…2e1b
calldata0x0719c3…3c6f
0x06c6b9…0000
0x000000…0000
TRY IT OUT
npx @starkscan/mcp@alpha init
>_ Terminal
agent ready

Coming from Voyager?

Bring your links across two ways: agents can ask, humans keep the URL.

For humans path unchanged

Keep the URL. Swap the host.

voyager.online/tx/0x0a91f3c2…starkscan.co/tx/0x0a91f3c2…

Transaction, block, and contract routes map directly.

For agents via @starkscan/mcp

Skip the mapping. Just ask.

“Map my Voyager links to Starkscan.”
fromvoyager.online/tx/0x0a91f3c2…tostarkscan.co/tx/0x0a91f3c2…

Works with Claude, Codex, Cursor.