This comparison is for FX backtesters, quant developers, and systematic traders who already know Dukascopy's free historical price data and want to know where FXMacroData fits. The short version: these two products do different jobs. Dukascopy Bank's historical data export gives you FX price history, from individual ticks up to monthly candles. FXMacroData gives you the macro side of the same backtest: official economic releases with the second they were published, across 22 currencies.
The core finding is that a serious event-driven FX backtest needs both layers, and that the licence attached to each matters as much as the data. Dukascopy's price history is free to download, but its website Terms of Use restrict use to personal, non-commercial purposes. FXMacroData publishes self-serve plans with a free USD tier and a $50/month Individual plan, plus a self-serve add-on for commercial redistribution. If your backtest asks "what did EUR/USD do in the 60 seconds after US payrolls?", Dukascopy can supply the ticks and FXMacroData can supply the payrolls timestamp to line them up against.
Decision snapshot
Use Dukascopy for
Free FX, commodity, and index price history, tick-by-tick to monthly, exported as CSV for personal research and backtesting.
Use FXMacroData for
Official macro releases with second-level announcement timestamps, a release calendar, and an API that a backtest, alert, or AI agent can call.
Fast verdict
They are complements, not substitutes. Price from one, release timing from the other, joined on a UTC timestamp.
Takeaway: Pick by layer. Dukascopy answers "what was the price?"; FXMacroData answers "what was released, and at exactly what second?"
Pricing And Licence
Dukascopy does not charge for its historical data export. The tool is offered on the Dukascopy historical data page, and the same history can be pulled through the Historical Data Manager inside the JForex platform after logging in to a demo or live account. There is no price list to compare, which is why this article has no price chart.
The cost question is really a licence question. Dukascopy's website Terms of Use allow you to download material for your own personal, non-commercial use, prohibit redistribution and derivative works without consent, and state that information on the site "may not be used to construct a database of any kind." The historical data page does not publish a separate data licence that overrides those terms. If you are a solo researcher testing ideas, that is usually fine. If you are a fund, a signal vendor, or a product team, you should get written clarity from Dukascopy before building on it.
FXMacroData publishes its plans in full: an Always Free tier with USD data, no key, 100 requests/day, and USD announcements delayed 15 minutes; Individual at $50/month or $500/year with a 14-day trial and 1,000,000 requests/month; Business at $250/month or $2,500/year for companies and teams of up to 10 people; and Enterprise by custom agreement. Commercial Redistribution is a self-serve add-on at $10/month per block of up to 100 measured users (or 1,000 public-feed followers).
Dukascopy historical data
Free*
CSV export, tick to monthly. Website terms limit use to personal, non-commercial purposes and bar building a database from site information.
FXMacroData Always Free
$0
USD data, no key, 100 requests/day, USD announcements delayed 15 minutes.
FXMacroData Individual
$50/month
22 currencies, 1,000,000 requests/month, 14-day trial. Redistribution available as a self-serve add-on.
Takeaway: Dukascopy is cheaper at $0, but the price you pay is a personal-use licence. FXMacroData costs money and states up front what you may do with the data, including commercial redistribution.
Side-By-Side Comparison
| Attribute | FXMacroData | Dukascopy historical data |
|---|---|---|
| Core job | Official macro releases, release calendar, and FX context through an API. | Free historical price data for forex, commodities, and indices. |
| Entry pricing | Always Free USD tier; Individual $50/month or $500/year; Business $250/month. | Free* |
| Free tier | USD data, no key, 100 requests/day, announcements delayed 15 minutes. | The whole export is free*; JForex route needs a demo or live login. |
| Coverage | 22 currencies, 700+ indicator series from statistics agencies and central banks, plus FX spot, COT, yields, commodities. | Forex pairs, commodities, and indices. No macro release values in the export. |
| Release timing / latency | Second-level announcement_datetime on every release; typically available within seconds of publication, measured publicly. |
Not applicable to the price export. The website economic calendar lists scheduled times and actuals but publishes no latency figure or downloadable history. |
| API format | REST JSON with OpenAPI, X-API-Key header auth, SSE streaming, GraphQL, Python/JS SDKs. |
CSV via a web export tool or JForex Historical Data Manager. No documented public REST API for the historical feed on the checked pages. |
| Rate limits | 1,000,000 requests/month on paid plans; bursts 300/min, 5,000/hour, 20 concurrent. | Not publicly listed. |
| History | Release history per series with announcement timestamps and source metadata. | Deep price history; start dates vary by instrument and timeframe. |
| AI / MCP | Official MCP server for Claude, ChatGPT, Cursor, and other clients. | None listed for the historical data feed. |
| Licence for programmatic / commercial use | Published plans for individuals and teams; self-serve Commercial Redistribution add-on. | Website terms: personal, non-commercial use; no redistribution or database-building without consent*. |
| Best fit | Event-driven FX research, macro-aware strategies, dashboards, alerts, AI agents. | Personal price-based backtests, tick-level execution research, chart pattern work. |
* Competitor pricing and terms retrieved from Dukascopy's public historical data page and website Terms of Use in October 2026.
Price Layer Versus Macro Layer
Dukascopy's historical data is valued by backtesters for one reason: it is free, granular price data published by Dukascopy Bank SA, exportable as CSV from tick-by-tick to monthly bars. The JForex platform adds custom timeframes such as price-based Renko. For pure price strategies, such as breakouts, mean reversion, and session-range tests, that may be all you need.
Macro-driven FX strategies need a second input. A payrolls surprise, a CPI beat, or a policy-rate decision is an event with a value and a time. Dukascopy's historical export does not carry those values. Its website economic calendar shows event, currency, scheduled time, impact level, and previous, forecast, and actual figures, but the checked pages do not offer a downloadable release history, a public API, or a stated source for the values. FXMacroData fills that gap with official-source release rows from the agency or central bank, each with the second it was published.
Two inputs, one event-driven backtest
1. Price layer
Dukascopy tick or 1-second bars for EUR/USD, exported as CSV with UTC timestamps.
2. Macro layer
FXMacroData release rows: value, change, and announcement_datetime in epoch seconds.
3. Join
Align ticks to each release second, then slice windows such as -5 minutes to +15 minutes.
4. Measure
Compute post-release returns, spread widening, and reaction by surprise size.
Takeaway: Without a second-level release timestamp, a tick-level price series cannot tell you which tick was the first reaction. The macro layer is what makes tick data event-aware.
Licence Terms And Third-Party Download Tools
Much of the Dukascopy data used in public backtesting projects is not downloaded through the official export tool. Community tools such as the open-source dukascopy-node package fetch the same price history programmatically, with options for tick through monthly timeframes, bid or ask price, and CSV or JSON output. These are third-party projects. The dukascopy-node README states that it is not affiliated with, endorsed, or vetted by Dukascopy Bank SA and is intended for research and educational purposes.
That matters for two reasons. First, a third-party downloader does not change the terms that apply to the underlying data; Dukascopy's website Terms of Use still describe personal, non-commercial use and restrict redistribution. Second, an unofficial access path can change or stop working without notice, which is a real operational risk for anything running in production. If your project is commercial, treat Dukascopy data as a research input until you have written permission, and keep the licence question separate from the convenience of the tool.
Personal research
Dukascopy's export is a reasonable free source. FXMacroData's free USD tier or Individual plan covers the macro side.
Firm or fund research
Dukascopy's terms describe non-commercial use; ask Dukascopy before relying on it. FXMacroData Business covers teams of up to 10 people.
Product or redistribution
Dukascopy prohibits redistribution without consent. FXMacroData sells a self-serve Commercial Redistribution add-on.
Takeaway: The further a backtest moves from personal research toward a product, the more the licence decides the data source.
Release Timing And Timestamp Precision
Tick data is only as useful for event studies as the event timestamp you join it to. A calendar that records "13:30" is close enough for a daily chart, but it does not tell you whether the release landed at 12:30:00 UTC or a few seconds later, and in the first seconds after Non-Farm Payrolls or US CPI that difference is the trade.
FXMacroData stores a second-level announcement_datetime on every release row. Releases are typically available within seconds of official publication, and the measured record is public at /release-speed, showing the share of releases available within one second by source and listing every release that took longer. Dukascopy does not publish a comparable figure for its calendar, and its historical price export is a different product with no release timing to measure.
US payrolls, 2 October 2026: one release, two data layers
Scheduled
The release calendar lists the September payrolls report for 12:30 UTC.
Published
FXMacroData records announcement_datetime 1790944200, which is 2026-10-02 12:30:00 UTC.
Priced
Dukascopy ticks for EUR/USD from 12:25 to 12:45 UTC show the market's reaction.
Measured
The headline change of +29,000 jobs becomes the surprise input for the reaction study.
Takeaway: The release second is the anchor. Price data tells you what happened around it; the macro row tells you what it was.
Joining Tick Data To Release Timestamps
The macro side of the join is a single API call. FXMacroData sends the key in the X-API-Key header:
curl -H "X-API-Key: YOUR_API_KEY" "https://api.fxmacrodata.com/v1/announcements/usd/non_farm_payrolls"
Example response (abridged):
{
"currency": "USD",
"indicator": "non_farm_payrolls",
"source": "BLS",
"data": [
{"date": "2026-09-30", "val": 159044000.0, "change": 29000.0, "announcement_datetime": 1790944200},
{"date": "2026-08-31", "val": 159015000.0, "change": 162000.0, "announcement_datetime": 1788525000},
{"date": "2026-07-31", "val": 158882000.0, "change": -23000.0, "announcement_datetime": 1786105800}
]
}
On the price side, load your tick CSV with a UTC timestamp column, convert the release epoch seconds to UTC datetimes, and align them. In pandas, merge_asof on sorted timestamps is the usual tool: take the last tick at or before each release second as the pre-release price, then the tick at +1 second, +60 seconds, and +15 minutes as reaction points. Because both sides are in UTC, there is no daylight-saving guesswork, and because the macro timestamp is to the second, the window starts where the market actually started reacting rather than at a rounded calendar minute.
Fields from FXMacroData
announcement_datetime: the join key, epoch seconds UTC.valandchange: the release and its headline move.source: the publishing agency, for audit.
Fields from the tick file
- Timestamp in UTC.
- Bid and ask, for mid and spread.
- Volume, if exported.
Outputs
- Return at +1s, +60s, +15m per release.
- Spread widening around the print.
- Reaction versus surprise size.
Takeaway: One timestamp column from each source is all the join needs, as long as both are true UTC and the macro side is precise to the second.
Coverage And History
Dukascopy's price coverage is broad: forex majors and crosses, plus commodities and indices, with history that goes back many years on the majors. Exact start dates vary by instrument and timeframe, so check the export tool for the pair you need. Remember that these are Dukascopy's own quotes, not a consolidated market tape, which is normal for retail FX data but worth knowing when you compare results across brokers.
FXMacroData covers 22 currencies in its production API: USD, EUR, GBP, JPY, AUD, CAD, CHF, NZD, BRL, CNH, CNY, DKK, HUF, ILS, KRW, MYR, NGN, NOK, PEN, SEK, THB, and TWD. It holds 700+ indicator series from statistics agencies and central banks, including policy rates such as the Fed funds target and the ECB deposit rate, CPI and core CPI, GDP, labour data, PMIs, retail sales, and trade. Alongside the release data it carries FX spot rates, CFTC COT positioning, government bond yields, commodities, and central-bank communication from the Federal Reserve, ECB, Bank of Japan, and Bank of England. FXMacroData is not a tick-data vendor, and it does not try to replace Dukascopy's price history.
Where Dukascopy Is Genuinely Stronger
Dukascopy's historical data has earned its place in backtesting workflows. It is the better choice when you need:
- free tick-by-tick FX price history for personal research,
- bid and ask prices for spread and execution-cost modelling,
- a wide instrument list beyond FX, including commodities and indices,
- custom bar types such as Renko inside JForex,
- long price histories on major pairs such as USD/JPY, GBP/USD, and AUD/USD.
If a strategy is purely price-based and the work is personal, Dukascopy alone may be enough.
Where FXMacroData Is Stronger
FXMacroData is stronger wherever the backtest depends on what was released and when. That covers event studies, macro-conditioned filters ("only trade when the policy-rate differential is widening"), and live systems that must react to releases the same way the backtest did.
FXMacroData pros
- Second-level release timestamps and a public speed record.
- 22 currencies of official-source macro in one schema.
- REST, OpenAPI, SSE, GraphQL, SDKs, and MCP.
- Published plans and a self-serve redistribution add-on.
FXMacroData tradeoffs
- Not a tick-data source; pair it with a price feed.
- Free tier is USD-only with a 15-minute delay.
- Non-USD currencies need a paid plan.
Dukascopy pros
- Free, granular price history from tick to monthly.
- Forex, commodities, and indices in one export tool.
- JForex Historical Data Manager for platform users.
Dukascopy tradeoffs
- Website terms: personal, non-commercial use only.
- No documented public API for the historical feed.
- No downloadable macro release history from the calendar.
Review takeaway: Dukascopy is a strong free price source for personal backtests. FXMacroData is the stronger choice for the macro layer and for any workflow that needs a clear commercial licence.
Decision Matrix
| Use case | Better fit | Why |
|---|---|---|
| Personal price-only backtest | Dukascopy | Free tick and bar history; no macro input needed. |
| Event study around NFP, CPI, or rate decisions | Both | Dukascopy ticks for price; FXMacroData release rows and timestamps for the event. |
| Macro-filtered strategy across many currencies | FXMacroData | One schema for 22 currencies of official releases and policy rates. |
| Live system reacting to releases | FXMacroData | SSE streaming and releases typically available within seconds of publication. |
| Commercial product or redistributed dataset | FXMacroData | Self-serve redistribution add-on; Dukascopy's terms bar redistribution without consent. |
| AI agent answering macro questions | FXMacroData | Official MCP server and OpenAPI; no AI access path listed for Dukascopy's feed. |
Recommendation
Keep using Dukascopy if you want free FX price history for your own research, especially tick-level data with bid and ask. It is a genuinely useful resource, and nothing in FXMacroData replaces it. Read the Terms of Use, and if your work is for a firm or a product, ask Dukascopy what it permits before you build on it, whether you use the official export or a third-party downloader.
Add FXMacroData when the backtest needs to know about the economy: when payrolls printed, what CPI was, where the policy rate stood, and exactly which second each release hit the wire. Start with the free USD tier to test the join on US releases, then move to Individual for the other 21 currencies. For a wider survey of macro feeds for systematic strategies, see the best economic indicator feeds for algo trading. When you are ready, compare plans, read the API reference, check the release-speed record, or start a trial.
Bottom line: Dukascopy is a free, granular FX price source for personal backtests. FXMacroData is the macro release layer with second-level timestamps and a published commercial licence. For event-driven FX research, use Dukascopy for the ticks and FXMacroData for the releases, and join them on UTC.
Sources Checked
The claims about Dukascopy on this page come from its public pages, checked in October 2026. Where Dukascopy does not publish a figure, such as rate limits or a calendar latency, this page says so instead of estimating.
Dukascopy historical data
Export tool, instruments, CSV format, tick-to-monthly timeframes, JForex Historical Data Manager.
View sourceDukascopy Terms of Use
Personal, non-commercial use; redistribution and database restrictions.
View sourceDukascopy economic calendar
Event, currency, scheduled time, impact, and previous, forecast, and actual fields.
View sourcedukascopy-node (third party)
Open-source downloader; README disclaims affiliation with Dukascopy Bank SA.
View sourceFXMacroData pricing and docs
Plans, request allowances, redistribution add-on, API reference.
View pricingTakeaway: Dukascopy's data is free and its terms are public; the gap is a published commercial licence and any macro release history, both of which FXMacroData documents.