> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goldsky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tokens

> Look up the symbol, name, decimals, logo, and current USD price of up to 100 tokens across chains in one request.

```text theme={"dark"}
GET https://edge.goldsky.com/data/feeds/tokens
```

Returns the metadata and current USD price of up to 100 tokens across chains in one request. Each item carries the token's symbol, name, decimals, logo, and price. Use it to price a token list, show a token picker, or add symbols and USD prices to rows you already store, such as transfers from your own indexer.

Unlike [Balances](https://docs.goldsky.com/feeds/api/balances.md) and [Transfers](https://docs.goldsky.com/feeds/api/transfers.md), this endpoint doesn't take a wallet. It takes only the `tokens` parameter.

## Parameters

**tokens** `string` *required*

Comma-separated `chain:token_address` pairs, up to 100, such as `ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,base:0x0000000000000000000000000000000000000000`.

* `chain` is a [supported chain](https://docs.goldsky.com/feeds/api/overview.md#supported-chains) value. The same aliases work, such as `mainnet` for `ethereum`, and values are case-insensitive.
* `token_address` is `0x` followed by 40 hex characters, in any case. Use the zero address, `0x0000000000000000000000000000000000000000`, for the chain's native token, such as ETH on Base.
* Pairs that name the same token, such as `mainnet:0xA0b8…` and `ethereum:0xa0b8…`, are returned once.
* Any chain value outside [supported chains](https://docs.goldsky.com/feeds/api/overview.md#supported-chains) returns `400 BAD_REQUEST`.

## Response

**data** `object[]`

One entry per distinct token, in the order you requested them. A token Goldsky knows nothing about is still listed, with its metadata and price set to `null`, so you can match each entry to your request by `chain` and `token_address`.

**properties**

**chain** `string`

Chain value, such as `ethereum`. See [supported chains](https://docs.goldsky.com/feeds/api/overview.md#supported-chains). An alias you sent comes back as its chain value, so `mainnet` comes back as `ethereum`.

**chain\_family** `string`

`evm`.

**token\_address** `string`

Token contract address, in lowercase. The zero address for the chain's native token.

**token\_symbol** `string | null`

Token symbol.

**token\_name** `string | null`

Token name.

**token\_decimals** `integer | null`

Token decimals.

**token\_logo\_url** `string | null`

URL of the token logo.

**price\_usd** `number | null`

Current token price in USD, priced the same way as a [Balances](https://docs.goldsky.com/feeds/api/balances.md) row. Major stablecoins are priced at `1.0`. `null` when Goldsky has no price source for the token or no recent price.

**last\_priced\_at** `string | null`

When Goldsky recorded `price_usd`. The API only serves prices recorded in the last 4 hours. A token with no recent price comes back with `price_usd` set to `null`.

A `null` here next to a `price_usd` means a major stablecoin priced at `1.0`. Leave those tokens out of any staleness filter.

The response has no `pagination` object. Every token you asked for comes back in one response.

## How the data behaves

* **Prices are current.** You can't ask for a token's price at a past time. To get the USD value of a past transfer, use [Transfers](https://docs.goldsky.com/feeds/api/transfers.md), which prices each transfer at the time it happened.
* **Prices move between requests.** Prices update on their own schedule, so two requests seconds apart can return different prices for the same token. Responses carry `Cache-Control: public, max-age=2`.
* **Metadata can fill in later.** A token Goldsky hasn't seen yet comes back with `null` fields, which can fill in on a later request.

## Errors

This endpoint returns the [same errors](https://docs.goldsky.com/feeds/api/overview.md#errors) as the other feeds, except `INVALID_CURSOR`, `CONFLICTING_FILTERS`, and `NATIVE_BALANCE_UNAVAILABLE`, which don't apply. A malformed `tokens` value returns `400 BAD_REQUEST`, and `error.message` says what is wrong:

| Request | `error.message` |
| - | - |
| No `tokens` | `` `tokens` is required: pass a comma-separated list of `chain:token_address` pairs. `` |
| A pair without a `:`, such as `tokens=base` | `` `tokens` entry is not a `chain:token_address` pair: base. `` |
| A pair with a malformed address, such as `tokens=base:0x12` | `` `tokens` entry has no EVM token address: base:0x12. Expected `chain:0x` + 40 hex digits. `` |
| An unsupported chain, such as `avalanche` | ``Unsupported chain in `tokens`: avalanche. Supported: ethereum, base, arbitrum_one, optimism, polygon, bsc, robinhood, arc.`` |
| Several unsupported chains, such as `avalanche,bnb` | ``Unsupported chains in `tokens`: avalanche, bnb. Supported: ethereum, base, arbitrum_one, optimism, polygon, bsc, robinhood, arc.`` |
| A pair without a chain, such as `tokens=:0x12` | `` `tokens` entry has no chain: :0x12. `` |
| More than 100 pairs | ``At most 100 values may be passed in `tokens`; got 101.`` |

## Billing

One request is billed as one request, however many tokens it looks up, so a request for 100 tokens costs the same as a request for one. See [Feeds pricing](https://docs.goldsky.com/pricing/summary.md#feeds).

## Example

Look up USDC on Ethereum, ETH on Base, USDC on Base, and an address that isn't a token:

```bash theme={"dark"}
curl -H "X-API-Key: $GOLDSKY_FEEDS_API_KEY" \
  "https://edge.goldsky.com/data/feeds/tokens?tokens=ethereum:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48,base:0x0000000000000000000000000000000000000000,base:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913,ethereum:0x000000000000000000000000000000000000dEaD"
```

The tokens come back in request order. Both USDC entries have a `price_usd` with no `last_priced_at`, because they're priced at `1.0`, and the last address comes back with `null` fields:

```json theme={"dark"}
{
  "data": [
    {
      "chain": "ethereum",
      "chain_family": "evm",
      "token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "token_symbol": "USDC",
      "token_name": "USD Coin",
      "token_decimals": 6,
      "token_logo_url": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
      "price_usd": 1.0,
      "last_priced_at": null
    },
    {
      "chain": "base",
      "chain_family": "evm",
      "token_address": "0x0000000000000000000000000000000000000000",
      "token_symbol": "ETH",
      "token_name": "Ether",
      "token_decimals": 18,
      "token_logo_url": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628",
      "price_usd": 2325.8505102107843,
      "last_priced_at": "2026-10-27T00:27:00.000Z"
    },
    {
      "chain": "base",
      "chain_family": "evm",
      "token_address": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
      "token_symbol": "USDC",
      "token_name": "USD Coin",
      "token_decimals": 6,
      "token_logo_url": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
      "price_usd": 1.0,
      "last_priced_at": null
    },
    {
      "chain": "ethereum",
      "chain_family": "evm",
      "token_address": "0x000000000000000000000000000000000000dead",
      "token_symbol": null,
      "token_name": null,
      "token_decimals": null,
      "token_logo_url": null,
      "price_usd": null,
      "last_priced_at": null
    }
  ]
}
```


## Related topics

- [Track native token balances for a set of addresses](https://docs.goldsky.com/turbo-pipelines/guides/native-balances.md)
- [Feeds: ready-made onchain wallet and token datasets](https://docs.goldsky.com/feeds.md)
- [Tokenized equities & RWA data layer](https://docs.goldsky.com/solutions/tokenized-equities.md)
- [Supported networks](https://docs.goldsky.com/chains/supported-networks.md)
- [Turbo SQL Functions Reference](https://docs.goldsky.com/turbo-pipelines/reference/sql-functions.md)
