Binance + Coinbase · BTC-USD / ETH-USD / SOL-USD · V1
The price,
and the receipts.
seekingdata turns raw exchange trades into one cross-venue reference price per symbol — and ships the confidence, staleness, and exact venue lineage behind every number, so an agent — or you — can verify it instead of trusting it.
No auth walls in V1. No history rewritten after the fact. Every field traceable to a venue and a timestamp.
{
"data": {
"symbol": "BTC-USD",
"price": 60010.25,
"venues": [
{
"venue": "binance",
"price": 60000.5,
"ts": "2026-07-09T12:00:00.100Z"
},
{
"venue": "coinbase",
"price": 60020,
"ts": "2026-07-09T12:00:00.500Z"
}
]
},
"meta": {
"as_of": "2026-07-09T12:00:00.600Z",
"venues": [
"binance",
"coinbase"
],
"staleness_ms": 100,
"confidence": 0.98
},
"provenance": {
"sources": [
{
"venue": "binance",
"symbol": "BTC-USD",
"ts": "2026-07-09T12:00:00.100Z"
},
{
"venue": "coinbase",
"symbol": "BTC-USD",
"ts": "2026-07-09T12:00:00.500Z"
}
],
"method": "outlier-trimmed cross-venue median (USDT≈USD in V1)"
}
}A real response shape — abbreviated timestamps for readability, nothing cropped.
The envelope
Three parts, every response.
seekingdata never hands back a bare number. Every endpoint wraps its payload in the same three-part envelope, so the shape you learn once works everywhere.
data
The number
The reference price and the raw per-venue prints it was built from — never a black box, always the inputs alongside the output.
{
"symbol": "BTC-USD",
"price": 60010.25,
"venues": [
{
"venue": "binance",
"price": 60000.5
},
{
"venue": "coinbase",
"price": 60020
}
]
}meta
How much to trust it, right now
staleness_ms and a computed confidence let an agent decide in code whether a price is fresh and certain enough to act on — instead of assuming.
{
"staleness_ms": 100,
"confidence": 0.98
}provenance
Where it came from
Exact venues, timestamps, and the derivation method behind the number — so it can be audited and reproduced, not just believed.
{
"method": "outlier-trimmed cross-venue median"
}How AI uses seekingdata
One command, and an agent gets typed tools.
seekingdata ships an MCP server that wraps the API. An agent's host — Claude Desktop, an IDE, an agent framework — connects to it and the model sees typed tools it can call directly, instead of you hand-writing a REST client for every integrator. One command —claude mcp add seekingdata — and an agent has typed tools.
claude mcp add seekingdata -- npx -y @seekingdata/mcpDefaults to the hosted API at https://api.seekingdata.dev. Self-hosting the server? Set SEEKINGDATA_API.
Tools
Question-shaped, each with enum'd arguments and a one-line "when not to use."
reference_price
What's the current cross-venue price for a symbol, and how much should I trust it right now?
Not for a price history — use ohlcv.
ohlcv
What did a symbol do over a window? Open/high/low/close/volume bars.
Not for a single point-in-time price — use reference_price.
recent_trades
What are the actual raw prints behind the price, per venue?
Not for an aggregated series — use ohlcv.
option_chain
What's the mark price, IV, and greeks for BTC/ETH options right now?
Not for spot price alone — use reference_price.
catalog
What datasets and categories does seekingdata serve — live or planned?
Not for pulling actual data — it's a directory, not a source.
provenance
Which exact venues, timestamps, and method produced a given number?
Skip it if you already hold an envelope — provenance ships inline on every response.
venues
Which venues does seekingdata collect from, and are they healthy right now?
Not for symbol-level detail — use catalog.
Resources
Slow-moving reference data — loaded once and cached by the host, not re-fetched per turn.
A compound question, in one session
Static transcript — this is what the tool calls and envelopes actually look like.
What's BTC trading at, and can I get downside protection with options right now?
reference_price({ symbol: "BTC-USD" }){
"data": {
"symbol": "BTC-USD",
"price": 60010.25
},
"meta": {
"confidence": 0.98,
"staleness_ms": 100
},
"provenance": {
"method": "outlier-trimmed cross-venue median"
}
}option_chain({ underlying: "BTC", option_type: "put", max_response_tokens: 300 }){
"data": {
"underlying": "BTC",
"underlying_px": 60010.25,
"options": [
{
"instrument": "BTC-31JUL26-60000-P",
"strike": 60000,
"option_type": "put",
"mark_price_usd": 1979.9,
"mark_iv": 0.44,
"delta": -0.48
}
]
},
"meta": {
"confidence": 0.95,
"truncated": false
},
"provenance": {
"method": "Deribit mark price snapshot"
}
}BTC-USD is $60,010.25 (98% confidence, 100ms stale, Binance + Coinbase). For downside protection: the Jul-31 $60,000 put is quoting $1,979.90 (44% IV, delta −0.48) on Deribit.
- Token-budgetedEvery tool takes max_response_tokens, truncates to whole rows (never mid-object), and returns meta.truncated + meta.next_cursor + a one-line hint.
- Provenance inlineEvery envelope carries the exact venues, timestamps, and method behind the number — no separate lookup needed to decide whether to trust it.
- RFC 9457 errorsFailures come back as application/problem+json with retryable, retry_after, and error_category — an agent can branch on a failure in code, not by parsing prose.
- Honest tool contractsEnum'd args, readOnlyHint / idempotentHint / openWorldHint annotations, and outputSchema — the host can show what a tool will do before it's called.
Live demo
Ask it. Get the receipts back.
Pick a symbol and pull a live reference price from the seekingdata API. Unreachable? The widget falls back to a realistic sample so you can still see the full envelope.
Showing a sample response — the live API is unreachable from here right now.
Loading…How it works
Four hops from tick to envelope.
Nothing exotic: independent collectors per venue, a columnar store built for time-series, and a read path that computes trust metrics instead of caching them.
Exchange WebSockets
Binance · Coinbase
Raw trade prints, subscribed per symbol, per venue.
Rust collectors
one per venue
Normalize, timestamp, detect gaps, reconnect on drop.
ClickHouse
columnar store
Trades and derived 1s/1m candles, queried in milliseconds.
REST API
the envelope
data + meta + provenance, computed on read.
Data catalog
Category-agnostic, by design.
seekingdata collects anything time-stamped and source-attributable — crypto today, weather, sports, and macro next. Every category and dataset below renders straight from the same catalog the API and MCP server serve, so this list can't drift from reality.
Showing the bundled catalog — the live API is unreachable from here right now.
Crypto markets
liveNormalized, provenance-carrying crypto market data across venues.
Cross-venue reference price
liveA single derived reference price per symbol, combined from multiple venues with an outlier-trimmed median. Ships full provenance.
OHLCV candles
liveOpen/high/low/close/volume bars, 1s and 1m, per-venue or combined.
Spot trades (tape)
liveNormalized taker-aggressor trade prints per venue.
Options pricing & greeks
livePer-instrument option mark price, implied volatility, greeks (delta/gamma/vega/theta), open interest and the underlying price.
Perp funding rates
plannedFunding rate and next-funding time for perpetual futures.
Weather
plannedStation and gridded weather observations, source-attributed.
Surface observations
plannedTemperature, wind, precipitation per station.
Sports results
plannedMatch results and live scores, source-attributed.
Match results
plannedFinal and in-progress scores per fixture.
Macro & reference data
plannedEconomic releases and reference rates.
Economic releases
plannedScheduled macro data releases with actual/consensus.
A category, up close
Options are a dataset, not a different product.
Same catalog, same envelope, same MCP tool pattern — just a different shape of number. Here's a live slice of the BTC chain from Deribit: mark price, implied vol, and delta for a few strikes around the money.
Showing a bundled sample chain — the live API is unreachable from here right now.
Deribit · mark price, IV & greeks · expiry Jul 31, 2026
| Strike | Type | Mark $ | IV % | Delta |
|---|---|---|---|---|
| 57,000 | Call | $3,980.40 | 47.0% | 0.71 |
| 57,000 | Put | $966.10 | 46.0% | -0.28 |
| 60,000 | Call | $2,120.80 | 44.0% | 0.52 |
| 60,000 | Put | $1,979.90 | 44.0% | -0.48 |
| 63,000 | Call | $1,055.60 | 45.0% | 0.31 |
| 63,000 | Put | $3,877.20 | 46.0% | -0.69 |
What V1 is / isn't
Scoped on purpose.
We'd rather ship a small surface with a trustworthy envelope than a large one you have to double-check. Here's exactly where the line is today.
Is
- Binance + Coinbase trade streams, normalized and timestamped
- A live cross-venue reference price with full provenance, for BTC-USD, ETH-USD, SOL-USD
- 1s and 1m OHLCV candles built from those trades
- Rust collectors writing into ClickHouse — built for throughput, not a demo shim
Isn't yet
- No L3 order books — trades and candles only, for now
- No history before launch — the tape starts when the collectors do
- No paid tiers, no auth — V1 is open while we prove the envelope out
- No on-chain data — centralized-venue prices only in V1
API quickstart
Three calls to get oriented.
Run these against the hosted API — no auth, no setup. Every route returns the same envelope shape.
curl https://api.seekingdata.dev/v1/price/BTC-USDcurl "https://api.seekingdata.dev/v1/ohlcv/BTC-USD?interval=1m"curl https://api.seekingdata.dev/v1/trades/BTC-USD