With our Financial Calendar data feed, we provide information about upcoming earnings, IPOs, and splits. If you are looking for an economic calendar, including an earnings calendar API and an IPOs calendar, this API is for you.

For IPOs, we provide data from January 2015 and up to 2-3 weeks into the future. For splits, we have data from January 2015 to several months into the future, with full historical data available through our Splits and Dividends API. For earnings, including the NASDAQ earnings calendar API, we provide data from the beginning and up to several months into the future, ensuring comprehensive coverage for your financial analysis needs.

Learn more about the standalone package “Financial Events (Calendar) & News Feed“, where you can also access the Financial News Feed.

Sign up & Get Data

Historical & Upcoming Earnings API

Endpoint

https://eodhd.com/api/calendar/earnings

Description

Returns historical and upcoming earnings dates with key fields (company symbol, report date/time, and additional metadata when available). Use either a date window or a symbol list.

Request example

By symbol:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/earnings?symbols=AAPL.US,MSFT.US,AI.PA&from=2018-01-01&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/earnings?symbols=AAPL.US,MSFT.US,AI.PA&from=2018-01-01&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/earnings?symbols=AAPL.US,MSFT.US,AI.PA&from=2018-01-01&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/earnings?symbols=AAPL.US,MSFT.US,AI.PA&from=2018-01-01&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/earnings?symbols=AAPL.US,MSFT.US,AI.PA&from=2018-01-01&api_token={YOUR_API_TOKEN}&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")
}
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)

Note: Without dates, default window – “today +7 days”.

By date window:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/earnings?from=2018-12-02&to=2018-12-06&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/earnings?from=2018-12-02&to=2018-12-06&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/earnings?from=2018-12-02&to=2018-12-06&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/earnings?from=2018-12-02&to=2018-12-06&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/earnings?from=2018-12-02&to=2018-12-06&api_token={YOUR_API_TOKEN}&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")
}
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)

Parameters

ParameterRequiredTypeDescription
api_tokenYesstringYour API key.
fromNodate (YYYY-MM-DD)Start date. Default: today.
toNodate (YYYY-MM-DD)End date. Default: today + 7 days.
symbolsNostringOne or more tickers (comma-separated). If set, from/to are ignored. Example: AAPL.US,MSFT.US,AI.PA.
fmtNostringOutput format: json or csv (default).

Output Format

FieldTypeDescription
codestringTicker in EODHD format.
report_datestring (YYYY-MM-DD)Date when the company reported/announced results.
datestring (YYYY-MM-DD)Fiscal period end date the result refers to.
before_after_marketstring or nullReport timing relative to market hours (e.g., BeforeMarket, AfterMarket), or null if unknown.
currencystring or nullReporting currency for EPS.
actualnumberReported EPS (or metric used by the feed).
estimatenumber or nullConsensus EPS estimate, if available.
differencenumber or nullactual − estimate.
percentnumber or nullSurprise in percent (difference / estimate * 100), when estimate is available.

Output Response Example

{
"type": "Earnings",
"description": "Historical and upcoming Earnings",
"from": "2018-12-02",
"to": "2018-12-06",
"earnings": [
{
"code": "PIGEF.US",
"report_date": "2018-12-02",
"date": "2018-09-30",
"before_after_market": "AfterMarket",
"currency": "USD",
"actual": 34.52,
"estimate": 36.73,
"difference": -2.21,
"percent": -6.0169
},
{
"code": "ANTM.JK",
"report_date": "2018-12-02",
"date": "2018-09-30",
"before_after_market": "AfterMarket",
"currency": "IDR",
"actual": 11.9295,
"estimate": null,
"difference": 0,
"percent": null
},
{
"code": "ITOEF.US",
"report_date": "2018-12-02",
"date": "2018-10-31",
"before_after_market": "AfterMarket",
"currency": "JPY",
"actual": 59.48,
"estimate": null,
"difference": 0,
"percent": null
},
{
"code": "2910.TSE",
"report_date": "2018-12-02",
"date": "2018-10-31",
"before_after_market": "AfterMarket",
"currency": "JPY",
"actual": 15.95,
"estimate": 14.68,
"difference": 1.27,
"percent": 8.6512
},

Endpoint

https://eodhd.com/api/calendar/trends

Description

Returns forward-looking and historical earnings trend points for one or more symbols. Each symbol returns a list of dated items that indicate whether that point is an estimate or an actual. The endpoint is JSON-only.

Request Example

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/trends?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/trends?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/trends?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/trends?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/trends?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&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")
}
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)

