ForexFactory APIforexfactory.com ↗
Access ForexFactory economic calendar events, market quotes for major FX pairs, news headlines, and forum posts via 6 structured JSON endpoints.
What is the ForexFactory API?
The ForexFactory API covers 6 endpoints that return economic calendar events, filtered event subsets, historical release data, major-pair market quotes, news headlines, and forum thread posts. The get_calendar endpoint returns all scheduled events for any week back to at least 2006, with fields including impact level, currency, actual, forecast, and previous values. Event IDs from calendar results feed directly into get_event_detail for multi-year historical release series.
curl -X GET 'https://api.parse.bot/scraper/0d3aa2e2-80b6-42dc-986a-d7f0845f4deb/get_calendar?week=jun09.2026' \ -H 'X-API-Key: $PARSE_API_KEY'
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 forexfactory-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.
"""ForexFactory SDK — economic calendar, market data, news, and forum threads."""
from parse_apis.forexfactory_api import ForexFactory, ImpactLevel, EventNotFound
client = ForexFactory()
# Get current week's high-impact USD events using the constructible Week resource.
for event in client.week("current").filtered_events(
currencies="USD", impact_levels=ImpactLevel.HIGH, limit=5
):
print(event.name, event.date, event.time, event.actual, event.forecast)
# Drill into one event's historical releases.
event = client.week("current").events(limit=1).first()
if event:
try:
hist = event.history()
print(hist.event_id, type(hist.history))
except EventNotFound as exc:
print(f"Event gone: {exc.event_id}")
# Real-time market overview — major forex pairs.
for instr in client.markets.overview(limit=3):
print(instr.instrument.name, instr.base_symbol)
# Latest news headlines.
for story in client.newses.latest(limit=3):
print(story.headline, story.impact, story.url)
# Forum thread posts with pagination capped.
for post in client.thread("1362090-gold-with-no-drama").posts(limit=5):
print(post.author, post.date, post.content[:60])
print("exercised: week.events / week.filtered_events / event.history / markets.overview / newses.latest / thread.posts")
Fetch economic calendar events for a specific week or the current week. Returns all scheduled events with date, time, currency, impact level, country, and actual/forecast/previous values. Events are grouped by day and include IDs usable with get_event_detail for historical data.
| Param | Type | Description |
|---|---|---|
| week | string | Week start date in 'monDD.YYYY' format (e.g. 'jun09.2026'). If omitted, returns current week's events. |
{
"type": "object",
"fields": {
"week": "string indicating the requested week identifier or 'current'",
"events": "array of economic calendar event objects with id, date, time, currency, impact, name, actual, forecast, previous, country"
},
"sample": {
"data": {
"week": "current",
"events": [
{
"id": 149579,
"date": "Sun Jun 7",
"name": "OPEC-JMMC Meetings",
"time": "All Day",
"actual": "",
"impact": "medium",
"country": "WW",
"currency": "All",
"forecast": "",
"previous": ""
},
{
"id": 148363,
"date": "Wed Jun 10",
"name": "Core CPI m/m",
"time": "7:30am",
"actual": "0.2%",
"impact": "high",
"country": "US",
"currency": "USD",
"forecast": "0.3%",
"previous": "0.4%"
}
]
},
"status": "success"
}
}About the ForexFactory API
Economic Calendar
The get_calendar endpoint accepts a week parameter in monDD.YYYY format (e.g. jun09.2026) and returns every scheduled economic release for that week, or the current week if omitted. Each event object carries id, date, time, currency, country, impact (high/medium/low/holiday), name, actual, forecast, and previous. The get_calendar_filtered endpoint wraps the same data with currencies and impact_levels filter params, so you can request only high-impact USD and EUR events without post-processing the full response yourself. The count field in the filtered response tells you immediately how many events matched.
Event History
get_event_detail takes a numeric event_id from any calendar result and returns the full historical release series for that indicator. The response contains a history object with meta (including decimals and interval_name fields describing the release cadence) and a data.events array of past releases each with their own actual, forecast, and revision values. This makes it straightforward to build backtesting datasets for specific indicators.
Market Quotes and News
get_market_overview returns a data array covering eight major instruments: EUR/USD, GBP/USD, USD/JPY, USD/CHF, USD/CAD, AUD/USD, NZD/USD, and Gold/USD. Each instrument object includes price metrics across timeframes from M5 through D2, plus quotes from multiple sources with bid/ask spreads — no input parameters required. get_news_latest returns the most-recent ForexFactory news stories ordered newest-first, with headline, url, impact, and preview fields per story.
Forum Threads
get_thread_posts fetches posts from any ForexFactory forum thread identified by a thread_id string combining the numeric ID and URL slug (e.g. 1362090-gold-with-no-drama). The page parameter handles pagination for long threads. Each post object includes post_id, author, date, content, and any embedded images URLs. This is useful for ingesting community analysis from high-activity strategy threads.
The ForexFactory API is a managed, monitored endpoint for forexfactory.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when forexfactory.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 forexfactory.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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Alert systems that notify traders when high-impact USD or EUR events are scheduled, using
get_calendar_filteredwithimpact_levels=high. - Backtesting pipelines that pull historical actual vs. forecast divergence for a specific indicator via
get_event_detail. - Dashboards showing live bid/ask spreads and multi-timeframe price metrics for the eight major FX pairs from
get_market_overview. - News aggregators that surface ForexFactory headlines alongside impact ratings using
get_news_latest. - Research tools that archive forum thread content from active strategy discussions via
get_thread_postswith pagination. - Calendar diffing tools that compare current-week forecasts against previous releases across all currencies and impact levels.
- Economic surprise trackers that pair
get_calendaractual values withget_event_detailhistorical series to compute release deviations.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.
Does ForexFactory have an official developer API?+
What does `get_event_detail` return beyond a single release?+
get_event_detail returns the full historical release series for one economic indicator identified by its numeric event_id. The history.meta object includes decimals (precision for display) and interval_name (e.g. monthly, weekly). The history.data.events array contains every past release on record with actual, forecast, and revision values per entry, making it suitable for building multi-year indicator datasets.How do I narrow calendar results to only the currencies and impact levels I care about?+
get_calendar_filtered accepts a currencies param (comma-separated codes like USD,EUR,GBP) and an impact_levels param (comma-separated values: high, medium, low, holiday). Both are optional and can be combined. The response includes a count field with the total number of matching events alongside the filtered events array.Does the API cover currency pairs beyond the eight in `get_market_overview`?+
get_market_overview covers EUR/USD, GBP/USD, USD/JPY, USD/CHF, USD/CAD, AUD/USD, NZD/USD, and Gold/USD. You can fork this API on Parse and revise it to add an endpoint targeting additional instruments or cross pairs.Can I search the ForexFactory forum for threads by keyword or topic?+
get_thread_posts for fetching posts from a known thread ID and slug, but there is no forum search endpoint. You can fork this API on Parse and revise it to add a thread-search endpoint that returns matching thread IDs.