What this API gives you
The Algoseek Datasets API is a REST service that delivers historical US-market data in three asset classes — equities, equity options, and futures — alongside the reference data (corporate actions, splits and dividends, IPO records, market holidays, security master, shares outstanding) you need to make sense of those prices. Every dataset is exposed as a small family of HTTP endpoints under a common URL prefix, returns either JSON or (compressed) CSV, and is gated by an API key tied to your account.
Positioning.
The API is designed to replace one-off
S3 bulk-file deliveries with on-demand, parameterised access. Where the
bulk channel forces you to download a full day's TAQ file before you
can look at one ticker, the API lets you express the slice you need
(Ticker, TradeDate, columns to project, sort order,
limit/offset) and returns only that slice. Full-tick
days paginate.
What this guide assumes.
You are comfortable reading and writing HTTP clients in your language of choice; you know what a 2xx, 4xx, and 5xx status mean and how they differ; you have integrated at least one paginated REST API before; and you have written ingestion code that has to be safely re-runnable.
What this guide gives you.
For each topic: the mental model, the real captured wire-level shape, the production-grade client pattern, and the gotchas observed in actual use.
The base URL and the version prefix.
Every endpoint sits under
https://dev-datasets-api.algoseek.com/api/v1/ on the
development environment. The /api/v1/ prefix is part of every
documented endpoint — the few tutorials that show a bare
/data/... path are using a deprecated shorthand that the
server no longer accepts. When in doubt, paste the full
/api/v1/... path.
Three families of endpoints.
Section by section, the API decomposes into:
- System and identity —
GET /api/v1/status(liveness, no auth required);GET /api/v1/account/my(who am I: identity id, name, and IP allow-list);GET /api/v1/account/my/quotas(current usage and limits per quota dimension);GET /api/v1/account/my/data-access-rules(which datasets you are entitled to, with their date ranges and ticker universes). Each is a separate endpoint because each is independently expensive to compute — the entitlement join, the quota counters, and the IP allow-list lookup are distinct backend calls — so the API exposes them at distinct paths rather than packing them into one catch-all response. - Catalog —
GET /api/v1/meta/datasets(what datasets exist, what columns each one has, what time range each covers). - Data —
GET /api/v1/data/{family}/{dataset}(the actual ticks, bars, and reference rows). Some taketrade_dateand ticker as path parameters; others take them as query-string column-name filters. The TAQ chapter walks through both shapes.
One real request, end to end.
To make this concrete, here is the very first thing you can do with your key, end to end — a real captured exchange. Every line is explained over the next few chapters; for now, just convince yourself that the API is alive and that it knows who you are.
export ALGOSEEK_API_KEY="paste-your-key-here"
curl -s "https://dev-datasets-api.algoseek.com/api/v1/status" \
-H "X-API-KEY: $ALGOSEEK_API_KEY"
The server answers with a tiny JSON envelope:
{
"status": "OK",
"version": "0.2.0"
}
Live capture: HTTP 200 • 319.4 ms • 33 bytes • X-Request-ID: fe45aeca-5ca4-4429-aa0d-f4a27f2a1d17
That is the entire interaction surface in microcosm: a versioned URL
under the canonical base, an X-API-KEY header, and a JSON
response. The remaining chapters add filters, columns, sort, paging,
formats, and the error shapes that wrap them.
The captured timing for this status call (see meta_sys_status)
is a useful baseline: the round-trip with no database lookup, no
entitlement check, and a trivial response body. A slower response on
a production data endpoint is paying for the entitlement check, the
data scan, and bytes on the wire.