curl --request POST \
--url https://api.bigdata.com/v1/economic-calendar/query \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"categories": [
"Inflation",
"Labor Market"
],
"countries": [
"US",
"GB",
"EMU"
],
"end_date": "2026-01-31",
"impacts": [
"HIGH",
"MEDIUM"
],
"start_date": "2026-01-01"
}
'import requests
url = "https://api.bigdata.com/v1/economic-calendar/query"
payload = {
"categories": ["Inflation", "Labor Market"],
"countries": ["US", "GB", "EMU"],
"end_date": "2026-01-31",
"impacts": ["HIGH", "MEDIUM"],
"start_date": "2026-01-01"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
categories: ['Inflation', 'Labor Market'],
countries: ['US', 'GB', 'EMU'],
end_date: '2026-01-31',
impacts: ['HIGH', 'MEDIUM'],
start_date: '2026-01-01'
})
};
fetch('https://api.bigdata.com/v1/economic-calendar/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bigdata.com/v1/economic-calendar/query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'categories' => [
'Inflation',
'Labor Market'
],
'countries' => [
'US',
'GB',
'EMU'
],
'end_date' => '2026-01-31',
'impacts' => [
'HIGH',
'MEDIUM'
],
'start_date' => '2026-01-01'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bigdata.com/v1/economic-calendar/query"
payload := strings.NewReader("{\n \"categories\": [\n \"Inflation\",\n \"Labor Market\"\n ],\n \"countries\": [\n \"US\",\n \"GB\",\n \"EMU\"\n ],\n \"end_date\": \"2026-01-31\",\n \"impacts\": [\n \"HIGH\",\n \"MEDIUM\"\n ],\n \"start_date\": \"2026-01-01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bigdata.com/v1/economic-calendar/query")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"categories\": [\n \"Inflation\",\n \"Labor Market\"\n ],\n \"countries\": [\n \"US\",\n \"GB\",\n \"EMU\"\n ],\n \"end_date\": \"2026-01-31\",\n \"impacts\": [\n \"HIGH\",\n \"MEDIUM\"\n ],\n \"start_date\": \"2026-01-01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bigdata.com/v1/economic-calendar/query")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"categories\": [\n \"Inflation\",\n \"Labor Market\"\n ],\n \"countries\": [\n \"US\",\n \"GB\",\n \"EMU\"\n ],\n \"end_date\": \"2026-01-31\",\n \"impacts\": [\n \"HIGH\",\n \"MEDIUM\"\n ],\n \"start_date\": \"2026-01-01\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"actual": 250000,
"actual_is_preliminary": false,
"category": "Labor Market",
"communication_types": [],
"consensus": 200000,
"country": "US",
"event_datetime": "2026-02-10T13:30:00Z",
"impact": "HIGH",
"is_all_day": false,
"is_better_than_expected": true,
"is_tentative": false,
"name": "Nonfarm Payrolls",
"period_date": "2026-01-01",
"period_type": "MONTH",
"previous": 180000,
"previous_is_preliminary": false,
"ratio_deviation": 0.25,
"surprise": 25
}
]
}{
"message": "Bad Request Error",
"statusCode": 400
}{
"message": "Too many requests. Please try again later.",
"statusCode": 429
}{
"message": "Internal Server Error",
"statusCode": 500
}Economic Calendar
Returns the macroeconomic releases scheduled in a window: inflation, growth, employment, central bank decisions and the rest of the economic calendar, for the countries requested. Each release carries the figure published, the market consensus and the prior period, so a caller can see both what was expected and what landed. Figures are returned in full units. There is no pagination, and a response is capped at 1000 releases, so narrow the window or the filters to stay under it.
curl --request POST \
--url https://api.bigdata.com/v1/economic-calendar/query \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"categories": [
"Inflation",
"Labor Market"
],
"countries": [
"US",
"GB",
"EMU"
],
"end_date": "2026-01-31",
"impacts": [
"HIGH",
"MEDIUM"
],
"start_date": "2026-01-01"
}
'import requests
url = "https://api.bigdata.com/v1/economic-calendar/query"
payload = {
"categories": ["Inflation", "Labor Market"],
"countries": ["US", "GB", "EMU"],
"end_date": "2026-01-31",
"impacts": ["HIGH", "MEDIUM"],
"start_date": "2026-01-01"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
categories: ['Inflation', 'Labor Market'],
countries: ['US', 'GB', 'EMU'],
end_date: '2026-01-31',
impacts: ['HIGH', 'MEDIUM'],
start_date: '2026-01-01'
})
};
fetch('https://api.bigdata.com/v1/economic-calendar/query', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bigdata.com/v1/economic-calendar/query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'categories' => [
'Inflation',
'Labor Market'
],
'countries' => [
'US',
'GB',
'EMU'
],
'end_date' => '2026-01-31',
'impacts' => [
'HIGH',
'MEDIUM'
],
'start_date' => '2026-01-01'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.bigdata.com/v1/economic-calendar/query"
payload := strings.NewReader("{\n \"categories\": [\n \"Inflation\",\n \"Labor Market\"\n ],\n \"countries\": [\n \"US\",\n \"GB\",\n \"EMU\"\n ],\n \"end_date\": \"2026-01-31\",\n \"impacts\": [\n \"HIGH\",\n \"MEDIUM\"\n ],\n \"start_date\": \"2026-01-01\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.bigdata.com/v1/economic-calendar/query")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"categories\": [\n \"Inflation\",\n \"Labor Market\"\n ],\n \"countries\": [\n \"US\",\n \"GB\",\n \"EMU\"\n ],\n \"end_date\": \"2026-01-31\",\n \"impacts\": [\n \"HIGH\",\n \"MEDIUM\"\n ],\n \"start_date\": \"2026-01-01\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bigdata.com/v1/economic-calendar/query")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"categories\": [\n \"Inflation\",\n \"Labor Market\"\n ],\n \"countries\": [\n \"US\",\n \"GB\",\n \"EMU\"\n ],\n \"end_date\": \"2026-01-31\",\n \"impacts\": [\n \"HIGH\",\n \"MEDIUM\"\n ],\n \"start_date\": \"2026-01-01\"\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"actual": 250000,
"actual_is_preliminary": false,
"category": "Labor Market",
"communication_types": [],
"consensus": 200000,
"country": "US",
"event_datetime": "2026-02-10T13:30:00Z",
"impact": "HIGH",
"is_all_day": false,
"is_better_than_expected": true,
"is_tentative": false,
"name": "Nonfarm Payrolls",
"period_date": "2026-01-01",
"period_type": "MONTH",
"previous": 180000,
"previous_is_preliminary": false,
"ratio_deviation": 0.25,
"surprise": 25
}
]
}{
"message": "Bad Request Error",
"statusCode": 400
}{
"message": "Too many requests. Please try again later.",
"statusCode": 429
}{
"message": "Internal Server Error",
"statusCode": 500
}Authorizations
Body
First day of the window, as YYYY-MM-DD. Inclusive.
"2026-01-01"
Last day of the window, as YYYY-MM-DD. Inclusive.
"2026-01-31"
Countries to return releases for, as ISO 3166-1 alpha-2 codes (case-insensitive). 'UK' is accepted as an alias for 'GB' and returned as 'GB'. The sole non-ISO code is 'EMU' (euro area), which carries ECB decisions and euro-area aggregates. Omit to cover all countries.
AE, AR, AT, AU, BE, BR, CA, CH, CL, CN, CO, CZ, DE, DK, EG, EMU, ES, FI, FR, GB, GR, HK, HU, ID, IE, IL, IN, IS, IT, JP, KR, KW, MX, NL, NO, NZ, PL, PT, QA, RO, RU, SA, SE, SG, SK, TH, TR, UA, UK, US, VN, ZA ["US", "GB", "EMU"]
Expected market impact levels to return. Omit for every level. Case does not matter.
How much movement the provider expects a release to cause.
Requests are normalised onto these by the validator that accepts them.
NONE, LOW, MEDIUM, HIGH ["HIGH", "MEDIUM"]
Categories to filter by. Omit for every category. Case does not matter.
The categories FXStreet groups its indicators into.
Restated here rather than imported, as the countries are: this lambda is a proxy and shares no code with the internal service. The provider's own identifier for each is the internal service's business, not a caller's.
A request is normalised onto these by the validator that accepts it, and the canonical spelling is what is forwarded. This check runs first, so a spelling refused here never reaches the internal endpoint.
Bond Auctions, Capital Flows, Central Banks, Consumption, Economic Activity, Energy, Holidays, Housing Market, Inflation, Interest Rates, Labor Market, Politics ["Inflation", "Labor Market"]
Response
Successful Response
The releases in the requested window, ordered by date then country. There is no pagination: the provider serves no cursor, so there is nothing to resume from. A response is capped at 1000 releases and the earliest are kept, so a window that comes back with exactly 1000 may have more that were not returned. Narrow the date range, the countries or the impact levels to stay under it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?