Earnings Calendar API
The Earnings Calendar API provides upcoming earnings dates and past earnings results for more than 50,000 tickers on US and international exchanges, with history going back to 2000.
Every report includes the report date, fiscal period, and actual EPS and revenue. Premium plans add consensus EPS and revenue estimates, the surprise versus those estimates, whether the company reports before or after the market, and GAAP EPS from SEC filings alongside adjusted EPS. Business plans add year-over-year growth and the stock's price reaction to each report.
Available endpoints:
- /v1/earningscalendar - Get a list of past earnings results and upcoming earnings dates
- /v1/earningscalendarlist - Get a list of all available companies in the earnings calendar
- /v1/upcomingearnings - Get upcoming earnings dates with filtering by date range, exchange, or ticker
From 8,223 users
Applications using this API
API Status
API Response Times
Average | P50 | P75 | P90 | P95 |
|---|---|---|---|---|
| 380ms | 422ms | 479ms | 685ms | 1184ms |
Didn't find what you were looking for? Suggest an improvement
https://api.api-ninjas.com/v1/earningscalendar
Returns a list of past earnings results and upcoming earnings dates. You can query by ticker symbol to get earnings for a specific company, by a single date, or by a date range. Up to 50 earnings results are returned per request.
Premium responses include GAAP diluted EPS from the company's SEC 10-Q or 10-K next to the adjusted EPS that analyst estimates use. Business-tier responses additionally include earnings intelligence derived from each report: EPS/revenue beat-or-miss, surprise history and beat streak, standardized unexpected earnings (SUE), year-ago EPS and revenue with year-over-year growth, the post-earnings price reaction (opening gap, 1-, 3- and 5-day moves, pre-earnings run-up, and volume), days to next earnings, and SEC 8-K–confirmed report date/time.
Parameters
At least one of ticker, date, date_start, or date_end must be provided. date cannot be combined with date_start or date_end.
tickeroptionalCompany ticker symbol (e.g.,
MSFT). If provided, returns earnings data for that specific company.dateoptionalDate in YYYY-MM-DD format (e.g.,
2024-01-15). If provided, returns all earnings data for that specific date.date_startoptionalStart date of a range in YYYY-MM-DD format (e.g.,
2024-01-15). Inclusive. If onlydate_startis provided,date_enddefaults to 7 days later. Cannot be combined withdate.date_endoptionalEnd date of a range in YYYY-MM-DD format (e.g.,
2024-01-22). Inclusive. Must be on or afterdate_start. If onlydate_endis provided,date_startdefaults to 7 days earlier. Cannot be combined withdate.show_upcomingoptional Premium onlyWhether to show upcoming earnings dates. Must be either
trueorfalse. If unset, the default value isfalse.offsetoptionalNumber of results to skip for pagination. Must be a non-negative integer. Each request returns up to 50 results; use
offsetto page through larger result sets (e.g.offset=50for the next 50 results).
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON array of objects, each containing the following fields, or an error if the request is unsuccessful.
dateThe date of the earnings.
tickerThe ticker symbol of the company.
fiscal_yearThe company's fiscal year for this earnings report.
fiscal_quarterThe company's fiscal quarter (1-4) for this earnings report.
period_end_datePremium onlyThe last day of the fiscal period covered by this report (YYYY-MM-DD), from the company's SEC 10-Q or 10-K. Null for companies that don't file with the SEC and until the filing is published.
earnings_timingPremium onlyTiming of the earnings call. Possible values are:
before_market: Earnings call occurs before the market opens.during_market: Earnings call occurs during regular market hours.after_market: Earnings call occurs after the market closes.
earnings_call_timestampPremium onlyUnix timestamp of when the earnings call occurred or is scheduled to occur.
actual_revenueThe actual revenue, in the company's reporting currency (for example USD for US companies, JPY for Tokyo listings). Null until the company reports.
estimated_revenuePremium onlyThe consensus revenue estimate, in the company's reporting currency.
revenue_differencePremium onlyThe difference between actual and estimated revenue (
actual_revenue - estimated_revenue), in the reporting currency.revenue_difference_pctPremium onlyThe revenue difference as a percentage of the estimate:
(actual_revenue - estimated_revenue) / |estimated_revenue| * 100. Null whenestimated_revenueis 0.actual_epsThe actual earnings per share on the adjusted (non-GAAP) basis that analyst estimates use, in the company's reporting currency. See
actual_eps_gaapfor GAAP EPS. Null until the company reports.actual_eps_gaapPremium onlyGAAP diluted earnings per share from the company's SEC 10-Q (or 10-K for the fourth quarter), so you can compare it with the adjusted
actual_eps. Available for US SEC filers once the filing is published, which is usually the report day. Fourth-quarter values are derived from the annual 10-K and can differ from the company-reported figure by a few cents.estimated_epsPremium onlyThe consensus EPS estimate (adjusted basis), in the company's reporting currency.
eps_differencePremium onlyThe difference between actual and estimated EPS (
actual_eps - estimated_eps), in the reporting currency.eps_difference_pctPremium onlyThe EPS difference as a percentage of the estimate:
(actual_eps - estimated_eps) / |estimated_eps| * 100. Null whenestimated_epsis 0.sec_filing_typePremium onlyThe SEC filing
actual_eps_gaapcomes from:10-Q, or10-K (Q4 derived from annual)for fourth quarters.sec_filing_datePremium onlyThe date that SEC filing was filed (YYYY-MM-DD).
report_date_statusBusiness tier and above, or any annual planconfirmedonce the company has filed its SEC 8-K (Item 2.02) earnings release for this report, otherwiseprojected. Confirmations are checked twice a day, usually the same evening for after-market reports and before the next open for pre-market reports.date_confirmedBusiness tier and above, or any annual plantruewhen an SEC 8-K Item 2.02 (Results of Operations) filing has been matched to this earnings report, otherwisefalse.report_datetimeBusiness tier and above, or any annual planThe time the SEC accepted the company's 8-K earnings filing, in ISO 8601 U.S. Eastern time (e.g.
2026-07-29T16:04:53-04:00). Companies usually file it within minutes of releasing results, so it shows whether and when the report came out before or after the market. Null for projected reports and for companies that don't file 8-Ks with the SEC.sec_8k_urlBusiness tier and above, or any annual planURL of the SEC 8-K Item 2.02 filing that confirmed this report. Null when unconfirmed.
eps_beat_missBusiness tier and above, or any annual planWhether actual EPS came in above, below, or in line with the estimate:
beat,miss, orinline. Null until the company reports.revenue_beat_missBusiness tier and above, or any annual planWhether actual revenue came in above, below, or in line with the estimate:
beat,miss, orinline. Null until the company reports.eps_surprise_streakBusiness tier and above, or any annual planNumber of consecutive most-recent quarters the company has beaten its EPS estimate (
0if the latest report missed).avg_eps_surprise_pct_4qBusiness tier and above, or any annual planAverage EPS surprise percentage over the last 4 reported quarters.
eps_sueBusiness tier and above, or any annual planStandardized Unexpected Earnings: the latest EPS surprise divided by the standard deviation of recent surprises. A normalized surprise magnitude commonly used in post-earnings-drift (PEAD) strategies.
year_ago_dateBusiness tier and above, or any annual planReport date of the same quarter one year earlier.
year_ago_actual_epsBusiness tier and above, or any annual planActual EPS (adjusted basis) reported one year earlier. Also filled for upcoming reports, so you can see what the company earned a year ago.
year_ago_actual_revenueBusiness tier and above, or any annual planActual revenue reported one year earlier, in the reporting currency.
eps_growth_yoy_pctBusiness tier and above, or any annual planYear-over-year EPS growth in percent:
(actual_eps - year_ago_actual_eps) / |year_ago_actual_eps| * 100, so a narrowing loss counts as positive growth. Null until the company reports.revenue_growth_yoy_pctBusiness tier and above, or any annual planYear-over-year revenue growth in percent. Null until the company reports.
last_earnings_move_pctBusiness tier and above, or any annual planThe one-day percentage price reaction to this earnings report, computed timing-aware (the next session for after-market reports). Null when daily prices are unavailable for the ticker.
avg_earnings_move_pctBusiness tier and above, or any annual planThe average absolute one-day price move over the company's last 4 reported earnings. Useful for sizing expected moves around a print.
price_reactionBusiness tier and above, or any annual planThe stock's price reaction to this report, from daily prices. The reaction session is the report date for before-market reports and the next trading day for after-market reports. Null for upcoming reports and until the reaction session has closed. Contains:
reaction_date: first trading session that reflects the report.pre_earnings_close: close of the session before the reaction.gap_pct: reaction-session open vs. the pre-earnings close, in percent.move_1d_pct,move_3d_pct,move_5d_pct: close after 1, 3 and 5 sessions (counting the reaction session) vs. the pre-earnings close, in percent.pre_earnings_move_5d_pct: run-up over the 5 sessions before the report, in percent.volume_ratio: reaction-session volume divided by the 20-session average.
days_to_next_earningsBusiness tier and above, or any annual planCalendar days from today until the company's next scheduled earnings date.
next_earnings_dateBusiness tier and above, or any annual planThe company's next scheduled earnings date (YYYY-MM-DD).
has_transcriptBusiness tier and above, or any annual planWhether an earnings call transcript is available for this report via the Earnings Call Transcript API.
surprise_historyBusiness tier and above, or any annual planAn array of up to the 4 most-recent reported quarters (most-recent first), each with
date,actual_eps,estimated_eps, andeps_surprise_pct.
Note for free tier users: Premium-only fields are still included in the response, but their values are replaced with a message indicating the field requires a premium subscription. Fields marked Business, Professional, or annual subscriptions only are unlocked on the Business tier and above (or any annual plan); on lower tiers their values are likewise replaced with an upgrade message. Upgrade at /pricing to unlock real values.
Live Demo
Get a free API key to get started — no credit card required.
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/earningscalendar?date=2024-01-15" \
-H "X-Api-Key: YOUR_API_KEY"If your programming language is not listed in the Code Example above, you can still make API calls by using a HTTP request library written in your programming language and following the above documentation.
Premium only
https://api.api-ninjas.com/v1/earningscalendarlist
Returns a list of all available companies in the earnings calendar. Use it to find tickers for the /v1/earningscalendar endpoint.
Parameters
This endpoint does not require any parameters.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON array of objects, each containing the following fields, or an error if the request is unsuccessful.
tickerThe company ticker symbol.
companyThe company name.
Live Demo
This endpoint has no parameters. Click Try it to fetch the list of all available companies.
Get a free API key to get started — no credit card required.
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/earningscalendarlist" \
-H "X-Api-Key: YOUR_API_KEY"Premium only
https://api.api-ninjas.com/v1/upcomingearnings
Returns a list of upcoming earnings dates with filtering capabilities. You can filter by date range, single date, exchange, or ticker symbol. Results are limited to dates from today onwards.
Parameters
All parameters are optional. If no parameters are provided, returns upcoming earnings from today onwards (up to 100 results).
start_dateoptionalStart date in YYYY-MM-DD format (e.g.,
2024-01-15). Must be today or later. Defaults to today if not provided.end_dateoptionalEnd date in YYYY-MM-DD format (e.g.,
2024-12-31). Must be after start_date. Defaults to 10 years from today if not provided.dateoptionalSingle date in YYYY-MM-DD format (e.g.,
2024-01-15). If provided, overrides start_date and end_date to filter by this exact date.exchangeoptionalExchange code to filter by (e.g.,
NASDAQ,NYSE,HKSE,LSE,TSX). Returns only earnings from companies listed on the specified exchange.tickeroptionalTicker symbol to filter by (e.g.,
AAPL,0700.HK). Returns only earnings for that specific company.limitoptionalMaximum number of results to return. Must be between
1and100(inclusive). Default is100.offsetoptionalNumber of results to skip for pagination. Must be a non-negative integer. Use in combination with
limitto paginate through results.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
A JSON array of objects, each containing the following fields, or an error if the request is unsuccessful.
tickerThe ticker symbol of the company.
dateThe date of the upcoming earnings (YYYY-MM-DD format).
eps_estimatedThe estimated earnings per share, in the company's reporting currency (may be null).
revenue_estimatedThe estimated revenue, in the company's reporting currency (may be null).
exchangeThe exchange code where the company is listed (e.g., NASDAQ, NYSE, HKSE).
earnings_timingTiming of the earnings call. Omitted when the company's earnings timing is not yet known. Possible values are:
before_market: Earnings call occurs before the market opens.during_market: Earnings call occurs during regular market hours.after_market: Earnings call occurs after the market closes.
Live Demo
Get a free API key to get started — no credit card required.
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/upcomingearnings?exchange=NASDAQ" \
-H "X-Api-Key: YOUR_API_KEY"Frequently Asked Questions
Can I use the Earnings Calendar API for commercial purposes?
Yes, but you must have a premium subscription. Commercial use of the Earnings Calendar API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.How do I get an API key and start using the Earnings Calendar API?
Sign up for a free account to instantly get your API key, then pass it in theX-Api-Keyheader on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.What happens if I exceed my quota for the month?
Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.What happens if a request to the Earnings Calendar API fails?
The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.How many companies does the Earnings Calendar API cover, and how far back does the data go?
The API covers more than 50,000 tickers on US and international exchanges, including NYSE, Nasdaq, London, Toronto, Germany, Tokyo, Hong Kong, Shanghai, Shenzhen and India, with earnings history back to 2000 and upcoming report dates up to about a year ahead. EPS and revenue are returned in each company's reporting currency rather than converted to USD, so Toyota (7203.T) is reported in JPY.How do I get upcoming earnings dates and before- or after-market report times?
Call/v1/earningscalendarwith aticker,date, ordate_start/date_endrange andshow_upcoming=trueto include scheduled future reports, or use/v1/upcomingearningsto filter upcoming dates byexchange. Theearnings_timingfield tells you whether the company reportsbefore_market,during_market, orafter_market, andearnings_call_timestampgives the call time as a Unix timestamp. Upcoming dates, estimates, and timing are available on premium plans.How often is the data updated, and can upcoming earnings dates change?
The calendar is refreshed every day. Actual EPS and revenue appear with the next daily refresh after a company reports, and estimates are updated as they change. Upcoming dates are projections until the company reports, and companies sometimes move them, so re-check dates close to the event: when a date moves, the old date is removed on the next refresh. On Business plans,report_date_statusswitches toconfirmedonce the company files its 8-K earnings release with the SEC, andreport_datetimegives the exact filing time.Is the EPS in the Earnings Calendar API GAAP or adjusted?
Both are available.actual_epsandestimated_epsare on the adjusted (non-GAAP) basis that analyst consensus uses, so the surprise fields compare like with like.actual_eps_gaapis GAAP diluted EPS taken from the company's SEC 10-Q or 10-K, withsec_filing_type,sec_filing_date, andperiod_end_dateshowing where it came from. GAAP EPS is available for US SEC filers once the filing is published, usually on the report day; fourth-quarter values are derived from the annual 10-K.What does the Business tier add to earnings calendar results?
Business, Professional, and annual plans add earnings analytics to every row:eps_beat_missandrevenue_beat_miss, the beat streak, 4-quarter average surprise, standardized unexpected earnings (eps_sue), andsurprise_history; year-ago EPS and revenue witheps_growth_yoy_pctandrevenue_growth_yoy_pct; theprice_reactionto the report (opening gap, 1-, 3- and 5-day moves, pre-earnings run-up, and volume ratio) and the average move over the last 4 reports; the next earnings date; and whether a transcript is available in the Earnings Call Transcript API.How do I get every company reporting earnings on a given day or week?
Passdate(for example2026-07-30) for a single day ordate_startanddate_endfor a range. Results are sorted by date, newest first, then by ticker, and each request returns up to 50 rows, so page through busy days withoffset=50,offset=100, and so on. The calendar includes international listings; to narrow upcoming reports to one exchange, use/v1/upcomingearningswith theexchangeparameter.What are the three endpoints of the Earnings Calendar API and how do they differ?
/v1/earningscalendarreturns past results and upcoming dates byticker,date, or date range./v1/earningscalendarlistreturns every covered company'stickerandcompanyname./v1/upcomingearningsreturns upcoming dates filtered by date range,exchange, orticker, with alimitof up to 100 rows. The latter two endpoints are premium only. For full income statements, balance sheets, and cash flows from each filing, see the Earnings API.
Explore API integration use cases for recommended APIs and workflow examples.