Parameters

ParameterRequiredTypeDescription
api_tokenYesstringYour API key.
symbolsYesstringOne or more tickers, comma-separated (example: AAPL.US,MSFT.US,AI.PA).

Output Format

FieldTypeDescription
typestringConstant label of the payload (example: Trends).
descriptionstringHuman-readable description of the dataset.
symbolsstringComma-separated list of requested tickers.
trendsarray of arraysFor each symbol, an array of trend records. The i-th inner array corresponds to the i-th symbol in the symbols list. Each record is a trend item (see fields below).

Trend item fields

FieldTypeDescription
codestringTicker code for this record (EODHD format).
datestring (YYYY-MM-DD)Anchor date of the estimate window (quarter or year end).
periodstringRelative horizon: 0q (current quarter), +1q (next quarter), 0y (current FY), +1y (next FY).
growthnumber (stringified) or nullOverall EPS growth vs prior comparable period.
earningsEstimateAvgnumber (stringified)Consensus EPS.
earningsEstimateLownumber (stringified)Low EPS estimate.
earningsEstimateHighnumber (stringified)High EPS estimate.
earningsEstimateYearAgoEpsnumber (stringified)EPS for the comparable prior period.
earningsEstimateNumberOfAnalystsnumber (stringified)Analyst count for EPS estimate.
earningsEstimateGrowthnumber (stringified)EPS growth vs prior comparable period.
revenueEstimateAvgnumber (stringified)Consensus revenue.
revenueEstimateLownumber (stringified)Low revenue estimate.
revenueEstimateHighnumber (stringified)High revenue estimate.
revenueEstimateYearAgoEpsnumber (stringified) or nullRevenue for the comparable prior period (if available).
revenueEstimateNumberOfAnalystsnumber (stringified)Analyst count for revenue estimate.
revenueEstimateGrowthnumber (stringified) or nullRevenue growth vs prior comparable period.
epsTrendCurrentnumber (stringified)Current EPS consensus for this period.
epsTrend7daysAgonumber (stringified)EPS consensus 7 days ago.
epsTrend30daysAgonumber (stringified)EPS consensus 30 days ago.
epsTrend60daysAgonumber (stringified)EPS consensus 60 days ago.
epsTrend90daysAgonumber (stringified)EPS consensus 90 days ago.
epsRevisionsUpLast7daysnumber (stringified)Upward EPS revisions in last 7 days.
epsRevisionsUpLast30daysnumber (stringified)Upward EPS revisions in last 30 days.
epsRevisionsDownLast30daysnumber (stringified) or nullDownward EPS revisions in last 30 days.

Output Response Example

