News Calendar API Documentation
Last Updated: 02/07/2026 16:03 EST
Note: Due to a huge increase in traffic, free API usage has decreased to 1 request per day.
Overview
The Calendar API offers fast and free access to the latest Forex news events from a variety of sources, including MQL5, Forex Factory, and FxStreet. Users can retrieve data through GET requests or by utilizing our libraries.
To authenticate your GET requests, you must include your API key in the request header. Generate and manage your API key via your profile, and monitor your usage here.
Authentication
{
"Content-Type": "application/json",
"Authorization": "Api-Key YOUR_API_KEY"
}
var request = URLRequest(url: URL(string: "https://www.jblanked.com/news/api/YOUR-ENDPOINT")!)
request.addValue("Api-Key YOUR_API_KEY", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
string headers = "Content-Type: application/json" + "\r\n" + "Authorization: Api-Key YOUR_API_KEY";
Rate Limit & Pricing
Rate Limit
One request per second to ensure service stability and fair usage.
Pricing
1 credit per premium use, otherwise free. Credits are purchased via our billing page. Charges only occur if users have credits.
Endpoints
Today MQL5
GET /news/api/mql5/calendar/today/
List of today's events ordered by time from MQL5. Optional params: currency (USD, CAD, EUR, GBP, AUD, CHF, JPY, NZD) and impact (High, Medium, Low, None).
Today Forex Factory
GET /news/api/forex-factory/calendar/today/
List of today's events ordered by time from Forex Factory. Same optional params as above.
Today FxStreet
GET /news/api/fxstreet/calendar/today/
List of today's events ordered by time from FxStreet. Same optional params.
This Week MQL5
GET /news/api/mql5/calendar/week/
List of this week's events ordered by time from MQL5. Optional: currency, impact, offset.
This Week Forex Factory
GET /news/api/forex-factory/calendar/week/
This Week FxStreet
GET /news/api/fxstreet/calendar/week/
Date Range (All Sources)
Filter events by date range using from and to parameters in YYYY-MM-DD format:
GET /news/api/mql5/calendar/range/?from=2025-09-17&to=2025-09-24¤cy=USD&impact=HighGET /news/api/forex-factory/calendar/range/?from=2025-09-17&to=2025-09-24GET /news/api/fxstreet/calendar/range/?from=2025-09-17&to=2025-09-24
Example JSON Response
{
"Name": "Core CPI m/m",
"Currency": "USD",
"Category": "Consumer Inflation Report",
"Impact": "High",
"Date": "2024.02.08 15:30:00",
"Actual": 0.4,
"Forecast": 0.4,
"Previous": 0.2,
"Outcome": "Actual = Forecast > Previous",
"Strength": "Strong Data",
"Quality": "Bad Data"
}
{
"Name": "Core CPI m/m",
"Currency": "USD",
"Category": "Consumer Inflation Report",
"Impact": "High",
"Date": "2024.02.08 15:30:00",
"Actual": 0.4,
"Forecast": 0.4,
"Previous": 0.2,
"Outcome": "Actual = Forecast > Previous",
"Strength": "Strong Data",
"Quality": "Bad Data"
}
{
"Name": "Core CPI m/m",
"Currency": "USD",
"Category": "Consumer Inflation Report",
"Impact": "High",
"Date": "2024.02.08 15:30:00",
"Actual": 0.4,
"Forecast": 0.4,
"Previous": 0.2,
"Outcome": "Actual = Forecast > Previous",
"Strength": "Strong Data",
"Quality": "Bad Data"
}
Usage: GET Requests
import requests
url = "https://www.jblanked.com/news/api/mql5/calendar/today/"
headers = {
"Content-Type": "application/json",
"Authorization": f"Api-Key YOUR_API_KEY",
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
print(data)
print(data[0]["Name"])
else:
print(f"Error: {response.status_code}")
print(response.json())
import Dispatch
import Foundation
if let url = URL(string: "https://www.jblanked.com/news/api/mql5/calendar/today/") {
let apiKey = "YOUR_API_KEY"
var request = URLRequest(url: url)
request.addValue("Api-Key \(apiKey)", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
do {
let (dataReturned, _) = try await URLSession.shared.data(for: request)
let decoder = JSONDecoder()
let newsList = try decoder.decode([HistoryData].self, from: dataReturned)
print(newsList)
} catch {
print("Error has occurred: \(error)")
}
}
struct HistoryData: Decodable, Hashable {
var Date: String
var Actual: Double
var Forecast: Double
var Previous: Double
var Outcome: String
private enum CodingKeys: String, CodingKey {
case Date
case Actual
case Forecast
case Previous
case Outcome
}
init() {
self.Date = ""
self.Actual = 0.0
self.Forecast = 0.0
self.Previous = 0.0
self.Outcome = ""
}
}
#include <jb-news\news.mqh> // get from https://github.com/jblanked/MQL-Library
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
CRequests request;
request.url = "https://www.jblanked.com/news/api/mql5/calendar/today/";
request.key = "YOUR_API_KEY";
if(!request.GET())
{
Print("Failed to get data from the today endpoint");
return INIT_FAILED;
}
// print result
Print(request.result);
// or do something with the json data
string firstEventName = request.loader[0]["Name"].ToStr();
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
Usage: Library
import Dispatch
import Foundation
import JBNews
let yourAPIKey: String = "YOUR-API-KEY"
let newsModel: JBNews = JBNews(yourAPIKey)
Task {
let calendar: [HistoryData] = await newsModel.calendar()
print(calendar)
}
#include <jb-news\news.mqh>
CJBNews jb;
int OnInit(){
jb.api_key = "API_KEY";
jb.offset = 0; // GMT-3 = 0, GMT = 3, EST = 7, PST = 10
jb.chart();
return INIT_SUCCEEDED;
}
from jb_news.news import CJBNews
jb = CJBNews()
api_key = "YOUR_API_KEY_HERE"
jb.offset = 7 # GMT-3 = 0, GMT = 3, EST = 7, PST = 10
if jb.calendar(api_key,today=True):
for event in jb.calendar_info:
name = event.name
currency = event.currency
event_id = event.eventID
category = event.category
impact = event.impact
date = event.date
actual = event.actual
forecast = event.forecast
previous = event.previous
outcome = event.outcome
strength = event.strength
quality = event.quality
# print the calendar info
print(f"Event Name: {name}\nEvent ID: {event_id}\nCurrency: {currency}\nDate: {date}\nActual: {actual}\nForecast: {forecast}\nPrevious: {previous}")