4
$\begingroup$

I'm trying to find all of the historical earnings dates (just the dates is good enough) for certain stocks ranging back to their IPOs. I'm plan to use it for my machine learning project.

Yahoo and Nasdaq seem to only list the earnings dates for the last four quarters.

Any suggestions?

Thank you.

$\endgroup$
1
  • 2
    $\begingroup$ The Compustat database includes this information en.wikipedia.org/wiki/Compustat . It is a commercial product, not free. $\endgroup$
    – Alex C
    Commented Mar 14, 2017 at 0:00

6 Answers 6

3
$\begingroup$

You can use Bloomberg terminal BDH formula on Excel. If you go through the wizard, you'll have to click:

Import data -> Historical End of Day -> Select securities from spreadsheet -> select "LATEST_ANNOUNCEMENT_DT" -> select dates -> finish.

If you don't have access to Bloomberg terminal, try asking some friends if they do. Many university libraries have one, as do most bigger financial companies.

Word of caution: I don't know about other sources, but Bloomberg data is not exactly correct - it doesn't differentiate whether a company reports before, during or after the market hours. To get around this I would measure the price move over 2-3 days around earnings instead of a single day.

$\endgroup$
1
  • $\begingroup$ Thanks, I will see if I can get access to Bloomberg Terminal. $\endgroup$
    – moondra
    Commented Mar 14, 2017 at 14:54
3
$\begingroup$

Yahoo does provide a great alternative https://finance.yahoo.com/calendar/earnings?symbol=TD.TO

$\endgroup$
3
  • 1
    $\begingroup$ Yahoo was explicitly mentioned as not a great alternative. Did something change? $\endgroup$
    – Bob Jansen
    Commented Oct 1, 2020 at 5:08
  • 1
    $\begingroup$ It looks like now, at least for the TD example given, Yahoo gives many years and now just the last 4 quarters. It also includes timestamp. $\endgroup$ Commented Oct 1, 2020 at 22:16
  • $\begingroup$ Is there a way to get this in CSV or json format? $\endgroup$
    – mike01010
    Commented Apr 27, 2021 at 22:11
2
$\begingroup$

If you truly don't need the time of the earnings report, you can use Tradier. https://developer.tradier.com/documentation/markets/fundamentals/get-calendars

$\endgroup$
1
$\begingroup$

AlphaVantage provides quarterly earnings release dates including EPS (actual/predicted/surprise), see https://www.alphavantage.co/documentation/#earnings

The advantage is that unlike Yahoo Finance's earning calendar it's machine readable (JSON) and it's free (need to sign up for a free API key).

$\endgroup$
1
$\begingroup$

Adding to the solution of @Martin by providing some R code (if one does not have access to a Bloomberg terminal), then you can get quarterly earnings from the alphavantage API. One way of doing this (Apple is used as an example):

library(alphavantager)
library(httr)

av_api_key(YOUR API KEY HERE)

temp <- GET("https://www.alphavantage.co/query? 
function=EARNINGS&symbol=AAPL&apikey=YOUR API KEY HERE")

AAPL_earnings <- content(temp)

AAPL_earnings <- t(as.data.frame(AAPL_earnings$quarterlyEarnings))

Which will produce a dataframe on the form:

Apple earnings output

The "httr" package is used to scrape the webpage in the GET function, where "content" scrapes the body of the webpage which is a JSON file of data. More intuitively, you could also go to the website in the GET function $\rightarrow$ right-click $\rightarrow$ "save as", and then save it as a JSON file, which can be loaded into your preferable programming language.

Even though this is an old thread, I'll post it here for people who might have the same problems.

$\endgroup$
2
  • $\begingroup$ Thanks, I was looking at getting the data in R also. Your code works fine but I think the output could be better structured. Here's the function I came up with: gist.github.com/mgei/f5cd22848d656d47180db7e68b04048e $\endgroup$
    – Martin
    Commented Dec 27, 2020 at 17:16
  • $\begingroup$ Yes, the data formatting should be different if you want to work with it. The purpose of the answer was just to provide some "starting" code to get an understanding on how to access the API. Kudos for your function, it works nicely. $\endgroup$
    – Pleb
    Commented Dec 27, 2020 at 19:04
0
$\begingroup$

I wasn’t happy with the above answers and created my own.

I pulled the data straight from the sec submissions of earnings reports and put it into csv form.

Anyone can get a full download of all stocks for $60

https://www.earnings-dates.com

$\endgroup$
3
  • 1
    $\begingroup$ Drawback is that the dates have no timestamp. $\endgroup$
    – ascripter
    Commented Aug 3, 2023 at 10:42
  • $\begingroup$ Yes, I need timestamp. :( $\endgroup$
    – Salva
    Commented Feb 27 at 6:13
  • $\begingroup$ These are the dates of the 10-Q submissions and not the earnings announcement dates. I don't see how this could possibly help anyone with backtesting. $\endgroup$ Commented Mar 11 at 4:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.