{
"type": "Trends",
"description": "Historical and upcoming earning trends",
"symbols": "AAPL.US,MSFT.US,AI.PA",
"trends": [
[
{
"code": "AAPL.US",
"date": "2026-09-30",
"period": "+1y",
"growth": "0.0846",
"earningsEstimateAvg": "7.9816",
"earningsEstimateLow": "7.1300",
"earningsEstimateHigh": "9.0000",
"earningsEstimateYearAgoEps": "7.3676",
"earningsEstimateNumberOfAnalysts": "40.0000",
"earningsEstimateGrowth": "0.0833",
"revenueEstimateAvg": "437035017610.00",
"revenueEstimateLow": "408100000000.00",
"revenueEstimateHigh": "477463000000.00",
"revenueEstimateYearAgoEps": null,
"revenueEstimateNumberOfAnalysts": "41.00",
"revenueEstimateGrowth": "0.0527",
"epsTrendCurrent": "7.9816",
"epsTrend7daysAgo": "7.9628",
"epsTrend30daysAgo": "7.9665",
"epsTrend60daysAgo": "7.8069",
"epsTrend90daysAgo": "7.8143",
"epsRevisionsUpLast7days": "1.0000",
"epsRevisionsUpLast30days": "4.0000",
"epsRevisionsDownLast30days": "2.0000"
},
{
"code": "AAPL.US",
"date": "2025-12-31",
"period": "+1q",
"growth": "0.0355",
"earningsEstimateAvg": "2.4851",
"earningsEstimateLow": "2.2900",
"earningsEstimateHigh": "2.6700",
"earningsEstimateYearAgoEps": "2.4000",
"earningsEstimateNumberOfAnalysts": "23.0000",
"earningsEstimateGrowth": "0.0355",
"revenueEstimateAvg": "130076630320.00",
"revenueEstimateLow": "125551070150.00",
"revenueEstimateHigh": "137497000000.00",
"revenueEstimateYearAgoEps": null,
"revenueEstimateNumberOfAnalysts": "19.00",
"revenueEstimateGrowth": "0.0465",
"epsTrendCurrent": "2.4851",
"epsTrend7daysAgo": "2.4712",
"epsTrend30daysAgo": "2.4749",
"epsTrend60daysAgo": "2.4228",
"epsTrend90daysAgo": "2.4232",
"epsRevisionsUpLast7days": "1.0000",
"epsRevisionsUpLast30days": "2.0000",
"epsRevisionsDownLast30days": "3.0000"
},
{
"code": "AAPL.US",
"date": "2025-09-30",
"period": "+1q",
"growth": "0.0135",
"earningsEstimateAvg": "1.6556",
"earningsEstimateLow": "1.5100",
"earningsEstimateHigh": "1.8200",
"earningsEstimateYearAgoEps": "0.9700",
"earningsEstimateNumberOfAnalysts": "28.0000",
"earningsEstimateGrowth": "0.7068",
"revenueEstimateAvg": "97853199420.00",
"revenueEstimateLow": "93352000000.00",
"revenueEstimateHigh": "102366000000.00",
"revenueEstimateYearAgoEps": null,
"revenueEstimateNumberOfAnalysts": "27.00",
"revenueEstimateGrowth": "0.0308",
"epsTrendCurrent": "1.6556",
"epsTrend7daysAgo": "1.6552",
"epsTrend30daysAgo": "1.6573",
"epsTrend60daysAgo": "1.6587",
"epsTrend90daysAgo": "1.7167",
"epsRevisionsUpLast7days": "3.0000",
"epsRevisionsUpLast30days": "3.0000",
"epsRevisionsDownLast30days": "4.0000"

Notes
• JSON-only due to nested structure.
• If a provided symbol has no data, it may be omitted from the response.
• For point-in-time analysis, use updated_at to detect revisions.
• To paginate large symbol sets, split your symbols into batches (for example, 50–100 per call).


Historical & Upcoming IPOs API

Endpoint

https://eodhd.com/api/calendar/ipos

Description

Returns historical and upcoming IPOs in a date window. Items may include filing/amended dates, expected or effective first trading date, price range or offer price, and share count. The response supports JSON (recommended for full field coverage).

Request Example

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/ipos?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/ipos?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/ipos?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/ipos?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/ipos?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&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")
}
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)

Parameters

ParameterRequiredTypeDescription
api_tokenYesstringYour API key.
fromNodate (YYYY-MM-DD)Start date of the query window. Default: today.
toNodate (YYYY-MM-DD)End date of the query window. Default: today + 7 days.
fmtNostringjson or csv (default).

Output Format

FieldTypeDescription
typestringConstant label of the payload (example: IPOs).
descriptionstringHuman-readable description of the dataset.
fromstring (YYYY-MM-DD)Start date used for the query.
tostring (YYYY-MM-DD)End date used for the query.
iposarray of objectsList of IPO records for the window.

IPO record fields

FieldTypeDescription
codestringTicker in EODHD format.
namestring or nullCompany name.
exchangestring or nullListing exchange.
currencystring or nullTrading currency.
start_datestring (YYYY-MM-DD) or nullExpected/effective first trading date (if known).
filing_datestring (YYYY-MM-DD) or nullInitial filing date.
amended_datestring (YYYY-MM-DD) or nullLatest amended filing date.
price_fromnumberLower end of indicated price range (0 if not provided).
price_tonumberUpper end of indicated price range (0 if not provided).
offer_pricenumberFinal priced offer (0 if not priced yet).
sharesnumberShares offered (0 if not provided).
deal_typestringLifecycle state such as Filed, Expected, Amended, Priced.

Notes
• Numbers may be 0 when the value is unknown or not yet set (for example before pricing).
• start_date may be null for filings without a scheduled first trading date.
• Use deal_type to track lifecycle changes (for example, Amended or Priced updates).

Output Response Example

{
"type": "IPOs",
"description": "Historical and upcoming IPOs",
"from": "2018-12-02",
"to": "2018-12-06",
"ipos": [
{
"code": "603629.SHG",
"name": "Jiangsu Lettall Electronic Co Ltd",
"exchange": "Shanghai",
"currency": "CNY",
"start_date": "2018-12-11",
"filing_date": "2017-06-15",
"amended_date": "2018-12-03",
"price_from": 0,
"price_to": 0,
"offer_price": 0,
"shares": 25000000,
"deal_type": "Expected"
},
{
"code": "SPK.MC",
"name": "Solarpack Corporacion Tecnologica S.A",
"exchange": "MCE",
"currency": "EUR",
"start_date": "2018-12-03",
"filing_date": "2018-11-05",
"amended_date": "2018-11-20",
"price_from": 0,
"price_to": 0,
"offer_price": 0,
"shares": 0,
"deal_type": "Expected"
},
...

Historical & Upcoming Splits API

Endpoint

https://eodhd.com/api/calendar/splits

Description

Returns historical and upcoming stock splits and reverse splits for selected symbols or a date window. Each item includes the effective split date and the ratio (for example 4:1). Ratios may represent forward splits (is_reverse = false) or reverse splits (is_reverse = true).

Request Example

By symbols (JSON recommended):

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/splits?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/splits?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/splits?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/splits?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/splits?symbols=AAPL.US,MSFT.US,AI.PA&api_token={YOUR_API_TOKEN}&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")
}
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)

By date window (all symbols):

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/splits?from=2024-01-01&to=2024-12-31&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/splits?from=2024-01-01&to=2024-12-31&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/splits?from=2024-01-01&to=2024-12-31&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/splits?from=2024-01-01&to=2024-12-31&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/splits?from=2024-01-01&to=2024-12-31&api_token={YOUR_API_TOKEN}&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")
}
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)

