# Dukascopy — Zapi reference > Dukascopy's free tick and one-minute history, including XAUUSD gold going back to 2003. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ content, message, errors }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/finance/dukascopy - Endpoint catalog: https://zpi.web.id/category/finance - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## Dukascopy **Category:** finance · **Slug:** `dukascopy` **Detail page:** https://zpi.web.id/api/finance/dukascopy Dukascopy's free tick and one-minute history, including XAUUSD gold going back to 2003. **Tags:** dukascopy, forex, gold, xauusd, tick-data, ohlcv ### Instrument List Dukascopy — the instrument manifest behind the historical archive. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:dukascopy/instrument-list` - **Cache TTL:** 86400s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | no | Filter on instrument name, symbol or description. Omit for the full list | | `limit` | number | query | no | Items to return. Default 100, max 1000 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:dukascopy/instrument-list?query=gold&limit=100" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:dukascopy/instrument-list?query=gold&limit=100", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:dukascopy/instrument-list?query=gold&limit=100", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 33, "items": [ { "tags": [ "CFD_INSTRUMENTS", "FX_CFD_ALL" ], "symbol": "GDXUSUSD", "pipValue": 0.01, "priceStep": 0.001, "instrument": "GDX.US/USD", "description": "VanEck Vectors Gold Miners ETF", "baseCurrency": "GDX.US", "quoteCurrency": "USD", "h1HistoryStart": "2017-03-01T18:00:00.000Z", "m1HistoryStart": "2017-03-01T18:12:00.000Z", "tickHistoryStart": "2017-03-01T18:13:24.243Z" }, { "tags": [ "CFD_INSTRUMENTS", "FX_CFD_ALL" ], "symbol": "GDXJUSUSD", "pipValue": 0.01, "priceStep": 0.001, "instrument": "GDXJ.US/USD", "description": "VanEck Vectors Junior Gold Miners ETF", "baseCurrency": "GDXJ.US", "quoteCurrency": "USD", "h1HistoryStart": "2017-03-01T18:00:00.000Z", "m1HistoryStart": "2017-03-01T18:12:00.000Z", "tickHistoryStart": "2017-03-01T18:13:02.678Z" }, { "tags": [ "CFD_INSTRUMENTS", "FX_CFD_ALL" ], "symbol": "GLDUSUSD", "pipValue": 0.01, "priceStep": 0.001, "instrument": "GLD.US/USD", "description": "SPDR Gold Shares ETF", "baseCurrency": "GLD.US", "quoteCurrency": "USD", "h1HistoryStart": "2017-03-01T18:00:00.000Z", "m1HistoryStart": "2017-03-01T18:12:00.000Z", "tickHistoryStart": "2017-03-01T18:13:07.724Z" }, { "tags": [ "CFD_INSTRUMENTS", "FX_CFD_ALL" ], "symbol": "GSUSUSD", "pipValue": 0.01, "priceStep": 0.001, "instrument": "GS.US/USD", "description": "GOLDMAN SACHS GROUP INC", "baseCurrency": "GS.US", "quoteCurrency": "USD", "h1HistoryStart": "2017-03-01T18:00:00.000Z", "m1HistoryStart": "2017-03-01T18:12:00.000Z", "tickHistoryStart": "2017-03-01T18:12:59.163Z" }, { "tags": [ "CFD_INSTRUMENTS", "FX_CFD_ALL" ], "symbol": "IGLNUSUSD", "pipValue": 0.01, "priceStep": 0.001, "instrument": "IGLN.US/USD", "description": "iShares Physical Gold ETC Fund", "baseCurrency": "IGLN.US", "quoteCurrency": "USD", "h1HistoryStart": "2024-03-11T07:00:00.000Z", "m1HistoryStart": "2024-03-11T07:50:00.000Z", "tickHistoryStart": "2024-03-11T07:50:00.000Z" }, { "tags": [ "CFD_INSTRUMENTS", "FX_CFD_ALL" ], "symbol": "RGLDUSUSD", "pipValue": 0.01, "priceStep": 0.001, "instrument": "RGLD.US/USD", "description": "ROYAL GOLD INC", "baseCurrency": "RGLD.US", "quoteCurrency": "USD", "h1HistoryStart": "2022-05-13T14:00:00.000Z", "m1HistoryStart": "2022-05-13T14:04:00.000Z", "tickHistoryStart": "2022-05-13T14:04:53.418Z" } ], "query": "gold", "total": 33, "dataset": "instruments", "hasMore": false, "provider": "dukascopy" } ``` --- ### M1 Candles Dukascopy — one-minute OHLC history from the public tick archive. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:dukascopy/m1-candles` - **Cache TTL:** 604800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `instrument` | string | query | yes | Instrument name or archive symbol, e.g. XAU/USD or XAUUSD | | `from` | string | query | yes | First UTC day to include, YYYY-MM-DD | | `to` | string | query | no | Last UTC day to include, YYYY-MM-DD. Defaults to `from`. A long range can come back partial — resume from `nextFrom` when `hasMore` is true | | `side` | enum(bid|ask) | query | no | Quote side the candles are built from. Default bid | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:dukascopy/m1-candles?instrument=XAU%2FUSD&from=2024-01-15&to=2024-01-17&side=bid" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:dukascopy/m1-candles?instrument=XAU%2FUSD&from=2024-01-15&to=2024-01-17&side=bid", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:dukascopy/m1-candles?instrument=XAU%2FUSD&from=2024-01-15&to=2024-01-17&side=bid", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "to": "2024-01-17", "from": "2024-01-15", "side": "bid", "count": 1440, "items": [ { "low": 2046.815, "date": "2024-01-15T00:00:00.000Z", "high": 2047.675, "open": 2047.525, "close": 2046.935, "volume": 0.01064, "timestamp": 1705276800000 }, { "low": 2046.695, "date": "2024-01-15T00:01:00.000Z", "high": 2047.005, "open": 2046.855, "close": 2046.915, "volume": 0.00878, "timestamp": 1705276860000 }, { "low": 2046.935, "date": "2024-01-15T00:02:00.000Z", "high": 2047.445, "open": 2046.945, "close": 2047.035, "volume": 0.00876, "timestamp": 1705276920000 }, { "low": 2046.885, "date": "2024-01-15T00:03:00.000Z", "high": 2047.155, "open": 2046.985, "close": 2046.945, "volume": 0.00465, "timestamp": 1705276980000 }, { "low": 2046.445, "date": "2024-01-15T00:04:00.000Z", "high": 2047.015, "open": 2047.015, "close": 2046.445, "volume": 0.00717, "timestamp": 1705277040000 }, { "low": 2046.345, "date": "2024-01-15T00:05:00.000Z", "high": 2046.818, "open": 2046.465, "close": 2046.745, "volume": 0.00798, "timestamp": 1705277100000 } ], "symbol": "XAUUSD", "dataset": "m1-candles", "hasMore": true, "nextFrom": "2024-01-16", "provider": "dukascopy", "instrument": "XAU/USD", "daysCovered": 1, "rateLimited": true } ``` --- ### Ticks Dukascopy — raw ticks for one UTC hour, straight from the public archive. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/finance:dukascopy/ticks` - **Cache TTL:** 604800s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `instrument` | string | query | yes | Instrument name or archive symbol, e.g. XAU/USD or XAUUSD | | `date` | string | query | yes | UTC day of the hour block, YYYY-MM-DD | | `hour` | number | query | yes | UTC hour block, 0-23 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/finance:dukascopy/ticks?instrument=XAU%2FUSD&date=2024-01-15&hour=10" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/finance:dukascopy/ticks?instrument=XAU%2FUSD&date=2024-01-15&hour=10", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/finance:dukascopy/ticks?instrument=XAU%2FUSD&date=2024-01-15&hour=10", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "date": "2024-01-15", "hour": 10, "count": 4022, "items": [ { "ask": 2055.235, "bid": 2054.925, "date": "2024-01-15T10:00:00.113Z", "spread": 0.31, "askVolume": 0.00012, "bidVolume": 0.00012, "timestamp": 1705312800113 }, { "ask": 2055.245, "bid": 2054.935, "date": "2024-01-15T10:00:00.867Z", "spread": 0.31, "askVolume": 0.00012, "bidVolume": 0.00012, "timestamp": 1705312800867 }, { "ask": 2055.285, "bid": 2054.985, "date": "2024-01-15T10:00:01.219Z", "spread": 0.3, "askVolume": 0.00012, "bidVolume": 0.00012, "timestamp": 1705312801219 }, { "ask": 2055.345, "bid": 2055.045, "date": "2024-01-15T10:00:01.370Z", "spread": 0.3, "askVolume": 0.00012, "bidVolume": 0.00012, "timestamp": 1705312801370 }, { "ask": 2055.295, "bid": 2055.005, "date": "2024-01-15T10:00:03.629Z", "spread": 0.29, "askVolume": 0.00012, "bidVolume": 0.00012, "timestamp": 1705312803629 }, { "ask": 2055.325, "bid": 2055.035, "date": "2024-01-15T10:00:03.932Z", "spread": 0.29, "askVolume": 0.00012, "bidVolume": 0.00012, "timestamp": 1705312803932 } ], "symbol": "XAUUSD", "dataset": "ticks", "provider": "dukascopy", "instrument": "XAU/USD" } ``` --- _Generated: 2026-08-20T22:22:06.372Z_