banner-left

Historical Quotation Data

Provide various data types from recent years to help you accurately backtest strategies and understand the micro market.

banner-left

Option 1: Click to Download

deals

Filled orders

Support downloading Filled orders from January 2023

Download

candlesticks

Candlesticks chart

Support downloading Candlesticks chart from January 2023

Download

orderbooks

Market depth

Support downloading Market depth from August 2021

Download

orderbooks_slice

Deepth snapshot

Support downloading Deepth snapshot from August 2021

Download

Option 2: Download via API

Request Path Construction:

https://download.gatedata.org/(biz)/(type)/(year)(month)/(market)-(year)(month).csv.gz

For example:

BTC-margined Contract-Depth Snapshot BTC_USD 2023-04-25 13:00~14:00 data ( the downloading time is Beijing time subtracted by 8 hours)

curl -O https://download.gatedata.org/futures_btc/orderbooks_slice/202304/BTC_USD-2023042505.gz

Code Example:

1import os
2import shutil
3import urllib.request
4from datetime import datetime, timedelta
5
6BASE_URL = "https://download.gatedata.org"
7HOURLY_TYPES = {"orderbooks", "orderbooks_slice"}
8
9
10def build_url(biz: str, type_: str, market: str, dt_utc: datetime) -> str:
11    ym   = dt_utc.strftime("%Y%m")      # folder:  202304
12    ymdh = dt_utc.strftime("%Y%m%d%H")  # hourly:  2023042505
13
14    if type_ == "orderbooks_slice":
15        fname = f"{market}-{ymdh}.gz"
16    elif type_ == "orderbooks":
17        fname = f"{market}-{ymdh}.csv.gz"
18    else:
19        fname = f"{market}-{ym}.csv.gz"
20
21    return f"{BASE_URL}/{biz}/{type_}/{ym}/{fname}"
22
23
24def download_and_extract(url: str, save_dir: str) -> str:
25    # build sub-folder from URL: {save_dir}/{biz}/{type}
26    parts = url.split("/")
27    save_dir = os.path.join(save_dir, parts[3], parts[4])
28    os.makedirs(save_dir, exist_ok=True)
29    gz_name = parts[-1]
30    gz_path = os.path.join(save_dir, gz_name)
31
32    print(f"↓ {url}")
33    urllib.request.urlretrieve(url, gz_path)
34
35    # orderbooks_slice → .txt, others (.csv.gz) → .csv
36    if gz_name.endswith(".csv.gz"):
37        out_path = gz_path[: -len(".csv.gz")] + ".csv"
38    else:
39        out_path = gz_path[: -len(".gz")] + ".txt"
40
41    with gzip.open(gz_path, "rb") as f_in, open(out_path, "wb") as f_out:
42        shutil.copyfileobj(f_in, f_out)
43
44    os.remove(gz_path)
45    print(f"  saved → {out_path}")
46    return out_path
47
48
49def batch_download(biz: str, type_: str, market: str,
50                   save_dir: str,
51                   start_dt: datetime,
52                   end_dt: datetime = None):
53    """
54    If end_dt is omitted, downloads only the single file for start_dt.
55
56    Monthly granularity types: iterates month by month.
57      e.g. start_dt=datetime(2026,1,1), end_dt=datetime(2026,3,1)
58           → downloads 202601 / 202602 / 202603
59
60    Hourly granularity types (orderbooks / orderbooks_slice): iterates hour by hour.
61      e.g. start_dt=datetime(2026,1,1,0), end_dt=datetime(2026,1,2,23)
62           → downloads 2026010100 ~ 2026010223, 48 files in total
63    """
64    if end_dt is None:
65        end_dt = start_dt
66
67    if type_ in HOURLY_TYPES:
68        dt = start_dt
69        while dt <= end_dt:
70            download_and_extract(build_url(biz, type_, market, dt), save_dir)
71            dt += timedelta(hours=1)
72    else:
73        dt = start_dt.replace(day=1, hour=0, minute=0, second=0)
74        end = end_dt.replace(day=1, hour=0, minute=0, second=0)
75        while dt <= end:
76            download_and_extract(build_url(biz, type_, market, dt), save_dir)
77            dt = (dt.replace(day=1) + timedelta(days=32)).replace(day=1)
78
79
80if __name__ == "__main__":
81    # ── Spot ──────────────────────────────────────────────────────────────
82    # Single download
83    batch_download("spot", "deals",            "BTC_USDT", "./data", datetime(2023, 4, 25))
84    # batch_download("spot", "candlesticks_1m",  "BTC_USDT", "./data", datetime(2023, 4, 25))
85    # batch_download("spot", "candlesticks_5m",  "BTC_USDT", "./data", datetime(2023, 4, 25))
86    # batch_download("spot", "candlesticks_1h",  "BTC_USDT", "./data", datetime(2023, 4, 25))
87    # batch_download("spot", "candlesticks_4h",  "BTC_USDT", "./data", datetime(2023, 4, 25))
88    # batch_download("spot", "candlesticks_1d",  "BTC_USDT", "./data", datetime(2023, 4, 25))
89    # batch_download("spot", "candlesticks_7d",  "BTC_USDT", "./data", datetime(2023, 4, 25))
90    # batch_download("spot", "orderbooks",       "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
91    # batch_download("spot", "orderbooks_slice", "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
92    # Batch download
93    batch_download("spot", "deals",            "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
94    # batch_download("spot", "candlesticks_1m",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
95    # batch_download("spot", "candlesticks_5m",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
96    # batch_download("spot", "candlesticks_1h",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
97    # batch_download("spot", "candlesticks_4h",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
98    # batch_download("spot", "candlesticks_1d",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
99    # batch_download("spot", "candlesticks_7d",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
100    # batch_download("spot", "orderbooks",       "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
101    # batch_download("spot", "orderbooks_slice", "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
102
103    # ── futures_usdt ──────────────────────────────────────────────────────────
104    # Single download
105    # batch_download("futures_usdt", "trades",            "BTC_USDT", "./data", datetime(2023, 4, 25))
106    # batch_download("futures_usdt", "candlesticks_10s",  "BTC_USDT", "./data", datetime(2023, 4, 25))
107    # batch_download("futures_usdt", "candlesticks_1m",   "BTC_USDT", "./data", datetime(2023, 4, 25))
108    # batch_download("futures_usdt", "candlesticks_1h",   "BTC_USDT", "./data", datetime(2023, 4, 25))
109    # batch_download("futures_usdt", "candlesticks_4h",   "BTC_USDT", "./data", datetime(2023, 4, 25))
110    # batch_download("futures_usdt", "candlesticks_1d",   "BTC_USDT", "./data", datetime(2023, 4, 25))
111    # batch_download("futures_usdt", "candlesticks_7d",   "BTC_USDT", "./data", datetime(2023, 4, 25))
112    # batch_download("futures_usdt", "orderbooks",        "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
113    # batch_download("futures_usdt", "orderbooks_slice",  "BTC_USDT", "./data", datetime(2023, 4, 25, 5))
114    # batch_download("futures_usdt", "mark_prices",       "BTC_USDT", "./data", datetime(2023, 4, 25))
115    # batch_download("futures_usdt", "funding_applies",   "BTC_USDT", "./data", datetime(2023, 4, 25))
116    # batch_download("futures_usdt", "funding_updates",   "BTC_USDT", "./data", datetime(2023, 4, 25))
117    # Batch download
118    # batch_download("futures_usdt", "trades",            "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
119    # batch_download("futures_usdt", "candlesticks_10s",  "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
120    # batch_download("futures_usdt", "candlesticks_1m",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
121    # batch_download("futures_usdt", "candlesticks_1h",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
122    # batch_download("futures_usdt", "candlesticks_4h",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
123    # batch_download("futures_usdt", "candlesticks_1d",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
124    # batch_download("futures_usdt", "candlesticks_7d",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
125    # batch_download("futures_usdt", "orderbooks",        "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
126    # batch_download("futures_usdt", "orderbooks_slice",  "BTC_USDT", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
127    # batch_download("futures_usdt", "mark_prices",       "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
128    # batch_download("futures_usdt", "funding_applies",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
129    # batch_download("futures_usdt", "funding_updates",   "BTC_USDT", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
130
131    # ── futures_btc ────────────────────────────────────────────────────────
132    # Single download
133    # batch_download("futures_btc", "trades",            "BTC_USD", "./data", datetime(2023, 4, 25))
134    # batch_download("futures_btc", "candlesticks_10s",  "BTC_USD", "./data", datetime(2023, 4, 25))
135    # batch_download("futures_btc", "candlesticks_1m",   "BTC_USD", "./data", datetime(2023, 4, 25))
136    # batch_download("futures_btc", "candlesticks_1h",   "BTC_USD", "./data", datetime(2023, 4, 25))
137    # batch_download("futures_btc", "candlesticks_4h",   "BTC_USD", "./data", datetime(2023, 4, 25))
138    # batch_download("futures_btc", "candlesticks_1d",   "BTC_USD", "./data", datetime(2023, 4, 25))
139    # batch_download("futures_btc", "candlesticks_7d",   "BTC_USD", "./data", datetime(2023, 4, 25))
140    # batch_download("futures_btc", "orderbooks",        "BTC_USD", "./data", datetime(2023, 4, 25, 5))
141    # batch_download("futures_btc", "orderbooks_slice",  "BTC_USD", "./data", datetime(2023, 4, 25, 5))
142    # batch_download("futures_btc", "mark_prices",       "BTC_USD", "./data", datetime(2023, 4, 25))
143    # batch_download("futures_btc", "funding_applies",   "BTC_USD", "./data", datetime(2023, 4, 25))
144    # batch_download("futures_btc", "funding_updates",   "BTC_USD", "./data", datetime(2023, 4, 25))
145    # Batch download
146    # batch_download("futures_btc", "trades",            "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
147    # batch_download("futures_btc", "candlesticks_10s",  "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
148    # batch_download("futures_btc", "candlesticks_1m",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
149    # batch_download("futures_btc", "candlesticks_1h",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
150    # batch_download("futures_btc", "candlesticks_4h",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
151    # batch_download("futures_btc", "candlesticks_1d",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
152    # batch_download("futures_btc", "candlesticks_7d",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
153    # batch_download("futures_btc", "orderbooks",        "BTC_USD", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
154    # batch_download("futures_btc", "orderbooks_slice",  "BTC_USD", "./data", datetime(2023, 4, 25, 0), datetime(2023, 4, 25, 23))
155    # batch_download("futures_btc", "mark_prices",       "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
156    # batch_download("futures_btc", "funding_applies",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))
157    # batch_download("futures_btc", "funding_updates",   "BTC_USD", "./data", datetime(2023, 1, 1), datetime(2023, 4, 1))

Developer Tips:

Timezone conversion: the path uses UTC time

Depth snapshot: orderbooks_slice only provides text snapshots in .gz format.

K-line granularity: candlesticks_ followed by granularity, such as candlesticks_1m.

Variable Definitions:

Parameter Name

Business Meaning

Parameter Value

biz

Spot: <tag>spot</tag>

spot

USDT-M Futures: <tag>futures_usdt</tag>

futures_usdt

BTC-M Futures: <tag>futures_btc</tag>

futures_btc

type

Spot & Leverage (spot)

Trade History

deals

K-line market data

candlesticks_* (* indicates k-line granularity: 1m,5m,1h,4h,1d,7d)

Market depth data

orderbooks

Market snapshot data

orderbooks_slice

USDT/BTC Contract (futures_usdt / futures_btc)

Trade History

trades

K-line market data

candlesticks_* (* indicates k-line granularity: 1m,5m,1h,4h,1d,7d)

Market depth data

orderbooks

Market snapshot data

orderbooks_slice

Mark Price

mark_prices

Executed funding rate

funding_applies

Update of forecasted funding rate for the next cycle

funding_updates

time

year

2023

month

01-12

day

01-31

hour

00-23

Note: The time is UTC time. If it is UTC-8 in China, you need to subtract 8 hours from the time of downloading: For example:

For 2023-04-25 13:00~14:00 data, its download time is 2023042505