Crypto Historical Data: Token Price History by Symbol · Surf
Review a token's historical price in a selected quote currency. Returns historical token prices, quote context and available first/last/high/low or change summaries. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Up to 0.0144 credits / call
The final charge is based on confirmed usage. Unused reserved credits return to your available balance.
Surf
Crypto Historical Data: Token Price History by Symbol · Surf
Review a token's historical price in a selected quote currency. Returns historical token prices, quote context and available first/last/high/low or change summaries. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
You receive
Returns historical token prices, quote context and available first/last/high/low or change summaries. The requested currency determines the price unit. Returned point counts describe the selected series, not all historical trading activity.
Start with your task
Tell me the coin’s name or paste its public price-page link, such as [Bitcoin]. I’ll explain how its price changed over [30 days]. You can request another time period or currency, like [EUR]. If several coins match, I’ll ask you to choose.
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
queryParamsqueryParams
object
Required
Required fields
symbol
toqueryParams.to
string
Optional
End of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with from. Overrides time_range when set. Example: 2025-03-01.
Minimum length
1
fromqueryParams.from
string
Optional
Start of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with to. Overrides time_range when set. Example: 2025-01-01.
Minimum length
1
symbolqueryParams.symbol
string
Required
Single token ticker symbol like BTC, ETH, or SOL (multi-symbol not supported). Example: BTC.
Minimum length
1
currencyqueryParams.currency
string
Optional
Quote currency like usd, eur, or btc. Example: usd. Defaults to "usd".
Default
usd
Minimum length
1
time_rangequeryParams.time_range
string
Optional
Window of historical data to return: 1d, 7d, 14d, 30d, 90d, 180d, 365d, or max. Ignored when from/to are set. This endpoint uses time_range only — it does NOT accept interval; bucket granularity is chosen server-side based on the window size. Example: 30d. Defaults to "30d".
Default
30d
Options
1d, 7d, 14d, 30d, 90d, 180d, 365d, max
View raw JSON
{
"type": "object",
"required": [
"queryParams"
],
"properties": {
"queryParams": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"symbol"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"to": {
"type": "string",
"minLength": 1,
"description": "End of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with from. Overrides time_range when set. Example: 2025-03-01."
},
"from": {
"type": "string",
"minLength": 1,
"description": "Start of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with to. Overrides time_range when set. Example: 2025-01-01."
},
"symbol": {
"type": "string",
"minLength": 1,
"description": "Single token ticker symbol like BTC, ETH, or SOL (multi-symbol not supported). Example: BTC."
},
"currency": {
"type": "string",
"default": "usd",
"minLength": 1,
"description": "Quote currency like usd, eur, or btc. Example: usd. Defaults to \"usd\"."
},
"time_range": {
"enum": [
"1d",
"7d",
"14d",
"30d",
"90d",
"180d",
"365d",
"max"
],
"type": "string",
"default": "30d",
"description": "Window of historical data to return: 1d, 7d, 14d, 30d, 90d, 180d, 365d, or max. Ignored when from/to are set. This endpoint uses time_range only — it does NOT accept interval; bucket granularity is chosen server-side based on the window size. Example: 30d. Defaults to \"30d\"."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Result schema
Output fields have not been documented yet.
Additional notes
Review a token's historical price in a selected quote currency
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.to (Optional): End of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with from. Overrides time_range when set. Example: 2025-03-01.
queryParams.from (Optional): Start of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with to. Overrides time_range when set. Example: 2025-01-01.
queryParams.symbol (Required): Single token ticker symbol like BTC, ETH, or SOL (multi-symbol not supported). Example: BTC.
queryParams.currency (Optional): Quote currency like usd, eur, or btc. Example: usd. Defaults to "usd".
queryParams.time_range (Optional): Window of historical data to return: 1d, 7d, 14d, 30d, 90d, 180d, 365d, or max. Ignored when from/to are set. This endpoint uses time_range only — it does NOT accept interval; bucket granularity is chosen server-side based on the window size. Example: 30d. Defaults to "30d".
What this Tool returns
Returns historical token prices, quote context and available first/last/high/low or change summaries.
Response fields and how to read them
The table follows the official response contract, including nested fields and useful response metadata. [] denotes an array item. Required means required within its parent object, not that a conditional parent always exists. A nullable type permits null; an optional field can be absent. Use the documented conditions below to distinguish missing, empty and zero values. Units and reporting windows apply only where explicitly documented.
Field, type and presence
Meaning and conditions
data.[].exchange
string; Optional within parent
Exchange filter used for exchange-flow metrics. Omitted for non-exchange-flow metrics.
data.[].exchange_name
string; Optional within parent
Human-readable exchange name for exchange-flow metrics. Omitted for non-exchange-flow metrics.
data.[].metric
string; Optional within parent
Metric name like `nupl`, `sopr`, or `exchange-flows/inflow`
data.[].project_id
string; Optional within parent
Surf project UUID this symbol resolved to, for frontend entity linking. Empty when unmapped.
data.[].symbol
string; Optional within parent
Token symbol this data point belongs to
data.[].timestamp
integer; Required within parent; format: int64
Unix timestamp in seconds for this data point
data.[].value
number; Required within parent; format: double
Metric value at this timestamp
meta.cached
boolean; Required within parent
Whether this response was served from cache
meta.credits_used
integer; Required within parent; format: int64
Credits deducted for this request
meta.empty_reason
string; Optional within parent
Hint explaining why the data array is empty, when applicable
project_id
string; Optional within parent
Surf project UUID the `--symbol` resolved to, for frontend entity linking. Empty when the symbol is unmapped.
summary
object; Required within parent
Rollup statistics over the requested time range
summary.change_abs
number; Required within parent; format: double
Absolute change in the quote currency: last - first
summary.change_pct
number; Required within parent; format: double
Percentage change rounded to 4 decimals: (last - first) / first * 100. Zero when first is zero.
summary.first
number; Required within parent; format: double
Value of the earliest-timestamp point in the requested time range
summary.high
number; Required within parent; format: double
Highest value observed in the requested time range
summary.last
number; Required within parent; format: double
Value of the latest-timestamp point in the requested time range
summary.latest_dt
integer; Required within parent; format: int64
Unix seconds of the latest-timestamp point
summary.low
number; Required within parent; format: double
Lowest value observed in the requested time range
summary.n_points
integer; Required within parent; format: int64
Number of points in the underlying time-series
symbol
string; Optional within parent
The queried ticker, normalized.
Coverage, units and freshness
The requested currency determines the price unit. Returned point counts describe the selected series, not all historical trading activity.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.
Data source and references
Surf supplies this endpoint through its Data API. Response contract and deployed Tool inputs reviewed on 2026-10-03 against official OpenAPI v0.2.102. This is a contract review date, not a data observation time. Coverage depends on the selected endpoint and request.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Compare [Solana]’s highest and lowest recorded prices over the past [7 days] in [USD].
Tell me the coin’s name or paste its public price-page link, such as [Bitcoin]. I’ll explain how its price changed over [30 days]. You can request another time period or currency, like [EUR]. If several coins match, I’ll ask you to choose.
Choose dates and currency
Summarize [Ethereum]’s price from [2025-01-01] to [2025-03-01] in [EUR], and explain the change in everyday language.
Questions about this tool.
Inputs, results and details to know before running it.
queryParams.to (Optional): End of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with from. Overrides time_range when set. Example: 2025-03-01. queryParams.from (Optional): Start of custom date range (Unix timestamp or YYYY-MM-DD). Must be used together with to. Overrides time_range when set. Example: 2025-01-01. queryParams.symbol (Required): Single token ticker symbol like BTC, ETH, or SOL (multi-symbol not supported). Example: BTC. queryParams.currency (Optional): Quote currency like usd, eur, or btc. Example: usd. Defaults to "usd". queryParams.time_range (Optional): Window of historical data to return: 1d, 7d, 14d, 30d, 90d, 180d, 365d, or max. Ignored when from/to are set. This endpoint uses time_range only — it does NOT accept interval; bucket granularity is chosen server-side based on the window size. Example: 30d. Defaults to "30d".
Returns historical token prices, quote context and available first/last/high/low or change summaries.
The requested currency determines the price unit. Returned point counts describe the selected series, not all historical trading activity.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0144 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Ask your agent to Review a token's historical price in a selected quote currency. Provide the required inputs above. If Toolmu is already connected, reuse that connection; otherwise use the setup instructions on this page. Before a paid execution, the agent must read the current Tool contract and check availability, the credit ceiling, balance, budget and your authorization. It should then execute the Tool and explain the returned fields and limitations.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.