Data API Overview

Surf Data API — crypto market data, on-chain analytics, social signals, and more

About

The Surf Data API provides typed REST endpoints for crypto market data, project analytics, social signals, on-chain queries, and more. All endpoints use credit-based billing with per-request rate limiting.

Base URL: https://api.ask.surf/gateway

Parameter Conventions

All endpoints follow a standardized naming scheme.

Asset Identification

ParamTypeDescriptionExample
symbolstringUppercase ticker symbol(s), comma-separatedBTC, ETH,SOL
qstringFree-text search keywordbitcoin
idstringSurf entity UUID for direct lookup550e8400-...
addressstringOn-chain contract or wallet address. Also accepts ENS names (e.g. vitalik.eth)0xdead...

Time & Aggregation

ParamTypeDescriptionExample
time_rangestring or intLookback window7d, 30d, 365d, max
intervalstringCandlestick / indicator interval1h, 1d, 1w
granularitystringData aggregation granularityday, block, hour

Filtering & Sorting

ParamTypeDescriptionExample
chainstringBlockchain name (canonical long-form only)ethereum, solana, base
currencystringQuote currencyusd, eur, btc
metricstringMetric name (endpoint-specific enum)nupl, tvl
typestringCategory selector (endpoint-specific enum)us-btc-spot
sort_bystringSort fieldvolume_24h, market_cap
orderstringSort directionasc, desc

Pagination

All list endpoints support:

  • limit (int, default: 20, max: 100) — results per page
  • offset (int, default: 0) — pagination offset

Supported Chains

Use canonical long-form names only. Short aliases (eth, sol, matic, etc.) are not accepted.

ChainValue
Ethereumethereum
Polygonpolygon
BNB Chainbsc
Solanasolana
Avalancheavalanche
Arbitrumarbitrum
Optimismoptimism
Fantomfantom
Basebase
Linealinea
Cybercyber

Not all chains are available on every endpoint. Check each endpoint's chain enum for supported values.

Authentication

All data endpoints require a Bearer token in the Authorization header:

Authorization: Bearer <API_KEY>

Error Responses

All endpoints return errors in a consistent format:

{
  "error": {
    "code": "FORBIDDEN",
    "message": "insufficient credits"
  }
}
HTTP StatusMeaning
400Bad request — invalid or missing parameters
401Unauthorized — missing or invalid API key
404Not found — the requested entity does not exist
422Validation error — parameter value is out of range or invalid
429Rate limited — too many requests, retry after the indicated interval
502Upstream error — a data source is temporarily unavailable

Credits

Each API call costs a certain number of credits. The cost is returned in every response under meta.credits_used. Check your remaining balance via GET /v1/me/credit-balance.