RESTful API
Equities, options, futures, and reference data through a single endpoint
Authenticate once, query any dataset algoseek has. JSON or CSV responses, standard REST conventions, one schema across every dataset.
algoseek API Reference
v1
api.algoseek.com
Get extended minute bars
Returns minute bars with up to 90 fields per bar including VWAP, trade count, buy/sell volume, spread analytics, and order flow indicators.
Parameters
ticker
REQUIRED
Path parameter. Ticker symbol (e.g. AAPL)
date
REQUIRED
Trading date (YYYY-MM-DD)
aggregation_logic
OPTIONAL
Aggregation logic variant (algoseek, no_finra_trf)
columns
OPTIONAL
Field set
response_format
OPTIONAL
json, csv, csv_gzip
ColumnName.operation
OPTIONAL
Filter by a specific column, e.g. TradeDate.eq (YYYY-MM-DD)
Response Schema
200
403
404
422
BarDateTime
TimeStamp
Bar start timestamp (EST)
Ticker
String
Symbol name
ASID
Integer
Unique security identifier
OpenBidPrice
Decimal
NBBO bid at bar open
OpenAskPrice
Decimal
NBBO ask at bar open
LastTradePrice
Decimal
Price of last trade
TotalVolumeWeightPrice
Decimal
VWAP from exchange and off-exchange FINRA/TRF trades
TotalVolume
Integer
Shares traded during the bar, including FINRA/TRF
TotalTrades
Integer
Total number of trades
RelativeSpreadAverage
Decimal
Average per-trade bid/ask spread relative to the midpoint, per minute
Showing 10 of 90 fields
import requests
url = "https://api.algoseek.com/api/v1/data/us-equity/eq-taq-1min-ext/AAPL"
params = {
"columns": "BarDateTime,Ticker,ASID,OpenBidPrice,OpenAskPrice,LastTradePrice,TotalVolumeWeightPrice,TotalVolume,TotalTrades,RelativeSpreadAverage",
"aggregation_logic": "algoseek",
"TradeDate.gt": "2024-01-01",
"TradeDate.lt": "2024-02-01",
"response_format": "json"
}
headers = {"X-API-KEY": "<X-API-KEY>"}
response = requests.get(url, headers=headers, params=params)
print(response.json())Response
{
"data": [
{
"BarDateTime": "2024-01-02 04:30:00",
"Ticker": "AAPL",
"ASID": 1010000000001033,
"OpenBidPrice": 189.9,
"OpenAskPrice": 189.95,
"LastTradePrice": 189.94,
"TotalVolumeWeightPrice": 189.93098,
"TotalVolume": 367,
"TotalTrades": 25,
"RelativeSpreadAverage": 0.00025
},
...
]
}curl -X GET "https://api.algoseek.com/api/v1/data/us-equity/eq-taq-1min-ext/AAPL" \
-H "X-API-KEY: <X-API-KEY>" \
--get \
-d "columns=BarDateTime,Ticker,ASID,OpenBidPrice,OpenAskPrice,LastTradePrice,TotalVolumeWeightPrice,TotalVolume,TotalTrades,RelativeSpreadAverage" \
-d "aggregation_logic=algoseek" \
-d "TradeDate.gt=2024-01-01" \
-d "TradeDate.lt=2024-02-01" \
-d "response_format=json"Response
{
"data": [
{
"BarDateTime": "2024-01-02 04:30:00",
"Ticker": "AAPL",
"ASID": 1010000000001033,
"OpenBidPrice": 189.9,
"OpenAskPrice": 189.95,
"LastTradePrice": 189.94,
"TotalVolumeWeightPrice": 189.93098,
"TotalVolume": 367,
"TotalTrades": 25,
"RelativeSpreadAverage": 0.00025
},
...
]
}const ticker = "AAPL";
const url = new URL(`https://api.algoseek.com/api/v1/data/us-equity/eq-taq-1min-ext/${ticker}`);
const params = {
"columns": "BarDateTime,Ticker,ASID,OpenBidPrice,OpenAskPrice,LastTradePrice,TotalVolumeWeightPrice,TotalVolume,TotalTrades,RelativeSpreadAverage",
"aggregation_logic": "algoseek",
"TradeDate.gt": "2024-01-01",
"TradeDate.lt": "2024-02-01",
"response_format": "json"
};
url.search = new URLSearchParams(params).toString();
const requestOptions = {
method: "GET",
headers: { "X-API-KEY": "<X-API-KEY>", "Accept": "application/json" },
redirect: "follow"
};
fetch(url, requestOptions)
.then((response) => {
if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
return response.json();
})
.then((result) => console.log(result))
.catch((error) => console.error("Fetch error:", error));Response
{
"data": [
{
"BarDateTime": "2024-01-02 04:30:00",
"Ticker": "AAPL",
"ASID": 1010000000001033,
"OpenBidPrice": 189.9,
"OpenAskPrice": 189.95,
"LastTradePrice": 189.94,
"TotalVolumeWeightPrice": 189.93098,
"TotalVolume": 367,
"TotalTrades": 25,
"RelativeSpreadAverage": 0.00025
},
...
]
}package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL := "https://api.algoseek.com/api/v1/data/us-equity/eq-taq-1min-ext/AAPL"
// Construct parameters
params := url.Values{}
params.Add("columns", "BarDateTime,Ticker,ASID,OpenBidPrice,OpenAskPrice,LastTradePrice,TotalVolumeWeightPrice,TotalVolume,TotalTrades,RelativeSpreadAverage")
params.Add("aggregation_logic", "algoseek")
params.Add("TradeDate.gt", "2024-01-01")
params.Add("TradeDate.lt", "2024-02-01")
params.Add("response_format", "json")
// Append params to URL
fullURL := fmt.Sprintf("%s?%s", baseURL, params.Encode())
req, err := http.NewRequest("GET", fullURL, nil)
if err != nil { panic(err) }
req.Header.Add("X-API-KEY", "<X-API-KEY>")
client := &http.Client{}
res, err := client.Do(req)
if err != nil { panic(err) }
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}Response
{
"data": [
{
"BarDateTime": "2024-01-02 04:30:00",
"Ticker": "AAPL",
"ASID": 1010000000001033,
"OpenBidPrice": 189.9,
"OpenAskPrice": 189.95,
"LastTradePrice": 189.94,
"TotalVolumeWeightPrice": 189.93098,
"TotalVolume": 367,
"TotalTrades": 25,
"RelativeSpreadAverage": 0.00025
},
...
]
}Why One API
Every vendor you add costs weeks before you see data
Onboarding a data vendor is never just an API call: connectivity, schema, authentication, rate limits, firewalls, and at larger firms legal, procurement, and security, repeated per vendor. With algoseek you do it once: one endpoint, one authentication, one schema across every asset class.
What’s Behind the API
The data matters more than the delivery method
20+ years of history
Tick, bar, and reference data back to 2007: the 2008 crisis, the 2020 crash, every regime between. Updated daily.
Security masters via API
ASID, FIGI, and ISIN cross-referencing through the API you already use. No reconciling identifiers across vendors.
Real-time and historical
Query the archive, add real-time from the same Mercury source when you go live. Same schema throughout.
Standard REST conventions
Predictable URL structure, standard HTTP methods, pagination, and error codes. JSON or CSV response formats. No proprietary SDK required.
Institutional rate limits
Built for pipelines pulling full universes, not hobby projects. A delivery method, not a metered product.
High-touch support
Engineers from the trading side who understand the data pick up. Not a ticket queue.
Endpoints
What you can query
GET
/us-equity/taq-1min/:ticker
Minute bars with up to 90 fields
GET
/us-equity/daily-ohlc/:ticker
Daily OHLCV bars
GET
/us-equity/trades/:trade_date/:ticker
Tick-level trade data
GET
/us-equity/taq/:trade_date/:ticker
NBBO and top-of-book quotes
GET
/us-equity-ref/sec-master
Security master lookups
GET
/us-equity-ref/adj-factors-detail
Corporate actions and adjustment factors
GET
/us-equity-opt/greeks-daily/:ticker
Greeks and implied volatility
Not Just an API
Four ways to access the same data
The RESTful API is one of four access methods. Every method hits the same underlying data, so your team can use whichever fits the workflow without worrying about consistency.
RESTful API
Programmatic
ArdaDB
Cloud SQL
Jupyter
Notebook
Download
S3 flat files
Start with the data, not the integration
Explore algoseek’s full archive in the Sandbox before writing a single line of integration code. No credit card needed.