Discover/Dukascopy API
live

Dukascopy APIdukascopy.com

Access historical OHLCV candle data for forex, commodities, indices, stocks, bonds, ETFs, and crypto from Dukascopy. Up to 60-day ranges, multi-period aggregation.

Endpoint health
verified 6d ago
get_instruments
get_candles
2/2 passing latest checkself-healing
Endpoints
2
Updated
22d ago

What is the Dukascopy API?

The Dukascopy API exposes 2 endpoints covering historical OHLCV candle data across forex pairs, commodities, indices, stocks, bonds, ETFs, and crypto. The get_candles endpoint returns open, high, low, close, and volume fields with timestamps in both UTC and a configurable local offset, supporting candle periods from 1 to 60 minutes and date ranges up to 60 days per request. The get_instruments endpoint lists all available symbols with metadata including pip value and price scale.

Try it

No input parameters required.

api.parse.bot/scraper/4bf31981-ccca-4528-a4a4-598f6a88b633/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4bf31981-ccca-4528-a4a4-598f6a88b633/get_instruments' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace dukascopy-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Dukascopy Historical Data — fetch instruments and OHLCV candle data."""
from datetime import datetime, timedelta
from parse_apis.dukascopy_historical_data_feed_api import (
    Dukascopy, OfferSide, Period, UpstreamError,
)

client = Dukascopy()

# List available instruments (capped to 5 for brevity).
for inst in client.instruments.list(limit=5):
    print(inst.name, inst.description, inst.pip_value)

# Fetch 5-minute BID candles for EUR/USD over a 1-day window.
end = datetime.now().strftime("%Y-%m-%d")
start = (datetime.now() - timedelta(days=1)).strftime("%Y-%m-%d")

for candle in client.candles.list(
    instrument="EUR/USD",
    offer_side=OfferSide.BID,
    period=Period.FIVE,
    start_date=start,
    end_date=end,
    limit=3,
):
    print(candle.timestamp_utc, candle.open, candle.close, candle.volume)

# Fetch 1-hour ASK candles for gold.
gold_candle = client.candles.list(
    instrument="XAU/USD",
    offer_side=OfferSide.ASK,
    period=Period.SIXTY,
    start_date=start,
    end_date=end,
    limit=1,
).first()

if gold_candle:
    print(gold_candle.timestamp_utc, gold_candle.high, gold_candle.low)

# Typed error handling.
try:
    for c in client.candles.list(
        instrument="INVALID/PAIR",
        start_date=start,
        end_date=end,
        limit=1,
    ):
        print(c.open)
except UpstreamError as exc:
    print(f"upstream error: {exc}")

print("exercised: instruments.list / candles.list (EUR/USD BID 5m, XAU/USD ASK 60m) / UpstreamError catch")
All endpoints · 2 totalmissing one? ·

List all available trading instruments with their codes, descriptions, and metadata. Use instrument names/codes from this list as input for the get_candles endpoint.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "total": "integer - total number of instruments available",
    "instruments": "array of instrument objects with id, name, code, description, group_id, pip_value, price_scale"
  },
  "sample": {
    "data": {
      "total": 1501,
      "instruments": [
        {
          "id": 31912,
          "code": "0005.HK-HKD",
          "name": "0005.HK/HKD",
          "group_id": 31,
          "pip_value": 0.01,
          "description": "HSBC Holdings Plc",
          "price_scale": 3
        },
        {
          "id": 30498,
          "code": "0027.HK-HKD",
          "name": "0027.HK/HKD",
          "group_id": 31,
          "pip_value": 0.01,
          "description": "Galaxy Entertainment Group Ltd",
          "price_scale": 3
        }
      ]
    },
    "status": "success"
  }
}

About the Dukascopy API

Instruments and Coverage

The get_instruments endpoint returns a full catalog of tradeable symbols available in Dukascopy's market data feed. Each instrument object includes an id, name, code, description, group_id, pip_value, and price_scale. The name field (e.g. EUR/USD, XAU/USD) is the value you pass to get_candles as the instrument parameter. The endpoint takes no inputs and returns the total count alongside the full instruments array.

Candle Data

The get_candles endpoint accepts a start_date and end_date in YYYY-MM-DD format, an instrument in slash format, an offer_side of BID or ASK, a period in minutes (1, 2, 3, 5, 10, 15, 30, or 60), and an optional timezone_offset integer. It returns an array of candle objects, each carrying timestamp_utc, timestamp_eat, open, high, low, close, and volume. The timezone_offset parameter controls the timestamp_eat field and the timezone label in the response (e.g. UTC+3). The response also surfaces instrument in dash format (e.g. EUR-USD), offer_side, period_minutes, total_candles, and an errors array for any days that failed to return data.

