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,
"surprise_unit": "%"
}
]
}{
"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,
"surprise_unit": "%"
}
]
}{
"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 market movement a release is expected to cause.
The 'impacts' filter takes these names, and each release answers the one it carries. Case does not matter.
NONE, LOW, MEDIUM, HIGH ["HIGH", "MEDIUM"]
Categories to filter by. Valid values: bond-auctions, capital-flows, central-banks, consumption, economic-activity, energy, holidays, housing-market, inflation, interest-rates, labor-market, politics. Omit for every category. A value outside that set is rejected.
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 2000 releases and the earliest are kept, so a window that comes back with exactly 2000 may have more that were not returned. An unfiltered window reaches that inside a couple of months, since every country together runs to tens of releases a day once the low-impact ones are counted. 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?