Every wallet transfer and balance, in one API call
Enriched onchain datasets via API or streamed to your database, with USD values, token metadata, and chain history back to genesis included.
Show activity and holdings for any wallet
Transfers and balances are live, with more feeds coming soon.
Transfers: every transaction in and out of a wallet
One row per token movement, newest first, with direction, amount and USD value at the time.
Show wallet activity and history
Reconcile payments and settlement
Credit deposits the moment they land
Balances: every token a wallet currently holds
One row per token per chain, sorted by value, with price, USD value and a total for the whole wallet.
Render portfolio and wallet screens
Snapshot custody and treasury value
Gate product logic on what a wallet holds
Wallet data in your app in minutes
REST and JSON, with no SDK to install.
Get an API key
Enable a feed in the dashboard and your project key is created with it.
Copy the endpoint
Pick a wallet and chains. The dashboard writes the request for you.
Swap it into your app
One REST call returns JSON, with the same fields on every chain.
/api/v1/feeds/wallets/transfers?address=0xd8da…6045| Direction | Token | Amount | Value (USD) |
|---|---|---|---|
| In | USDCBase | 50.00 | $50.01 |
| Out | ETHEthereum | 0.42 | $1,433.12 |
| In | USDCSolana | 120.00 | $120.01 |
| Out | ETHBase | 0.125 | $426.53 |
| In | USDCEthereum | 2,500.00 | $2,500.50 |
{
"data": [
{
"chain": "base",
"chain_family": "evm",
"direction": "in",
"block_number": 20512345,
"transaction_hash": "0x9e3779b19e3779b19e3779b19e3779b19e3779b19e3779b19e3779b19e3779b1",
"from_address": "0x3304e22ddaa22bcdc5fca2269b418046ae7b566a",
"to_address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"token_address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
"token_symbol": "USDC",
"token_name": "USD Coin",
"token_decimals": 6,
"amount_raw": "50000000",
"price_usd": 1.0002,
"amount_usd": 50.01,
"transfer_type": "erc20",
"block_timestamp": "2026-09-30T14:00:00.000Z",
"token_logo_url": null
},
{
"chain": "ethereum",
"chain_family": "evm",
"direction": "out",
"block_number": 23412001,
"transaction_hash": "0x13c6ef36213c6ef36213c6ef36213c6ef36213c6ef36213c6ef36213c6ef3621",
"from_address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"to_address": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
"token_address": "0x0000000000000000000000000000000000000000",
"token_symbol": "ETH",
"token_name": "Ether",
"token_decimals": 18,
"amount_raw": "420000000000000000",
"price_usd": 3412.2,
"amount_usd": 1433.12,
"transfer_type": "native",
"block_timestamp": "2026-09-30T13:59:58.000Z",
"token_logo_url": null
},
{
"chain": "solana",
"chain_family": "solana",
"direction": "in",
"block_number": 312004118,
"transaction_hash": "0x1daa66d131daa66d131daa66d131daa66d131daa66d131daa66d131daa66d131",
"from_address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"to_address": "DRpbCBMxVnDK7maPM5tGv6MvB3v1sRMC86PZ8okm21hy",
"token_address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"token_symbol": "USDC",
"token_name": "USD Coin",
"token_decimals": 6,
"amount_raw": "120000000",
"price_usd": 1.0001,
"amount_usd": 120.01,
"transfer_type": "spl",
"block_timestamp": "2026-09-30T13:59:56.000Z",
"token_logo_url": null
},
{
"chain": "base",
"chain_family": "evm",
"direction": "out",
"block_number": 20512390,
"transaction_hash": "0x278dde6c4278dde6c4278dde6c4278dde6c4278dde6c4278dde6c4278dde6c42",
"from_address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"to_address": "0x4200000000000000000000000000000000000006",
"token_address": "0x0000000000000000000000000000000000000000",
"token_symbol": "ETH",
"token_name": "Ether",
"token_decimals": 18,
"amount_raw": "125000000000000000",
"price_usd": 3412.2,
"amount_usd": 426.53,
"transfer_type": "native",
"block_timestamp": "2026-09-30T13:59:54.000Z",
"token_logo_url": null
},
{
"chain": "ethereum",
"chain_family": "evm",
"direction": "in",
"block_number": 23412040,
"transaction_hash": "0x3171560753171560753171560753171560753171560753171560753171560753",
"from_address": "0x28c6c06298d514db089934071355e5743bf21d60",
"to_address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"token_symbol": "USDC",
"token_name": "USD Coin",
"token_decimals": 6,
"amount_raw": "2500000000",
"price_usd": 1.0002,
"amount_usd": 2500.5,
"transfer_type": "erc20",
"block_timestamp": "2026-09-30T13:59:52.000Z",
"token_logo_url": null
}
]
}| Field | Type | Description |
|---|---|---|
| chain | string | Goldsky chain slug. |
| chain_family | string | evm or solana. |
| direction | string | in or out, relative to the queried wallet. A self-transfer is returned as one of each. |
| block_number | integer | Block the transfer landed in (Solana: slot). |
| block_timestamp | date-time | When that block was produced. Rows are newest first; equal times on different chains aren't ordered. |
| transaction_hash | string | Transaction hash (Solana: signature). |
| from_address | string | null | Sender. Solana: the token account's owner, null when it can't be resolved. |
| to_address | string | null | Recipient. Solana: the token account's owner, null when it can't be resolved. |
| token_address | string | Token contract address (Solana: the mint). Native rows carry the family's sentinel. |
| token_symbol | string | null | Token symbol. Not unique: filter on token_address when identity matters. |
| token_name | string | null | Token name. |
| token_decimals | integer | null | Decimals to scale raw amounts by. Null until resolved, and USD values are null with it. 0 is a real value. |
| token_logo_url | string | null | Logo from the token registry. |
| is_spam | boolean | Spam classification. Returned even while spam is excluded, and can change as the registry refreshes. |
| amount_raw | string | On-chain integer amount, as a lossless decimal string. |
| price_usd | number | null | USD price at block time, not spot. Null when the token is unpriced. |
| amount_usd | number | null | Amount times price, in USD. A current estimate: it can change as pricing improves. |
| transfer_type | string | native, erc20 or spl. |
Or let your coding agent set up Feeds
Help me get started with Goldsky Feeds: the Transfers feed (token movements in and out of a wallet) and the Balances feed (current holdings per wallet, priced in USD). It's a REST API: one GET request returns JSON rows, and Goldsky keeps the data backfilled and current. My Goldsky configuration: - Transfers: GET https://api.goldsky.com/api/v1/feeds/wallets/transfers?address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&page_size=25&key=$GOLDSKY_API_KEY Response rows include: chain, chain_family, direction, block_number, block_timestamp, transaction_hash, from_address, to_address, from_label, to_label, token_address, token_symbol, token_name, token_decimals, token_logo_url, amount_raw, price_usd, amount_usd, transfer_type - Balances: GET https://api.goldsky.com/api/v1/feeds/wallets/balances?address=0xd8da6bf26964af9d7eed9e03e53415d37aa96045&page_size=25&key=$GOLDSKY_API_KEY Response rows include: address, total_value_usd, chain, chain_family, token_address, token_symbol, token_name, token_decimals, token_logo_url, balance_raw, price_usd, value_usd, block_number, block_timestamp I'll provide my Goldsky API key via an environment variable - please ask me to create a .env file with GOLDSKY_API_KEY=<my-key> and read it via process.env.GOLDSKY_API_KEY. If I don't have a key yet, I can create one in the Feeds tab at https://app.goldsky.com/dashboard/feeds. The key goes in the `key` query parameter. Never hard-code the key. Before writing any code, read the OpenAPI spec first: https://edge.goldsky.com/data/openapi.json. It's the source of truth for the endpoints, query parameters and response fields. Please: 1. Read the OpenAPI spec above 2. Set up a new Node.js project (use dotenv to load GOLDSKY_API_KEY) 3. Write a demo-script.js file that calls both feeds with the requests above. `address` is required: use the sample wallet above, or one I give you 4. Show me how to run it and explain the response For more information, see the Goldsky docs: - Pricing: https://docs.goldsky.com/pricing/summary - Streaming to a database, and everything else: https://docs.goldsky.com
Every row arrives ready to use
Normalized across chains, priced at block time, filtered and backfilled to genesis before it reaches your app.
One schema across every chain
Normalized fields on every EVM chain, and soon on non-EVM chains like Solana and HyperCore, so one integration covers them all.
- amount
- 12.5
- price_usd
- 148.30
- amount_usd
- 1853.75
USD values on every row
Priced at block time from Goldsky's own DEX trade data. Unknown prices are null, never guessed.
Clean balances by default
Zero balances and unpriced tokens are excluded by default. Spam classification is coming soon.
Full wallet history from genesis block
Every past transfer is already indexed going back to the beginning of the chain.
Use the API, or stream into your database
Same schema either way.
API
Query the data feeds for on-demand reads like a portfolio screen or a deposit check.
Streaming
Write the feeds into your own database. Run SQL at scale and join with internal data without it leaving your infrastructure.
How Feeds compares with other wallet APIs
Goldsky Feeds vs other wallet APIs
| Feature | Goldsky Feeds | Other wallet APIs |
|---|---|---|
| Pricing | $0.35 per 1K requests, flat | Compute units, weighted endpoints, monthly minimum |
| Minimum spend | None | Minimum plan floor, whether you use it or not |
| USD value | Included | Separate API or subscription |
| Full chain history | Included | Often a separate product, upcharge, or a backfill you run |
| Reorg handling | Built-in | Varies |
| Stream into your own database | Available | No |
| EVM and non-EVM chains | One schema; Solana and HyperCore coming soon | Separate APIs or vendors |
| Spam filtering | Unpriced tokens hidden; spam flags coming soon | Often a separate list or add-on |
| Address labels | Coming | Some, often separate subscription or fee |
| PnL and portfolio history | Coming | Some, often rate-capped |
| NFTs | Upon request | Some |
Based on public pricing and docs of wallet data APIs, September 2026. Last updated .
Transparent, fully loaded pricing
A flat $0.35 per 1,000 requests. No minimum or compute units.
Included in every request
All-inclusive without additional fees or subscriptions.
USD prices at block time
Token metadata and logos
Unpriced token filtering
Full history, backfilled
Reorg handling
One schema across EVM chains
- Non-EVM chains: Solana, HyperCore, and moreComing soon
- Spam classificationComing soon
- Multi-address requestsComing soon
Estimate your monthly bill
Every request costs the same, whatever the feed or chain.
SOC 2 Type II
Audited controls, with reports available under NDA.
Public chain data only
Every row comes from public chain data.
Project-scoped API keys
Each key belongs to one project and can be rotated from the dashboard.
Reorg-aware
Rows are corrected on reorg.
Complete or absent
All chains are available with complete data from genesis.
Built on Turbo
The same indexing that runs Turbo pipelines for hundreds of teams.
Query any wallet in under two minutes
Free $100 credit. No credit card and no SDK.
Frequently asked questions
What is Goldsky Feeds?
Is there a Solana wallet API with the same schema as EVM?
How are USD values computed?
How does spam filtering work?
How far back does history go, and what happens on a reorg?
How do pagination, rate limits and API keys work?
Keyset pagination: 100 rows by default, up to 1,000 per request. Your API key is scoped to one project and created when you enable a feed in the dashboard. Rate limits are listed in the Feeds docs.
Can I get the feeds in my own database?
What does a wallet balances or transfers request cost?
Do you offer address labels, PnL, positions or NFTs?
How is this different from Turbo pipelines and the dataset catalog?
Turbo pipelines and the catalog give you raw or decoded chain data that you shape and store yourself. Feeds serves a finished dataset over an API, and all of them run on the same indexing. It's REST and JSON with a documented schema, so there's nothing to migrate off.
I'm moving off a wallet API that's shutting down. Where do I start?