Parameters

ParameterRequiredTypeDescription
api_tokenYesstringYour API key.
symbolsConditionalstring (comma-separated)One or more tickers in EODHD format. Required if from/to not provided.
fromConditionaldate (YYYY-MM-DD)Start of the calendar window. Required if symbols not provided.
toConditionaldate (YYYY-MM-DD)End of the calendar window. Required if symbols not provided.
fmtNostringjson or csv (default).

Output Format

FieldTypeDescription
typestringConstant label of the payload (example: Splits).
descriptionstringHuman-readable description of the dataset.
symbolsstring or nullEchoes the requested symbols when provided.
fromstring or nullEchoes the start date when using a date window.
tostring or nullEchoes the end date when using a date window.
splitsarray of objectsList of split records.

Split record fields

FieldTypeDescription
codestringTicker in EODHD format.
namestring or nullCompany name, if available.
exchangestring or nullListing exchange, if available.
datestring (YYYY-MM-DD)Effective split date (ex-date).
ratiostringSplit ratio in readable form, for example 4:1 or 1:20.
numeratornumberFirst number of the ratio (shares after).
denominatornumberSecond number of the ratio (shares before).
is_reversebooleantrue for reverse splits (for example 1:20), false for forward splits (for example 4:1).

Notes
• Forward split example: 4:1 means numerator = 4, denominator = 1, is_reverse = false.
• Reverse split example: 1:10 means numerator = 1, denominator = 10, is_reverse = true.
• Upcoming items may be announced and subject to change.

