Developers
Read-only GET endpoints for briefs, the earnings calendar, and the ticker directory. The top 10 tickers work with no key and no signup. JSON by default, Markdown on request.
Every endpoint lives under one base URL and answers a plain GET. Start with the calendar to find what is reporting, then fetch the brief for an event using its symbol and fiscalQuarter.
https://earningsnxt.ai/api/v1
curl https://earningsnxt.ai/api/v1/calendar
curl https://earningsnxt.ai/api/v1/briefs/AAPL/Q1-2026
The calendar, ticker directory, and pricing endpoints need no key. Briefs need no key for the top 10 tickers by market cap; list them with /api/v1/tickers?free=true. Every other ticker needs a Pro key, sent as a Bearer token.
curl -H "Authorization: Bearer $EARNINGSNXT_KEY" \
https://earningsnxt.ai/api/v1/briefs/VZ/Q1-2026Generate, rotate, or revoke your key under API access on your account page. Keys start with enx_. Rotating a key makes the old one stop working immediately.
Per-minute limits reset at the top of each minute. Daily quotas reset at 00:00 UTC and apply only to requests made with a key.
| Access | Requests / minute | Requests / day | Brief coverage |
|---|---|---|---|
| No key | 60 per IP address | No daily cap | Top 10 tickers |
| Pro key | 60 per account | 2,000 requests | All tracked tickers, 200 distinct per day |
| Pro key, during trial | 60 per account | 100 requests | All tracked tickers, 100 distinct per day |
Rejected requests (401 and 403) have their own allowance of 10 per minute per IP address. Past that they return 429 instead, so fix the key rather than retrying.
One earnings event for one ticker: the company, analyst estimates, reported results, and the full pre-earnings and post-earnings briefs.
Access
Cached for
Parameters
Q{1-4}-{year}, for example Q1-2026. Take it from fiscalQuarter in a calendar response rather than guessing: fiscal years do not always match calendar years.md or markdown returns the brief as Markdown instead of JSON. Sending Accept: text/markdown does the same.curl https://earningsnxt.ai/api/v1/briefs/AAPL/Q1-2026
{
"symbol": "AAPL",
"fiscalQuarter": "Q1-2026",
"reportDate": "2026-01-29",
"reportTime": "AMC",
"status": "reported",
"company": {
"name": "Apple Inc.",
"sector": "Information Technology",
"industry": "Technology Hardware, Storage & Peripherals"
},
"tier": "free",
"webUrl": "https://earningsnxt.ai/ticker/AAPL/earnings/Q1-2026",
"postBrief": {
"headline": "Apple Beats on EPS, Stock Up 0.72%",
"keyNumbers": [
{ "metric": "EPS", "actual": "$2.84", "expected": "N/A", "surprise": "+7.01%" }
],
"managementCommentary": { "tone": "Cautiously Optimistic", "keyQuotes": ["..."], "summary": "..." },
"guidanceChanges": { "summary": "...", "changes": [] },
"whatItMeans": "..."
}
}Response fields
BMO (before market open) or AMC (after market close).upcoming or reported.free or pro, depending on whether the request carried a valid key. Also sent as the X-EarningsNxt-Tier response header.consensusEps, consensusRevenue, epsLow, epsHigh, whisperEps, numAnalysts. Individual values can be null.actualEps, actualRevenue, epsSurprisePct, revenueSurprisePct, stockReaction1d, stockReaction5d, keyTakeaways.companySnapshot, keyMetrics, lastQuarterRecap, wallStreetExpectations, optionsSignal, earningsTrackRecord, pivotalQuestions, thesisBreakLevels, scenarioPlaybook, whatTheStreetIsMissing, whatToListenFor, plus optional peerReadThroughs and setupPatternInsight.headline, keyNumbers, managementCommentary, guidanceChanges, whatItMeans.estimates, results, preBrief, and postBrief are left out of the response entirely when there is nothing to return, so check for the key before reading it.404 means either the event does not exist or no brief has been generated for it yet. The error message says which.The same brief as plain Markdown, at the public page URL with .md added. Meant for pasting into a prompt or feeding to a model as context.
Access
Cached for
Parameters
Q1-2026.curl https://earningsnxt.ai/ticker/AAPL/earnings/Q1-2026.md
# Apple Inc. (AAPL) — Q1-2026 Earnings Results **Report date:** 2026-01-29 (after market close) **Sector:** Information Technology / Technology Hardware, Storage & Peripherals **Status:** reported **Source:** https://earningsnxt.ai/ticker/AAPL/earnings/Q1-2026 ## Post-Earnings Brief ### Headline Apple Beats on EPS, Stock Up 0.72% ### Key Numbers | Metric | Actual | Expected | Surprise | |---|---|---|---| | EPS | $2.84 | N/A | +7.01% |
Earnings events in a date range, each with consensus estimates, the options-implied move, and a link to its brief.
Access
Cached for
Parameters
YYYY-MM-DD. Defaults to today.YYYY-MM-DD. Defaults to 30 days after from.curl "https://earningsnxt.ai/api/v1/calendar?from=2026-10-08&to=2026-10-15&limit=50"
{
"from": "2026-10-08",
"to": "2026-10-15",
"count": 1,
"events": [
{
"symbol": "DAL",
"company": "Delta Air Lines, Inc.",
"sector": "Industrials",
"fiscalQuarter": "Q3-2026",
"reportDate": "2026-10-09",
"reportTime": "BMO",
"status": "upcoming",
"estimates": {
"consensusEps": 1.881,
"consensusRevenue": 18906.71,
"numAnalysts": null
},
"impliedMovePct": 5.959827,
"briefUrl": "https://earningsnxt.ai/api/v1/briefs/DAL/Q3-2026",
"webUrl": "https://earningsnxt.ai/ticker/DAL/earnings/Q3-2026"
}
]
}consensusRevenue is in millions of US dollars. estimates and impliedMovePct are null when we have no data for the event.400.The directory of tracked companies, with a flag showing which ones are readable without a key.
Access
Cached for
Parameters
tech finds Information Technology.true keeps only tickers whose briefs need no key.curl "https://earningsnxt.ai/api/v1/tickers?q=apple"
{
"count": 2,
"tickers": [
{
"symbol": "AAPL",
"name": "Apple Inc.",
"sector": "Information Technology",
"industry": "Technology Hardware, Storage & Peripherals",
"marketCap": 4913422580600,
"free": true,
"briefsUrl": "https://earningsnxt.ai/api/v1/briefs/AAPL",
"webUrl": "https://earningsnxt.ai/ticker/AAPL"
},
{
"symbol": "APLE",
"name": "Apple Hospitality REIT, Inc.",
"sector": "Real Estate",
"industry": "Hotel & Resort REITs",
"marketCap": 3786766475.92,
"free": false,
"briefsUrl": "https://earningsnxt.ai/api/v1/briefs/APLE",
"webUrl": "https://earningsnxt.ai/ticker/APLE"
}
]
}q or sector to reach the rest.marketCap is in US dollars and can be null.Plans, limits, and the endpoint list as JSON, for agents that need to discover the API on their own.
Access
Cached for
curl https://earningsnxt.ai/api/v1/pricing
{
"product": "EarningsNxt",
"plans": [
{ "name": "Free", "price": 0, "authRequired": false, "limits": { "tickers": 10, "rateLimit": "..." } },
{ "name": "Pro", "price": 8, "interval": "month", "authRequired": true, "limits": { "...": "..." } }
],
"apiBase": "https://earningsnxt.ai/api/v1",
"endpoints": { "briefs": { "...": "..." }, "calendar": { "...": "..." }, "tickers": { "...": "..." } },
"documentation": "https://earningsnxt.ai/llms.txt",
"signup": "https://earningsnxt.ai/signup"
}Errors are JSON with an error string written to be read by a person or a model. Branch on the HTTP status, not on the message text.
YYYY-MM-DD.Retry-After header. Per-minute responses also carry X-RateLimit-Limit and X-RateLimit-Window.{
"error": "Ticker VZ requires a Pro API key. Top 10 tickers are free. Get a key at /pricing.",
"docs": "https://earningsnxt.ai/llms.txt"
}HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 60
X-RateLimit-Window: 60s
{
"error": "Rate limit exceeded. See Retry-After header.",
"limit": 60,
"window": "60s",
"upgrade": "https://earningsnxt.ai/api/v1/pricing"
}{
"error": "Daily quota exceeded. Resets at 00:00 UTC.",
"limits": { "requestsPerDay": 2000, "tickersPerDay": 200 }
}The top 10 tickers stay free. A Pro key opens every tracked ticker and every quarter for $8 a month.