Options Data for US Stocks: End-of-Day and Historical Learn more

Economic Events Data API

In plans: All-In-One and Fundamentals Data Feed plans
Each request consumes 1 API call. ?
Resources: Coding Libraries

Sign up & Get Data

The Economic Events Data API provides past and future events like Retail Sales, Bond Auctions, PMI Releases, and many other economic events from countries around the world. The data is available from 2020.

API Endpoint

To get economic events data, use the following URL:

https://eodhd.com/api/economic-events?api_token=demo&fmt=json
(Sign up for free to get an API token)
curl --location "https://eodhd.com/api/economic-events?api_token=demo&fmt=json"
(Sign up for free to get an API token)
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/economic-events?api_token=demo&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
(Sign up for free to get an API token)
import requests

url = f'https://eodhd.com/api/economic-events?api_token=demo&fmt=json'
data = requests.get(url).json()

print(data)
(Sign up for free to get an API token)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/economic-events?api_token=demo&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
(Sign up for free to get an API token)
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Request Parameters

ParameterTypeRequiredDescription
api_tokenStringYesYour API key.
fromStringNoStart date in YYYY-MM-DD format.
toStringNoEnd date in YYYY-MM-DD format.
countryStringNoCountry code in ISO 3166 format (2 characters, e.g. US, GB, JP).
comparisonStringNoComparison type: mom (month-over-month), qoq (quarter-over-quarter), yoy (year-over-year).
typeStringNoEvent type filter (e.g. &type=House%20Price%20Index).
offsetIntegerNoPagination offset. Values: 0–1000. Default: 0.
limitIntegerNoNumber of results. Values: 0–1000. Default: 50.

Response Fields

The API returns a JSON array of economic event objects. Each object contains the following fields:

FieldTypeDescription
typeStringType of economic event (e.g. “GDP Growth Rate”, “Nonfarm Payrolls”).
comparisonString or nullComparison type: “mom”, “qoq”, “yoy”, or null if not applicable.
periodString or nullPeriod associated with the event (e.g. “Q4”, “Jan”, “May”), or null if not applicable.
countryStringCountry code in ISO 3166 format (e.g. “US”, “JP”).
dateStringDate and time of the event in YYYY-MM-DD HH:MM:SS format.
actualNumber or nullActual reported value.
previousNumber or nullPrevious value for the same event.
estimateNumber or nullEstimated (forecast) value.
changeNumber or nullChange from previous value.
change_percentageNumber or nullPercentage change from previous value.

Response Example

[
  {
    "type": "Capital Expenditure",
    "comparison": "yoy",
    "period": "Q4",
    "country": "JP",
    "date": "2025-03-03 23:50:00",
    "actual": -0.2,
    "previous": 8.1,
    "estimate": 4.9,
    "change": -8.3,
    "change_percentage": -102.469
  },
  {
    "type": "Jobs/applications ratio",
    "comparison": null,
    "period": "Jan",
    "country": "JP",
    "date": "2025-03-03 23:30:00",
    "actual": 1.26,
    "previous": 1.25,
    "estimate": 1.25,
    "change": 0.01,
    "change_percentage": 0.8
  }
]

Request Examples

Get all economic events for a specific date range:

https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&fmt=json
(Sign up for free to get an API token)
curl --location "https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&fmt=json"
(Sign up for free to get an API token)
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
(Sign up for free to get an API token)
import requests

url = f'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&fmt=json'
data = requests.get(url).json()

print(data)
(Sign up for free to get an API token)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
(Sign up for free to get an API token)
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Filter by country (e.g. United States):

https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&country=US&fmt=json
(Sign up for free to get an API token)
curl --location "https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&country=US&fmt=json"
(Sign up for free to get an API token)
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&country=US&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
(Sign up for free to get an API token)
import requests

url = f'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&country=US&fmt=json'
data = requests.get(url).json()

print(data)
(Sign up for free to get an API token)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&country=US&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
(Sign up for free to get an API token)
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Filter by comparison type (year-over-year only):

https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&comparison=yoy&fmt=json
(Sign up for free to get an API token)
curl --location "https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&comparison=yoy&fmt=json"
(Sign up for free to get an API token)
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&comparison=yoy&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
(Sign up for free to get an API token)
import requests

url = f'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&comparison=yoy&fmt=json'
data = requests.get(url).json()

print(data)
(Sign up for free to get an API token)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-03-01&to=2025-03-07&comparison=yoy&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
(Sign up for free to get an API token)
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Filter by event type:

https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-03-31&type=GDP%20Growth%20Rate&fmt=json
(Sign up for free to get an API token)
curl --location "https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-03-31&type=GDP%20Growth%20Rate&fmt=json"
(Sign up for free to get an API token)
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-03-31&type=GDP%20Growth%20Rate&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
(Sign up for free to get an API token)
import requests

url = f'https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-03-31&type=GDP%20Growth%20Rate&fmt=json'
data = requests.get(url).json()

print(data)
(Sign up for free to get an API token)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-03-31&type=GDP%20Growth%20Rate&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
(Sign up for free to get an API token)
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Combine multiple filters with pagination:

https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-06-30&country=US&comparison=mom&limit=10&offset=0&fmt=json
(Sign up for free to get an API token)
curl --location "https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-06-30&country=US&comparison=mom&limit=10&offset=0&fmt=json"
(Sign up for free to get an API token)
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-06-30&country=US&comparison=mom&limit=10&offset=0&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
(Sign up for free to get an API token)
import requests

url = f'https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-06-30&country=US&comparison=mom&limit=10&offset=0&fmt=json'
data = requests.get(url).json()

print(data)
(Sign up for free to get an API token)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/economic-events?api_token=demo&from=2025-01-01&to=2025-06-30&country=US&comparison=mom&limit=10&offset=0&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
(Sign up for free to get an API token)
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

Sign up & Get Data

Chat