This comparison is for Python researchers, FX backtesters, and quant developers who have used Stooq's free historical CSV files, often through pandas-datareader, and want to know where FXMacroData fits. Both products give you history for free or close to it, but they answer different questions. Stooq answers "what was the price on this day?" for FX pairs, indices, stocks, bonds, and commodities. FXMacroData answers "what did the official statistics agency or central bank release, and at exactly what second?" across 22 currencies.
The core finding: Stooq is a useful free price archive for personal research, but it changed in 2026. Its CSV download now asks for an API key, pandas-datareader removed its Stooq reader in v0.11.0, and Stooq's bulk-data page says the files are for personal use only. Its macro series are stored like price bars against a reference-period date, not the date the number was published. FXMacroData publishes self-serve plans with a free USD tier and a $50/month Individual plan, stamps every release with a second-level announcement_datetime, and offers a self-serve licence for commercial redistribution. If your model trades EUR/USD around US CPI, you can use Stooq for the daily price bars and FXMacroData for the release timing they need to line up against.
Decision snapshot
Use Stooq for
Free daily, weekly, and monthly OHLC history for FX, indices, stocks, and commodities, plus bulk daily, hourly, and 5-minute files, for personal research.
Use FXMacroData for
Official macro releases with second-level announcement timestamps, a release calendar, and a documented API for backtests, alerts, dashboards, and AI agents.
Fast verdict
Stooq is a price archive and FXMacroData is a release-data layer. Event-driven FX research usually needs both, joined on the publication time.
Takeaway: Choose by the question. Stooq tells you what the price was on a given day. FXMacroData tells you what was released and when the market could first see it.
Pricing And Licence
Stooq's historical data pages and bulk database are free to use on the website. Its terms of service mention registered accounts with "additional paid services", but no price list for data access appeared on its public pages. Because there are no published paid plans to put side by side, this article has no price chart. The cost question is about the licence instead.
The licence is narrow. Stooq's terms of service say redistribution of data found on the website is not allowed without Stooq's consent, and the bulk historical data page states that the data is intended solely for personal use and that any commercial use is prohibited. Licensed third-party content carries extra conditions: S&P Dow Jones index data is limited to personal, non-commercial use, and onward distribution of London Metal Exchange data is not permitted. For a student or a solo researcher this is usually fine. A fund, a signal vendor, or a product team needs written permission first.
FXMacroData publishes its plans in full. The Always Free tier covers USD data with no key, 100 requests/day, and USD announcements delayed 15 minutes. Individual is $50/month or $500/year with a 14-day trial and 1,000,000 requests/month. Business is $250/month or $2,500/year for companies and teams of up to 10 people, and Enterprise is 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).
Stooq historical data
Free*
Website, CSV links, and bulk files. Personal use only; redistribution needs Stooq's consent. API key now required for CSV downloads.
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. Commercial redistribution available as a self-serve add-on.
Takeaway: Stooq costs nothing, but you may only use the data for yourself. FXMacroData has a free USD tier and a paid plan, and it tells you up front what you are allowed to do with the data, including commercial use.
Side-By-Side Comparison
| Attribute | FXMacroData | Stooq |
|---|---|---|
| Core job | FX macro release data with announcement timestamps, release calendar, pair dashboards, and API/MCP access. | Financial portal with free historical OHLC prices for FX, indices, stocks, bonds, and commodities, plus some macro series. |
| Entry pricing | Always Free USD tier; Individual $50/month or $500/year; Business $250/month. | Free*; no paid data plan price published. |
| Free tier | USD data, no key, 100 requests/day, USD announcements delayed 15 minutes; 14-day trial on Individual. | Whole site is free; CSV downloads need an API key requested through the website. |
| Coverage | 22 currencies, 700+ official indicator series, plus FX spot, COT, bond yields, commodities, and central-bank press releases. | Broad market price coverage across world, US, UK, Japan, Hong Kong, Poland, and Hungary folders, plus a compact macroeconomy folder. |
| Release timing | Second-level announcement_datetime; typically available within seconds of official publication, measured publicly. |
Macro rows are dated to the reference period (for example 31 Aug 2026 for August CPI); no publication timestamp or latency figure published. |
| API format | REST JSON with OpenAPI, X-API-Key header, SSE streaming, GraphQL, Python/JS SDKs. |
CSV download URLs and bulk ASCII/Metastock files; no published API documentation. |
| Rate limits | 1,000,000 requests/month on Individual and Business; bursts of 300/min, 5,000/hour, 20 concurrent. | Daily download quota reported by users; the threshold is not publicly listed. |
| History | Long official histories; US CPI back to 1914 with release timestamps per row. | Deep price history; more than 14,000 daily rows for EUR/USD on its historical data page. |
| AI / MCP | Official MCP server for Claude, ChatGPT, Cursor, and other clients. | None listed. |
| Licence for programmatic/commercial use | Paid plans cover programmatic use; self-serve Commercial Redistribution add-on. | Bulk data for personal use only; redistribution needs Stooq's consent*. |
| Best fit | FX traders, quants, event-study builders, automation and AI-agent workflows. | Students and personal researchers who want free end-of-day price history across many markets. |
* Competitor pricing and terms retrieved from Stooq's public historical data pages, bulk data page, and terms of service in October 2026.
Stooq Access In 2026: API Key And pandas-datareader
For years, Stooq was popular in Python tutorials because a plain URL returned a CSV of daily bars with no sign-up, and pandas-datareader wrapped it as a one-line data source. Both parts of that workflow changed in 2026.
First, Stooq began requiring an API key for CSV downloads. A pandas-datareader issue opened in April 2026 reports that requests from March 2026 onward return an HTML page asking for a key instead of CSV rows, which breaks parsing, and it points to a key-request page on Stooq's site. In October 2026, a CSV request without a key returned "Access denied". Second, pandas-datareader v0.11.0 (June 2026) removed the Stooq reader along with other securities readers it describes as relying on defunct or broken upstream APIs. Users have also reported a daily download quota and temporary blocks after exceeding it, and Stooq does not publish the limit.
How the Stooq-in-Python workflow changed
Before 2026
Keyless CSV URL; DataReader(ticker, "stooq") worked out of the box.
March 2026
CSV downloads return an HTML page asking for an API key; parsers fail.
June 2026
pandas-datareader v0.11.0 removes the Stooq reader.
Now
Request a key on the site, call the CSV URL yourself, and stay within an unpublished daily quota.
Takeaway: Stooq still works for downloading by hand. A scripted pipeline now needs a key, its own download code, and some slack for a quota that is not published.
None of this makes Stooq a bad source. For one-off downloads in a browser it works as before. For a scheduled job that a business depends on, a documented API with published limits is the safer base. FXMacroData documents its REST endpoints in the API reference, publishes its request allowances, and supports Python and JavaScript SDKs, so there is no unofficial wrapper to break.
Price History Versus Release Data
Stooq does carry some macroeconomic series. Its bulk database has a macroeconomy folder, and indicators such as U.S. CPI year-on-year are listed under symbols like CPIYUS.M. The values match the official print: Stooq shows 3.4 for August 2026, the same figure FXMacroData stores from the Bureau of Labor Statistics. The difference is how each row is dated.
Stooq stores each macro observation as an OHLC bar dated to the reference period. August 2026 CPI appears on 31 Aug 2026 with open, high, low, and close all 3.4. The BLS published that number on 11 September 2026 at 12:30 UTC. If a backtest joins Stooq's macro rows to price data on the row date, the model sees CPI about eleven days before anyone could trade on it. That is look-ahead bias. FXMacroData keeps both dates: date for the reference period and announcement_datetime for the second the release came out.
Days between a reference-period date and official publication: last 12 US CPI prints
Each bar is the gap between the date on Stooq's CPIYUS.M row and the BLS publication time stored in FXMacroData's announcement_datetime.
Takeaway: Over the last year, US CPI came out 10 to 24 days after the date its row carries. A backtest that uses the row date assumes it knew CPI one and a half to three weeks early.
The same applies to any release-driven idea: Non-Farm Payrolls, the Fed policy rate, US unemployment, or the ECB policy rate. You need the publication time, not just the period, to know when the information existed.
Release Timing And Timestamp Precision
Daily price bars from Stooq cannot show what happened in the minutes after a release. Even with Stooq's 5-minute bulk files, you still need to know which bar the release landed in. FXMacroData stores a second-level announcement_datetime on every release row and aims to make each release available within one second of official publication. Releases are typically available within seconds, and the measured record is public at /release-speed. It shows the share of releases available within one second by source and lists every release that took longer. Stooq does not publish a release timestamp or a latency figure for its macro series.
August 2026 US CPI: one number, three dates
Reference period
31 Aug 2026. This is the date on Stooq's row and on FXMacroData's date field.
Scheduled
The release calendar lists 11 Sep 2026, 08:30 New York time.
Published
announcement_datetime 1789129800, which is 2026-09-11 12:30:00 UTC. 3.4% y/y.
Priced
The EUR/USD bar that contains 12:30 UTC on 11 September is where the reaction starts.
Takeaway: The reference date tells you what period the number covers. The publication time tells you when you could trade on it. A backtest needs the second date.
API Example
The FXMacroData side of the join is one call, with the key sent in the X-API-Key header:
curl -H "X-API-Key: YOUR_API_KEY" "https://api.fxmacrodata.com/v1/announcements/usd/inflation"
Example response (abridged):
{
"currency": "USD",
"indicator": "inflation",
"source": "BLS",
"data": [
{"date": "2026-08-31", "val": 3.4, "previous_value": 3.4, "val_mom": 0.4, "announcement_datetime": 1789129800},
{"date": "2026-07-31", "val": 3.4, "previous_value": 3.5, "val_mom": 0.1, "announcement_datetime": 1786537800},
{"date": "2026-06-30", "val": 3.5, "previous_value": 4.2, "val_mom": -0.4, "announcement_datetime": 1784032200}
]
}
From FXMacroData
announcement_datetime: the join key, epoch seconds UTC.date: the reference period, for labelling.valandprevious_value: the print and the one before it.
From a Stooq price file
- Date (and time, for intraday bulk files).
- Open, high, low, close.
- Volume where the instrument has it.
Join rule
- Convert both sides to UTC.
- Use
merge_asofon the release time, never on the reference date. - Measure the return from the bar before to the bar after.
Takeaway: Price bars from any source can be joined to FXMacroData release times. The point is to join on publication time, which Stooq's macro rows do not include.
Coverage And History
Stooq covers more markets. Its bulk database is split into world, US, UK, Japan, Hong Kong, Poland, and Hungary folders, with daily files for all of them and hourly and 5-minute files for most. Its historical data pages offer daily, weekly, monthly, quarterly, and yearly intervals, with options to skip splits and dividends. For equities and indices, especially Polish and Central European markets, it covers more than most free sources.
FXMacroData is narrower and goes deeper on FX macro. It covers 22 currencies in the 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. That includes more than 700 indicator series from official statistics agencies and central banks, with source metadata on each series. It also has FX spot rates, CFTC COT positioning for the major currency futures, government bond yields and curves, commodities, central-bank press releases from the Federal Reserve, ECB, Bank of Japan, and Bank of England, FX session views, and pair dashboards such as USD/JPY, GBP/USD, and AUD/USD.
Where Stooq Is Genuinely Stronger
Stooq is the better choice for some jobs:
- Free, broad price history. Decades of daily bars for FX pairs, global indices, stocks, bonds, and commodities at no cost.
- Bulk intraday files. Daily, hourly, and 5-minute ASCII files by market, refreshed daily, which suits offline research.
- Equities and regional markets. Polish, Hungarian, and wider European stock coverage that FXMacroData does not try to match.
- Hand downloads. For a quick chart or a one-off spreadsheet, a browser download is hard to beat.
If you need free end-of-day prices for your own research, Stooq does that job and FXMacroData does not replace it.
Where FXMacroData Is Stronger
FXMacroData is stronger when the work depends on knowing when macro information became public, or when the data feeds a product, a team, or an automated system.
FXMacroData pros
- Second-level release timestamps and a public release-speed record.
- Documented REST/OpenAPI, SDKs, SSE, GraphQL, and MCP.
- Published plans, allowances, and a commercial redistribution licence.
FXMacroData tradeoffs
- Not an equity or index price archive.
- Non-USD data requires a paid plan after the trial.
- Focused on 22 currencies rather than every market.
Stooq pros
- Free price history across many asset classes.
- Bulk daily, hourly, and 5-minute files.
- Strong regional equity coverage.
Stooq tradeoffs
- Personal use only; redistribution needs consent.
- API key now required; pandas-datareader reader removed; quota not published.
- Macro rows dated to the reference period, with no publication time.
Takeaway: Stooq is a solid free price archive for personal research. FXMacroData is the better choice when you need macro releases with publication times, a stable API, and a licence that covers business use.
Decision Matrix
| User type | Better fit | Why |
|---|---|---|
| Student or hobbyist charting prices | Stooq | Free, broad, and fine under a personal-use licence. |
| Equity researcher on regional markets | Stooq | Stock and index coverage outside FXMacroData's scope. |
| FX event-study or macro backtest builder | FXMacroData (plus a price source) | Publication timestamps avoid look-ahead bias; join to any price bars. |
| Scheduled Python pipeline | FXMacroData | Documented API, SDKs, and published limits instead of a removed wrapper and an unpublished quota. |
| Product team, fund, or signal vendor | FXMacroData | Business plan and self-serve redistribution licence; Stooq prohibits commercial use of its bulk data. |
| AI assistant or agent builder | FXMacroData | Official MCP server and OpenAPI; no AI integration listed for Stooq. |
Recommendation
Keep using Stooq if you want free end-of-day prices across many markets for your own research. It is still a useful archive, and for hand downloads not much has changed. If you script against it, plan for the API key, write your own download code now that the pandas-datareader reader is gone, and leave room for the daily quota. Read the terms before using the data for anything beyond personal work.
Add FXMacroData when the research depends on the economy and on timing: when CPI printed, where the policy rate stood, what payrolls showed, and the exact second each release became public. Start with the free USD tier to test the join on US releases, then move to Individual for the other 21 currencies. If you are also comparing free price sources, see FXMacroData vs yfinance and FXMacroData vs Dukascopy historical data. When you are ready, compare plans, read the API reference, check the release-speed record, connect an assistant through AI trading workflows, or start a trial.
Bottom line: Stooq gives you free price history for personal research. FXMacroData gives you official macro releases with second-level publication timestamps, a documented API, and a licence that covers commercial use. For event-driven FX work, take prices from wherever you like and take release timing from FXMacroData, then join on UTC.
Sources Checked
The claims about Stooq on this page come from its public pages and from public pandas-datareader records, checked in October 2026. Where Stooq does not publish a figure, such as its download quota, this page says so rather than guessing.
Stooq terms of service
Redistribution needs consent; S&P and LME licensed-data conditions.
View sourceStooq free historical data
Bulk daily, hourly, and 5-minute files by market; personal-use-only notice.
View sourceStooq EUR/USD and US CPI history
Historical data pages, intervals, CSV link, and CPIYUS.M row dating.
View sourceFXMacroData pricing and docs
Plans, request allowances, redistribution add-on, API reference.
View pricingTakeaway: Stooq's data is free and its terms are public. What it does not offer is a commercial licence, publication timestamps, or a documented API, and FXMacroData publishes all three.