Limitations and Behavior

Each get_candles request is bounded to a maximum window of 60 days between start_date and end_date. Requests spanning longer periods require multiple calls. The errors field in the response records per-day failures rather than failing the entire request, so partial results are possible. All underlying data is 1-minute resolution aggregated up to the requested period — periods outside the accepted list (1, 2, 3, 5, 10, 15, 30, 60) are not supported.

Reliability & maintenanceVerified

The Dukascopy API is a managed, monitored endpoint for dukascopy.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dukascopy.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official dukascopy.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Backtesting forex trading strategies using bid/ask OHLCV candles for pairs like EUR/USD or GBP/USD
  • Building commodity price history charts for gold (XAU/USD) with configurable candle periods
  • Aggregating multi-instrument candle data across asset classes for portfolio analysis
  • Converting UTC timestamps to local time zones using the timezone_offset parameter for regional trading desks
  • Comparing BID vs ASK spread behavior over time by fetching both offer sides for the same instrument
  • Populating a backtesting engine with high-resolution 1-minute data for crypto instruments
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Dukascopy have an official developer API?+
Dukascopy offers a public historical data tool at https://www.dukascopy.com/swiss/english/marketwatch/historical/ and a JForex API for their trading platform, but there is no general-purpose public REST API for programmatic historical data access.
What does get_candles return and how do I control the candle period?+
The endpoint returns an array of candle objects with timestamp_utc, timestamp_eat, open, high, low, close, and volume fields. The period parameter controls aggregation: accepted values are 1, 2, 3, 5, 10, 15, 30, and 60 minutes. Omitting it defaults to the API's fallback behavior. The offer_side parameter selects BID or ASK pricing.
Can I fetch more than 60 days of candle data in a single request?+
No — the maximum window per request is 60 days between start_date and end_date. To cover longer periods, issue multiple requests with sequential date ranges and concatenate the candles arrays. The errors field in each response flags any days that returned no data within that window.
Does this API return tick-level or order book data?+
Not currently. The API covers historical OHLCV candles at minute-level granularity (1–60 minute periods) for BID or ASK pricing. Tick data and order book depth are not exposed. You can fork the API on Parse and revise it to add those endpoints if Dukascopy's data feed surfaces that detail.
Are intraday candles available for all instrument types, including stocks and ETFs?+
Instrument availability depends on what Dukascopy carries in its data feed. The get_instruments endpoint lists every available symbol with its group_id, so you can filter by asset class. Stocks and ETFs listed there support the same OHLCV candle queries as forex pairs. Coverage for less liquid instruments may be sparser, reflected in the errors array of the get_candles response.
Page content last updated . Spec covers 2 endpoints from dukascopy.com.
Related APIs in FinanceSee all →
forex.com API
Access real-time forex prices and currency exchange rates, track client sentiment and pivot points, and browse economic calendar events. Search across multiple currency instruments and retrieve rollover rates.
cryptocraft.com API
Track real-time cryptocurrency prices across 20+ exchanges, analyze historical OHLC data and coin fundamentals, and stay informed with upcoming economic events and market news. Monitor thousands of coins and instruments to make data-driven investment decisions.
barchart.com API
Monitor live stock quotes and commodity prices, analyze options chains with gamma exposure data, and access historical market time series to track top-performing stocks. Use real-time and historical data to make informed trading and investment decisions across equities and commodities.
kraken.com API
Get live Kraken exchange market data including supported assets, trading pairs metadata, tickers, OHLCV candlesticks, and bid/ask spread history.
databento.com API
Access historical market data for US equities, futures, and options through a simple authentication system, allowing you to retrieve timeseries data, look up instruments, and explore available datasets. Resolve trading symbols and discover data schemas to power your quantitative analysis and backtesting workflows.
finanzen.net API
Search for stocks and assets, retrieve live prices, view index components, and access historical price data to track market performance and make informed investment decisions. Monitor real-time market quotes and analyze past price trends across multiple financial instruments on one platform.
tradingview.com API
Monitor live forex pair prices and technical indicators from TradingView, including real-time OHLC data, bid/ask spreads, moving averages, and pivot points. Analyze performance metrics and scan multiple currency pairs to make informed trading decisions.
cex.io API
Access real-time cryptocurrency market data from CEX.io, including live prices, tickers, order books, trade history, and OHLCV candles for spot trading pairs. Monitor market movements and analyze trading opportunities with comprehensive pricing and order depth information across supported cryptocurrencies.