Output Response Example

"type": "IPOs",
"description": "Historical and upcoming IPOs",
"from": "2018-12-02",
"to": "2018-12-06",
"ipos": [
{
"code": "603629.SHG",
"name": "Jiangsu Lettall Electronic Co Ltd",
"exchange": "Shanghai",
"currency": "CNY",
"start_date": "2018-12-11",
"filing_date": "2017-06-15",
"amended_date": "2018-12-03",
"price_from": 0,
"price_to": 0,
"offer_price": 0,
"shares": 25000000,
"deal_type": "Expected"
},
{
"code": "SPK.MC",
"name": "Solarpack Corporacion Tecnologica S.A",
"exchange": "MCE",
"currency": "EUR",
"start_date": "2018-12-03",
"filing_date": "2018-11-05",
"amended_date": "2018-11-20",
"price_from": 0,
"price_to": 0,
"offer_price": 0,
"shares": 0,
"deal_type": "Expected"
},
...

Historical & Upcoming Dividends API

Endpoint

https://eodhd.com/api/calendar/dividends

Description

Returns a calendar of dividend dates filtered by symbol or by date. Supports pagination. To get dividend details navigate to our Corporate Actions: Splits and Dividends API.

Request Example

By symbol:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&api_token={YOUR_API_TOKEN}&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")
}
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)

By date window:

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&filter[date_from]=2025-01-01&filter[date_to]=2025-12-31&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&filter[date_from]=2025-01-01&filter[date_to]=2025-12-31&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&filter[date_from]=2025-01-01&filter[date_to]=2025-12-31&api_token={YOUR_API_TOKEN}&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();
}
import requests

url = f'https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&filter[date_from]=2025-01-01&filter[date_to]=2025-12-31&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/calendar/dividends?filter[symbol]=AAPL.US&filter[date_from]=2025-01-01&filter[date_to]=2025-12-31&api_token={YOUR_API_TOKEN}&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")
}
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)

Parameters

ParameterRequiredTypeDescription
api_tokenYesstringYour API key.
filter[symbol]ConditionalstringLimit results to a single ticker. Required if filter[date_eq] is not provided.
filter[date_eq]Conditionaldate (YYYY-MM-DD)Exact dividend date. Required if filter[symbol] is not provided.
filter[date_from]Nodate (YYYY-MM-DD)Return dividends on or after this date.
filter[date_to]Nodate (YYYY-MM-DD)Return dividends on or before this date.
page[limit]Nointeger (1–1000, default 1000)Max results per page.
page[offset]Nointeger (default 0)Offset for pagination.
fmtNostringjson only.

Output Format

FieldTypeDescription
metaobjectMetadata about the response.
meta.totalintegerTotal number of results across all pages.
meta.limitintegerMax number of results returned in this page.
meta.offsetintegerOffset used for this page.
meta.symbolstring or nullEcho of requested symbol, if provided.
meta.date_eqstring or nullEcho of requested exact date, if provided.
dataarrayList of dividend records.
linksobjectPagination links.
links.nextstring or nullURL to the next page, or null if none.

Dividend record fields (items inside data)

FieldTypeDescription
datestring (YYYY-MM-DD)Dividend date.
symbolstringTicker.

Notes
• At least one of filter[symbol] or filter[date_eq] must be provided.
• Use page[limit] and page[offset] for large datasets.
• filter[date_from] and filter[date_to] can be used together (with filter[symbol]) to narrow the range.

Output Response Example

{
"meta": {
"total": 3,
"offset": 0,
"limit": 1000,
"symbol": "AAPL.US",
"date_eq": null
},
"data": [
{ "date": "2025-08-11", "symbol": "AAPL.US" },
{ "date": "2025-05-12", "symbol": "AAPL.US" },
{ "date": "2025-02-10", "symbol": "AAPL.US" }
],
"links": {
"next": null
}
}