EarningsNxt
CalendarInsightsFor AgentsAbout
EarningsNxt

Earnings briefings in plain English, before and after the bell. Free calendar, Pro briefs at $8/mo.

Get briefs in your inbox For agents

Popular tickers

AAPLMSFTGOOGLAMZNNVDAMETATSLAJPMVUNHJNJWMT

Product

  • Earnings Calendar
  • Pricing
  • For Agents

Resources

  • Insights
  • API Reference
  • FAQ
  • llms.txt

Company

  • About
  • Contact
  • X / Twitter
  • StockTwits
  • Instagram

© 2026 EarningsNxt. For informational purposes only. Not financial advice. AI-assisted content may contain errors.

Terms of ServicePrivacy PolicyDisclaimerDisclosureAccessibilityDo Not Sell My Info

Developers

EarningsNxt API reference

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.

Get a Pro API key Agent guide

Quick start

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.

Base URL
https://earningsnxt.ai/api/v1
1. What reports in the next 30 days
curl https://earningsnxt.ai/api/v1/calendar
2. The brief for one of those events
curl https://earningsnxt.ai/api/v1/briefs/AAPL/Q1-2026

Authentication

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.

Authenticated request
curl -H "Authorization: Bearer $EARNINGSNXT_KEY" \
     https://earningsnxt.ai/api/v1/briefs/VZ/Q1-2026

Generate, 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.

A request that carries a key is always counted against that account, even for a ticker that would have been free without one. Leave the header off if you want a call to use the keyless allowance instead.

Rate limits and quotas

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.

AccessRequests / minuteRequests / dayBrief coverage
No key60 per IP addressNo daily capTop 10 tickers
Pro key60 per account2,000 requestsAll tracked tickers, 200 distinct per day
Pro key, during trial60 per account100 requestsAll 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.

Endpoints

GET/api/v1/briefs/{symbol}/{quarter}

One earnings event for one ticker: the company, analyst estimates, reported results, and the full pre-earnings and post-earnings briefs.

Access

No key for the top 10 tickers. Every other ticker needs a Pro key.

Cached for

1 hour

Parameters

symbolpath
Ticker symbol. Case-insensitive.
quarterpath
Fiscal quarter as 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.
formatquery · optional
md or markdown returns the brief as Markdown instead of JSON. Sending Accept: text/markdown does the same.
Request
curl https://earningsnxt.ai/api/v1/briefs/AAPL/Q1-2026
Response · application/json
{
  "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

reportTime
BMO (before market open) or AMC (after market close).
status
upcoming or reported.
tier
free or pro, depending on whether the request carried a valid key. Also sent as the X-EarningsNxt-Tier response header.
estimateswhen available
consensusEps, consensusRevenue, epsLow, epsHigh, whisperEps, numAnalysts. Individual values can be null.
resultsafter the report
actualEps, actualRevenue, epsSurprisePct, revenueSurprisePct, stockReaction1d, stockReaction5d, keyTakeaways.
preBriefwhen available
companySnapshot, keyMetrics, lastQuarterRecap, wallStreetExpectations, optionsSignal, earningsTrackRecord, pivotalQuestions, thesisBreakLevels, scenarioPlaybook, whatTheStreetIsMissing, whatToListenFor, plus optional peerReadThroughs and setupPatternInsight.
postBriefafter the report
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.
  • A 404 means either the event does not exist or no brief has been generated for it yet. The error message says which.

GET/ticker/{symbol}/earnings/{quarter}.md

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

Same as the JSON briefs endpoint, and counted against the same limits.

Cached for

1 hour

Parameters

symbolpath
Ticker symbol. Case-insensitive.
quarterpath
Fiscal quarter, for example Q1-2026.
Request
curl https://earningsnxt.ai/ticker/AAPL/earnings/Q1-2026.md
Response · text/markdown
# 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% |
  • Errors on this URL still come back as JSON, with the same status codes as the JSON endpoint.

GET/api/v1/calendar

Earnings events in a date range, each with consensus estimates, the options-implied move, and a link to its brief.

Access

No key needed. Covers every tracked ticker.

Cached for

30 minutes

Parameters

fromquery · optional
Start date, YYYY-MM-DD. Defaults to today.
toquery · optional
End date, YYYY-MM-DD. Defaults to 30 days after from.
limitquery · optional
Maximum events to return. Defaults to 100, capped at 500.
Request
curl "https://earningsnxt.ai/api/v1/calendar?from=2026-10-08&to=2026-10-15&limit=50"
Response · application/json
{
  "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.
  • There is no pagination. To walk a long period, request it in smaller date windows.
  • An unparseable date returns 400.

GET/api/v1/tickers

The directory of tracked companies, with a flag showing which ones are readable without a key.

Access

No key needed.

Cached for

1 hour

Parameters

qquery · optional
Matches anywhere in the symbol or company name. Case-insensitive, first 30 characters used.
sectorquery · optional
Matches anywhere in the sector name, so tech finds Information Technology.
freequery · optional
true keeps only tickers whose briefs need no key.
Request
curl "https://earningsnxt.ai/api/v1/tickers?q=apple"
Response · application/json
{
  "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"
    }
  ]
}
  • Results are sorted by symbol and capped at 500 per request, with no pagination. Narrow with q or sector to reach the rest.
  • marketCap is in US dollars and can be null.

GET/api/v1/pricing

Plans, limits, and the endpoint list as JSON, for agents that need to discover the API on their own.

Access

No key needed.

Cached for

24 hours
Request
curl https://earningsnxt.ai/api/v1/pricing
Response · application/json
{
  "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

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.

400Bad request
A calendar date could not be parsed. Use YYYY-MM-DD.
401Unauthorized
Either the ticker is outside the free set and no key was sent, or the key is not recognised. A bad key is rejected on every endpoint, including the ones that need no key.
403Forbidden
The key is real but the subscription behind it is no longer active.
404Not found
No earnings event for that symbol and quarter, or the event exists and has no brief yet.
429Too many requests
A per-minute limit or daily quota was hit. Wait the number of seconds in the Retry-After header. Per-minute responses also carry X-RateLimit-Limit and X-RateLimit-Window.
500Server error
Something failed on our side. Retrying after a short pause is safe: every endpoint is read-only.
401 · ticker needs a key
{
  "error": "Ticker VZ requires a Pro API key. Top 10 tickers are free. Get a key at /pricing.",
  "docs": "https://earningsnxt.ai/llms.txt"
}
429 · per-minute limit
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"
}
429 · daily quota
{
  "error": "Daily quota exceeded. Resets at 00:00 UTC.",
  "limits": { "requestsPerDay": 2000, "tickersPerDay": 200 }
}

On this page

  1. 01Quick start
  2. 02Authentication
  3. 03Rate limits
  4. 04Briefs
  5. 05Briefs as Markdown
  6. 06Calendar
  7. 07Tickers
  8. 08Pricing
  9. 09Errors

Need the full ticker universe?

The top 10 tickers stay free. A Pro key opens every tracked ticker and every quarter for $8 a month.

Create a Pro key Read llms.txt