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.