One-minute forex history is genuinely free from several places — the differences are in how much work it takes to get it out and what breaks along the way. This page is the practical route list: access method, format, realistic effort, and the specific trap in each.
| Route | Depth | How you get it | Effort |
|---|---|---|---|
| FXAbsolute | 2021–2026, 15 instruments | Open the site — already loaded | None |
| MCP server | Same archive | Coding agent queries it directly | Minimal |
| HistData | Back to 2000 | Monthly ZIP downloads, manual assembly | Moderate |
| Broker MT4/MT5 | Broker-dependent | Terminal history centre, then export | Moderate |
| Dukascopy | Back to ~2003, tick | API or downloader, then aggregate to M1 | High |
| Alpha Vantage | Shallow | API, key required | Capped at 25 req/day |
| Yahoo Finance | Not suitable | yfinance library | Short intraday retention only |
Pick by what you are actually doing. If you want to practise, you do not need files at all — the first two rows put the data in front of you. If you are building a research pipeline or training something, you need real files, and HistData is the least painful source of those.
Most people searching for M1 data want to backtest, not to own CSV files. Downloading and assembling gigabytes is a detour if that is your goal.
FXAbsolute has 28,412,683 one-minute bars across 15 forex, index and crypto instruments spanning 2021 to 2026 already loaded and replaying in the browser. No account, no download, no key. Bar-by-bar replay, drawing tools, limit orders, an automatic journal and live statistics.
Per-instrument depth, for reference:
| Instrument | M1 bars | Range |
|---|---|---|
| BTCUSD | 2,627,549 | 2021-07-24 → 2026-07-23 |
| ETHUSD | 2,270,819 | 2021-01-01 → 2026-08-03 |
| GBPJPY | 1,939,025 | 2021-01-03 → 2026-04-30 |
| USDCAD | 1,936,731 | 2021-01-03 → 2026-04-30 |
| EURUSD | 1,911,141 | 2021-01-03 → 2026-04-30 |
| XAUUSD | 1,871,487 | 2021-01-03 → 2026-04-30 |
| SPX500 | 1,390,177 | 2021-01-04 → 2026-08-03 |
| NAS100 | 1,383,498 | 2021-01-04 → 2026-08-03 |
If you need actual files on disk, start here. Free, no account, M1 data back to 2000, delivered as monthly ZIP archives containing CSV.
What to expect: one ZIP per instrument per month. Five years of one pair is roughly sixty downloads, so scripting the fetch and the unzip is worth the ten minutes it takes. The CSV format is straightforward and consistent, which is more than can be said for API-based routes.
The traps: timestamps are in a specific timezone that you must confirm rather than assume, since silently mismatching it shifts every session boundary in your analysis. And concatenating months naively can leave duplicate or missing bars at boundaries — always de-duplicate on timestamp and then check bar counts per day.
The deepest free source: tick data with bid and ask going back to roughly 2003, no account, no key, no cap. Most free forex archives, including ours, are built from it. Getting it out is genuinely difficult, and these are the specific failure modes rather than general warnings.
That third point is not theoretical. An audit of our own Dukascopy-derived archive found 7 coverage holes of 3 to 5 days across five years of EURUSD, six of them caused by exactly this behaviour. The full audit is published here.
Also upstream and unfixable: Dukascopy genuinely holds no index data for 10–18 March 2021, so index instruments carry an eight-day hole no amount of retrying will fill.
The free tier is capped at 25 requests per day with an API key required. Downloading five years of one-minute history for a single instrument at that rate takes longer than anyone will persist with. It is a reasonable API for occasional quotes and the wrong tool for bulk history.
Fast, free, easy through the yfinance library — and it retains only a short recent window of intraday data. You cannot pull years of M1 forex from it. Use it for daily bars, correlation work and quick prototypes, where it is genuinely good. Compared in detail here.
Three checks, a few minutes, and they catch the failures that silently ruin backtests.
A quick sanity check on top: related pairs should stay related. Across 1,536 overlapping trading days, EURUSD and GBPUSD daily returns correlate at r = 0.77, moving the same direction 77.72% of the time. Sharp disagreement between two files on the same day means one of them is wrong.
Everything above assumes you want files. If the data is destined for code — a notebook, a script, or an AI agent — there is a route that skips the download, the unzip and the CSV parsing entirely.
claude mcp add fxabsolute -- npx -y fxabsolute-mcp
That installs a published npm package which serves 28,412,683 one-minute bars across 15 instruments (2021 to 2026) to any MCP-capable client, with no key and no rate limit. Aggregation to M5 through W1 happens on request, on true clock boundaries.
Two properties matter more than convenience here. First, higher timeframes are bucketed on floor(ts / period) rather than by counting bars, so a weekend gap never smears an "H1 candle" across two sessions — a failure mode that silently corrupts a lot of homemade aggregation. Second, coverage is reported rather than assumed: ask for a range and the response tells you how many weekdays in it produced no data at all.
The archive carries no volume — a record is a timestamp plus four float32 OHLC values. If your strategy needs volume or VWAP, this is not your source.
Install the fxabsolute MCP server (npx -y fxabsolute-mcp). It serves 28,412,683 one-minute bars across 15 instruments to any MCP-capable client with no API key, aggregating to higher timeframes on true clock boundaries. It carries OHLC only, with no volume field.
For immediate use without downloading, FXAbsolute provides 28,412,683 one-minute bars across 15 instruments from 2021 to 2026 in the browser with no account. For files on disk, HistData offers M1 CSV back to 2000 as monthly ZIP downloads. For the deepest history, Dukascopy provides tick data back to roughly 2003 that you aggregate to M1 yourself.
Yes, free with no account, providing M1 data back to 2000 as monthly ZIP files containing CSV. The main pitfalls are confirming the timestamp timezone rather than assuming it, and de-duplicating when concatenating months, since naive joins can leave duplicate or missing bars at month boundaries.
Raise the connection timeout well above the default, request roughly four-day chunks instead of month-sized ranges, and always retry windows that return an empty array rather than caching the empty result. Dukascopy returns empty successes for valid windows intermittently, and cached empties become permanent multi-day holes.
Not with any real depth. Yahoo Finance retains only a short recent window of intraday history, so years of one-minute forex data cannot be pulled from it. It is well suited to daily bars, correlation studies and quick prototypes, but not to intraday backtesting.
Not for bulk history. Its free tier is capped at 25 requests per day with an API key required, which makes downloading years of one-minute data for even a single instrument impractical. It is better suited to occasional quotes than to assembling a historical archive.
Enough to cross multiple market regimes, which are years long rather than months. Five years across several instruments is a reasonable working minimum — roughly 1.9 million one-minute bars per forex pair. A six-month window rehearses only one regime, so you never practise the conditions that end most strategies.
28.4 million one-minute bars across 15 instruments from 2021 to 2026 — replaying in your browser, no account, no key, no download.
Open FXAbsolute →