Cambrian Token Price (Hourly) API

By Cambrian Network base

GET /api/v1/evm/price-hour

Token Price (Hourly)

Overview

Returns historical hourly price data for a specified EVM token, expressed in USD. Prices are aggregated per UTC hour, which supports building price charts, computing historical returns, and analyzing intraday volatility for tokens on supported EVM chains.

Business Value

  • Historical Price Analysis: Track price movements and trends over specific hourly intervals for investment research
  • Trading Strategy Development: Access precise historical data points for backtesting and algorithm development
  • Market Research: Analyze price volatility patterns and market behavior during specific time periods
  • Portfolio Performance: Monitor historical value changes of token holdings with granular hour-by-hour precision
  • Risk Management: Identify price patterns and volatility metrics for better risk assessment

Endpoint Details

URL:

https://api.cambrian.org/evm/price-hour

Method: GET
Authentication: Required via X-API-Key header

Query Parameters

Parameter Type Required Default Description
chain_id integer No 8453 EVM chain ID.
token_address string Yes - Token address. See tokens for valid address for a chain.
limit integer No 100 Limit the number of results.
offset integer No 0 Offset the results, allows you to skip a number of rows before starting to return rows.

Response Field Descriptions

Response Field Type Description
chainId UInt16 EVM chain ID the price data belongs to.
tokenAddress String Contract address of the token (lowercase).
tokenSymbol String Ticker symbol of the token.
blockHour DateTime('UTC') UTC timestamp representing the hour bucket for this price point.
priceUsd Float64 Token price in USD at the given hour.

Examples

1. Fetch Recent Hourly Prices for cbBTC

Retrieves the 10 most recent hourly price points for cbBTC on Base (chain ID 8453).

curl -X GET "https://api.cambrian.org/evm/price-hour?chain_id=8453&token_address=0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf&limit=10" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

[
  {
    "columns": [
      { "name": "chainId", "type": "UInt16" },
      { "name": "tokenAddress", "type": "String" },
      { "name": "tokenSymbol", "type": "String" },
      { "name": "blockHour", "type": "DateTime('UTC')" },
      { "name": "priceUsd", "type": "Float64" }
    ],
    "data": [
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T22:00:00+00:00", 64177.215778131795],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T21:00:00+00:00", 64208.167037659805],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T20:00:00+00:00", 64174.28249007726],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T19:00:00+00:00", 64279.17095921872],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T18:00:00+00:00", 64220.04673331491],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T17:00:00+00:00", 64027.284264131915],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T16:00:00+00:00", 63983.050204851424],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T15:00:00+00:00", 64010.97871050138],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T14:00:00+00:00", 63832.20059783007],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T13:00:00+00:00", 63862.37962062325]
    ],
    "rows": 10
  }
]

Note: The result collection above is limited to its first 10 items for documentation purposes; the full response may contain more rows depending on the requested limit.

The response shows cbBTC's hourly USD price from 13:00 to 22:00 UTC on 2026-08-04, moving from roughly $63,862 to $64,177. Each row represents one hourly blockHour bucket.

2. Paginate Through Older Price History

Uses offset to skip the 10 most recent hours and fetch the next 5 hourly price points further back in time.

curl -X GET "https://api.cambrian.org/evm/price-hour?chain_id=8453&token_address=0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf&limit=5&offset=10" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json"

Response:

[
  {
    "columns": [
      { "name": "chainId", "type": "UInt16" },
      { "name": "tokenAddress", "type": "String" },
      { "name": "tokenSymbol", "type": "String" },
      { "name": "blockHour", "type": "DateTime('UTC')" },
      { "name": "priceUsd", "type": "Float64" }
    ],
    "data": [
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T12:00:00+00:00", 63844.36432815222],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T11:00:00+00:00", 63744.43386940641],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T10:00:00+00:00", 63577.698540319114],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T09:00:00+00:00", 63516.873793780076],
      [8453, "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf", "cbBTC", "2026-08-04T08:00:00+00:00", 63588.41214804222]
    ],
    "rows": 5
  }
]

Note: The result collection above is limited to its first 10 items for documentation purposes; this example returned 5 rows because limit=5 was requested.

This demonstrates pagination: with offset=10, the response starts at hour 12:00:00 UTC, i.e. the hour immediately preceding the last row returned in Example 1. This confirms continuous, non-overlapping hourly coverage.

x402 Payment Option

This endpoint supports pay-per-use access via the x402 payment protocol (v2): pay $0.05 USDC per request using blockchain micropayments. No API key required.

Quick Start (TypeScript)

npm install @x402/fetch @x402/evm viem
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const signer = privateKeyToAccount(process.env.EVM_PRIVATE_KEY as `0x${string}`);
const client = new x402Client();
client.register("eip155:*", new ExactEvmScheme(signer));

const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const response = await fetchWithPayment(
  "https://x402.cambrian.org/evm/price-hour"
);
const data = await response.json();

Quick Start (Python)

pip install "x402[httpx]"
import asyncio, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client

async def main():
    client = x402Client()
    account = Account.from_key(os.getenv("EVM_PRIVATE_KEY"))
    register_exact_evm_client(client, EthAccountSigner(account))

    async with x402HttpxClient(client) as http:
        response = await http.get("https://x402.cambrian.org/evm/price-hour")
        print(response.json())

asyncio.run(main())

Payment Flow

  1. Send a normal request to the endpoint (no API key needed)
  2. Server returns 402 Payment Required with payment details
  3. The x402 SDK automatically signs a payment authorization with your wallet
  4. The SDK resubmits the request with the signed payment
  5. Server verifies payment and returns the API response

The x402 SDK handles steps 2 through 5 automatically.

Network: Base (chain ID 8453) | Currency: USDC | Price: $0.05 per request


Related Endpoints

  • /evm/price-current - Returns current price of a token calculated based on uniswap v3 and clones liquidity pools.
  • /evm/tokens - Returns a list of all erc20 tokens for the specified EVM chain, including their contract addresses, symbols, names, and decimal places.
  • /evm/tvl/top-owners - Returns top token holders for a given token address.
  • /evm/tvl/status - Returns the tokens held by an address
  • /evm/dexes - List of DEXes on EVM compatible chains