API Reference

Programmatic access to all data. Free API key, 300 requests/minute.

Getting started

Base URL: https://api.hfdatalibrary.com/v1

All requests require an API key passed as a header:

curl -H "X-API-Key: your-key-here" \
  https://api.hfdatalibrary.com/v1/symbols

API keys are free. Register here with your name, institution, and email.

Rate limit: 300 requests per minute per API key. Responses include X-RateLimit-Remaining and X-RateLimit-Reset headers.

Endpoints

GET /symbols

List all available tickers with metadata.

{
  "count": 1391,
  "symbols": [
    {
      "ticker": "AAPL",
      "name": "Apple Inc.",
      "start_date": "2002-12-30",
      "end_date": "2026-04-04",
      "bars_raw": 2847391,
      "bars_clean": 2846982,
      "quintile": 5,
      "source": "pitrading+alpaca"
    },
    ...
  ]
}
GET /symbols/{ticker}

Metadata for a single ticker: date range, bar counts, quality scores, data source.

GET /bars/{ticker}

Query 1-minute OHLCV bars for a ticker.

Parameters

ParamTypeDefaultDescription
startdateearliestStart date (YYYY-MM-DD)
enddatelatestEnd date (YYYY-MM-DD)
versionstringcleanData version: raw, clean, or filled
formatstringjsonResponse format: json, csv, or parquet
limitint10000Max rows per response (pagination)
offsetint0Row offset for pagination
GET /bars/AAPL?start=2024-01-02&end=2024-01-02&version=clean&format=json

{
  "ticker": "AAPL",
  "version": "clean",
  "count": 389,
  "bars": [
    {
      "datetime": "2024-01-02 09:30:00",
      "open": 187.15,
      "high": 187.28,
      "low": 186.92,
      "close": 187.01,
      "volume": 1284300
    },
    ...
  ]
}
GET /bars/{ticker}/daily

Daily OHLCV bars aggregated from intraday data. Same parameters as /bars/{ticker}.

GET /variables/{ticker}

All 27 computed academic variables, daily frequency.

Parameters

ParamTypeDefaultDescription
startdateearliestStart date
enddatelatestEnd date
versionstringcleanData version
variablesstringallComma-separated list: rv_5min,bns_z,amihud
formatstringjsonjson, csv, or parquet
GET /variables/AAPL?start=2024-01-02&end=2024-01-02&variables=rv_5min,bns_z,amihud

{
  "ticker": "AAPL",
  "version": "clean",
  "data": [
    {
      "date": "2024-01-02",
      "rv_5min": 0.000043,
      "bns_z": 1.872,
      "amihud": 2.31e-12
    }
  ]
}
GET /quality/{ticker}

Daily data quality report: gap rate, observed bars, longest gap, bars since last trade.

GET /download/{ticker}

Download full history for a ticker as a single parquet file. Served directly from R2.

Parameters

ParamTypeDefaultDescription
versionstringcleanraw, clean, or filled
GET /bulk/{package}

Download pre-packaged bundles.

PackageContents
sp500All S&P 500 constituents
nasdaq100All Nasdaq 100 constituents
allComplete dataset (all 1,391 tickers)
sector-techTechnology sector
sector-healthcareHealthcare sector
sector-financialsFinancials sector
quintile-1Q1 (least liquid)
quintile-5Q5 (most liquid)

Error codes

CodeMeaning
400Bad request — invalid parameter (check date format, ticker name)
401Unauthorized — missing or invalid API key
404Not found — ticker doesn't exist in the dataset
429Rate limit exceeded — wait and retry (see Retry-After header)
500Server error — please report to aelkassabgi@uca.edu