On this page本文目录
TL;DR: the best API depends on the earnings layerTL;DR:最佳 API 取决于你需要哪一层财报数据
FMP is the most complete single-stack option here for calendars, company earnings, surprises, and transcripts. Finnhub is strong for event timing plus EPS and revenue actuals versus estimates. Alpha Vantage is simple for prototypes and historical EPS. EODHD is useful for global calendar coverage and estimate trends. SEC EDGAR is the primary evidence layer, not a consensus-estimate API.
FMP 在这里最接近单一完整数据栈,覆盖日历、公司 Earnings、Surprise 与 Transcript;Finnhub 适合结合事件时段以及 EPS/Revenue 实际值与预期值;Alpha Vantage 适合原型和历史 EPS;EODHD 适合全球日历与预期趋势;SEC EDGAR 是第一方证据层,而不是 Consensus Estimate API。
Choose it when one agent needs calendars, reported earnings, estimates, surprise screening, statements, and transcripts.
当一个 Agent 同时需要日历、实际结果、预期、Surprise 筛选、报表和 Transcript 时使用。
Choose it when event timing, international inclusion, EPS, revenue, and broader market data belong in one workflow.
当事件时段、国际市场、EPS、Revenue 和更广泛市场数据需要进入同一工作流时使用。
Choose it for a straightforward calendar plus quarterly and annual EPS history, accepting CSV for the calendar endpoint.
适合直接获取 Calendar 和季度/年度 EPS 历史,并能接受 Calendar 使用 CSV 的原型。
Choose it when exchange-qualified symbols, worldwide coverage, estimate ranges, analyst counts, and revisions matter.
适合重视交易所限定代码、全球覆盖、预期区间、分析师数量与修订趋势的场景。
Who this guide is for这份指南适合谁
This guide is for engineers building earnings monitors, portfolio-alert agents, research copilots, post-earnings summaries, estimate-revision screens, or event-driven trading research. It assumes you can store normalized JSON, schedule pre- and post-event jobs, and retain source records for review.
本文适合构建财报监控、组合提醒 Agent、研究 Copilot、财报后摘要、预期修订筛选或事件驱动研究的工程师。你需要能够存储标准化 JSON、安排事件前后任务,并保留可审阅的来源记录。
Stable symbol mapping, UTC-aware timestamps, a fiscal-period model, provider credentials in server-side secrets, a revision policy, and an evidence store for releases, transcripts, and filings.
准备稳定的 Symbol 映射、支持 UTC 的时间戳、财政期间模型、服务端密钥管理、修订策略,以及存放 Earnings Release、Transcript 与 Filing 的证据库。
What “earnings data” actually includes“财报数据”到底包含哪些层
The word earnings often hides six different products. Treating them as one table causes date, period, and provenance errors.
Earnings 这个词往往掩盖了六种不同产品。把它们当成一张表,会产生日期、期间和来源错误。
| Layer数据层 | Typical fields典型字段 | Agent useAgent 用途 |
|---|---|---|
| Calendar日历 | reportDate, timeOfDay, confirmed status | Schedule alerts, prefetch context, open an event window安排提醒、预取背景、开启事件窗口 |
| Consensus estimates一致预期 | EPS, revenue, low/high, analyst count, as-of time | Set the market expectation before release记录发布前的市场预期 |
| Reported results实际结果 | actual EPS, actual revenue, period end, currency | Measure the released result for the correct fiscal period衡量正确财政期间的实际结果 |
| Surprise | difference, percentage, provider formula, estimate snapshot | Detect beats and misses without losing denominator context识别 Beat/Miss,同时保留分母语义 |
| Narrative叙述 | release, prepared remarks, Q&A, guidance, speaker | Explain drivers, management language, and outlook解释驱动因素、管理层表达与展望 |
| Primary evidence第一方证据 | investor-relations URL, accession number, filing, exhibit | Verify material claims and preserve citations验证重要结论并保留引用 |
Evaluation criteria for an agent-ready earnings APIAgent 可用的 Earnings API 选型指标
- Coverage: exchanges, countries, symbols, history depth, and delisted companies.覆盖:交易所、国家、Symbol、历史深度与退市公司。
- Event quality: predicted versus confirmed dates, before/after market labels, timezone, and reschedules.事件质量:预测/确认日期、盘前/盘后、时区与改期。
- Estimate quality: source methodology, analyst count, ranges, revisions, and as-of timestamps.预期质量:来源方法、分析师数量、区间、修订与 As-of 时间。
- Result semantics: GAAP versus adjusted EPS, diluted versus basic, revenue unit, and fiscal period.结果语义:GAAP/Adjusted EPS、Diluted/Basic、Revenue 单位与财政期间。
- Freshness: calendar refresh cadence, post-release latency, correction handling, and webhooks or polling.新鲜度:日历刷新频率、发布后延迟、修正处理以及 Webhook/轮询。
- Evidence: release, transcript, or filing URLs and enough metadata to reproduce an answer.证据:Release、Transcript 或 Filing URL,以及可复现答案的元数据。
Best earnings APIs compared最佳 Earnings API 对比
| Option选项 | Best fit最适场景 | Documented strengths文档能力 | Validate before launch上线前验证 |
|---|---|---|---|
| FMP Stable API | One financial-data stack单一金融数据栈 | Calendar; symbol earnings; actual and estimated EPS/revenue; surprise bulk; transcripts; statementsCalendar;按 Symbol 查询;EPS/Revenue 实际与预期;Surprise Bulk;Transcript;报表 | Plan entitlements, regional coverage, transcript availability, exact update latency套餐权限、地区覆盖、Transcript 可用性与准确更新延迟 |
| Finnhub | Event and market-data workflows事件与市场数据工作流 | Date windows, optional symbol, international flag, before/after market, EPS and revenue actuals/estimates日期区间、可选 Symbol、国际市场、盘前/盘后、EPS 与 Revenue 实际/预期 | Historical depth by plan, estimate methodology, corrections, transcript access各套餐历史深度、预期方法、修正与 Transcript 权限 |
| Alpha Vantage | Simple prototypes and EPS history简单原型与 EPS 历史 | EARNINGS JSON for annual/quarterly EPS, estimates and surprise; CSV calendar for 3/6/12-month horizonsEARNINGS JSON 提供年度/季度 EPS、预期与 Surprise;CSV Calendar 支持 3/6/12 个月 | CSV ingestion, rate limits, revenue requirements, global identifiers, production throughputCSV 采集、限额、Revenue 需求、全球标识与生产吞吐 |
| EODHD | Global symbols and estimate trends全球 Symbol 与预期趋势 | Historical/upcoming calendar, exchange-qualified symbols, EPS actual/estimate, report timing, trend ranges and revisions历史/未来 Calendar、带交易所 Symbol、EPS 实际/预期、报告时段、趋势区间与修订 | Null-field behavior, symbol omissions, batching, entitlement and market-specific latency空字段行为、Symbol 省略、批处理、权限与各市场延迟 |
| SEC EDGAR | Primary-source verification第一方来源验证 | Company submissions, 8-K/10-Q/10-K evidence, exhibits, accession identity, XBRL facts公司 Submissions、8-K/10-Q/10-K 证据、附件、Accession 身份与 XBRL Facts | Not a consensus calendar; you own filing retrieval, parsing, caching, and fair access不是 Consensus Calendar;需自行处理 Filing 获取、解析、缓存与公平访问 |
Run a representative bake-off. Include a confirmed event, a rescheduled event, a company with a non-calendar fiscal year, a negative EPS estimate, a zero estimate, an ADR, a dual listing, and a result later corrected by the provider.
用代表性样本实测。至少包含已确认事件、改期事件、非自然年公司、负 EPS 预期、零预期、ADR、双重上市,以及供应商后来修正的结果。
Provider notes: where each option wins供应商详解:各自真正擅长什么
FMP's Stable documentation places earnings calendars, symbol-level results, transcripts, and bulk surprise data beside statements and company data. That reduces joins, but source URLs, regional depth, and latency still require testing.
FMP Stable 文档把 Earnings Calendar、按 Symbol 的结果、Transcript 和 Surprise Bulk 与报表及公司数据放在同一栈中,能减少连接,但来源 URL、地区深度和延迟仍需实测。
The documented calendar response includes bmo, amc, and dmh timing plus EPS and revenue fields. That is useful for scheduling, but a date remains provisional unless confirmation semantics say otherwise.
其 Calendar 响应记录 bmo、amc、dmh 时段,并提供 EPS/Revenue 字段,适合排程;但在确认语义明确前,日期仍应视为可能变化。
EARNINGS returns annual and quarterly EPS history with estimates and surprise metrics. EARNINGS_CALENDAR returns CSV over 3-, 6-, or 12-month horizons. It is easy to prototype but narrower than a full earnings evidence stack.
EARNINGS 返回年度与季度 EPS 历史、预期和 Surprise;EARNINGS_CALENDAR 以 CSV 返回 3/6/12 个月范围。适合原型,但不是完整证据栈。
The Trends API documents average, low, high, analyst count, growth, 7/30/60/90-day EPS trend points, and revision counts. These fields help an agent explain how expectations changed—not only whether a company beat.
Trends API 文档提供平均、低、高、分析师数量、增长、7/30/60/90 天 EPS 趋势点及修订数量,让 Agent 能解释预期如何变化,而不只是是否 Beat。
Reference architecture for an earnings analysis agent财报分析 Agent 参考架构
Map user input to an exchange-qualified symbol, legal entity, CIK where applicable, currency, and primary listing.
将用户输入映射为带交易所的 Symbol、法定实体、适用的 CIK、币种和主要上市地。
Store predicted and confirmed announcement times, timezone, status, and every observed reschedule.
保存预测与确认的公告时间、时区、状态以及每次观测到的改期。
Persist EPS/revenue consensus, ranges, analyst counts, source, and as-of time before results arrive.
在结果发布前持久化 EPS/Revenue Consensus、区间、分析师数量、来源和 As-of 时间。
Capture actual values, fiscal period, GAAP/adjusted basis, currency, units, provider timestamp, and correction version.
采集实际值、财政期间、GAAP/Adjusted 口径、币种、单位、供应商时间戳和修正版本。
Join the release, guidance, prepared remarks, Q&A, SEC filing, exhibits, and source URLs without merging their authority levels.
关联 Earnings Release、Guidance、Prepared Remarks、Q&A、SEC Filing、附件和来源 URL,但不要混淆它们的权威等级。
Compare only compatible periods and definitions, then return the summary with the exact estimate snapshot and evidence bundle.
仅比较兼容的期间和定义,再把摘要、精确预期快照与证据包一起返回。
Step-by-step: build a normalized earnings event分步实现:构建标准化 Earnings Event
FMP's Stable API is a useful implementation example because calendar and symbol-level earnings use the same authentication pattern. Keep the API key in a server-side secret and query only the window your scheduler needs.
FMP Stable API 适合作为实现示例,因为 Calendar 与按 Symbol 的 Earnings 使用相同认证方式。API Key 应只保存在服务端,并只查询调度器需要的日期窗口。
curl --get "https://financialmodelingprep.com/stable/earnings-calendar" \
--header "apikey: YOUR_API_KEY" \
--data-urlencode "from=2026-07-27" \
--data-urlencode "to=2026-07-31"import hashlib
import json
import os
from datetime import datetime, timezone
from decimal import Decimal, InvalidOperation
import requests
BASE = "https://financialmodelingprep.com/stable"
HEADERS = {"apikey": os.environ["FMP_API_KEY"]}
response = requests.get(
f"{BASE}/earnings-calendar",
headers=HEADERS,
params={"from": "2026-07-27", "to": "2026-07-31"},
timeout=30,
)
response.raise_for_status()
records = response.json()
def number(value):
if value is None or value == "":
return None
try:
return Decimal(str(value))
except InvalidOperation:
return None
def surprise(actual, estimate):
actual, estimate = number(actual), number(estimate)
if actual is None or estimate is None or estimate == 0:
return {"difference": None, "percent": None}
return {
"difference": str(actual - estimate),
"percent": str((actual - estimate) / abs(estimate) * 100),
}
normalized = []
for row in records:
actual = row.get("epsActual")
estimate = row.get("epsEstimated") or row.get("epsEstimate")
raw = json.dumps(row, sort_keys=True, separators=(",", ":"))
normalized.append({
"symbol": row.get("symbol"),
"reportDate": row.get("date"),
"fiscalDateEnding": row.get("fiscalDateEnding"),
"epsActual": actual,
"epsEstimate": estimate,
"revenueActual": row.get("revenueActual"),
"revenueEstimate": row.get("revenueEstimated"),
"surprise": surprise(actual, estimate),
"provider": "financial-modeling-prep",
"retrievedAt": datetime.now(timezone.utc).isoformat(),
"rawSha256": hashlib.sha256(raw.encode()).hexdigest(),
"raw": row,
})The fallback field names make the example resilient to common provider naming differences, but production code should validate the exact schema returned by your subscribed endpoint. Do not recompute a provider's published surprise percentage without documenting whether its denominator uses the estimate, absolute estimate, or another convention.
示例中的备用字段名用于适应常见命名差异,但生产代码仍应验证所订阅端点的准确 Schema。不要在未记录分母使用 Estimate、绝对值 Estimate 或其他规则的情况下,重新计算供应商发布的 Surprise 百分比。
Define the earnings evidence contract定义 Earnings 证据契约
| Field group字段组 | Required values必需值 | Why it matters为什么重要 |
|---|---|---|
| Identity身份 | symbol, exchange, issuer ID, CIK | Prevents ADR, dual-listing, and ticker-reuse mistakes避免 ADR、双重上市和 Ticker 复用错误 |
| Event事件 | reportDate, time, timezone, status, observedAt | Distinguishes predictions, confirmations, and reschedules区分预测、确认和改期 |
| Fiscal period财政期间 | FY, FQ, period start/end, provider label | Stops calendar-quarter assumptions避免按自然季度错误推断 |
| Estimate snapshot预期快照 | EPS/revenue average, low, high, analyst count, asOf | Makes consensus time-dependent and reproducible让 Consensus 的时间依赖性可复现 |
| Actual result实际结果 | value, GAAP/adjusted, basic/diluted, currency, unit | Prevents semantically invalid comparisons避免语义不一致的比较 |
| Provenance来源 | provider, endpoint, retrievedAt, source URLs, raw hash, version | Supports corrections, audit, and exact citations支持修正、审计与精确引用 |
Earnings surprise logic is more fragile than it looksEarnings Surprise 逻辑比看起来更脆弱
A beat or miss is meaningful only when actual and estimate share the same company, fiscal period, accounting basis, currency, unit, and estimate snapshot. Negative or zero EPS estimates make percentage surprise particularly easy to misread.
只有当 Actual 与 Estimate 具有相同公司、财政期间、会计口径、币种、单位和预期快照时,Beat/Miss 才有意义。负数或零 EPS Estimate 尤其容易让 Surprise 百分比被误读。
Store the published difference and percentage alongside the documented formula. Recompute only for cross-provider normalization.
保存供应商发布的 Difference、Percentage 和文档公式;只有跨供应商标准化时才重算。
A later estimate revision must not rewrite the market expectation the company actually faced at announcement time.
后续预期修订不应改写公司发布结果时真正面对的市场预期。
GAAP versus adjusted and basic versus diluted EPS are separate metrics, not interchangeable labels.
GAAP/Adjusted、Basic/Diluted EPS 是不同指标,不能只当成可互换标签。
Convert only after confirming currency, scale, period, and whether values are reported or provider-normalized.
确认币种、数量级、期间以及是否由供应商标准化之后才能换算。
Validation checklist before the agent can answerAgent 回答前的验证清单
- The exchange-qualified symbol and issuer identity match the intended company.带交易所的 Symbol 与发行人身份匹配目标公司。
- Predicted, confirmed, rescheduled, and actual publication times remain separate versions.预测、确认、改期和实际发布时间保留为不同版本。
- Fiscal year, fiscal quarter, period end, and report date are not inferred from one another.财政年度、财政季度、Period End 和 Report Date 不互相推断。
- Actual and estimate use the same GAAP/adjusted and basic/diluted definition.Actual 与 Estimate 使用相同 GAAP/Adjusted 和 Basic/Diluted 定义。
- Revenue values share currency and scale, and null estimates do not become zero.Revenue 具有相同币种与数量级,空 Estimate 不被转换成零。
- The consensus snapshot includes provider, analyst count when available, and as-of time.Consensus 快照包含供应商、可用的分析师数量和 As-of 时间。
- Corrections create a new version and trigger re-evaluation of affected claims.修正生成新版本,并触发对受影响结论的重新评估。
- Material claims link to a release, transcript passage, or SEC filing—not only the normalized API row.重要结论链接到 Release、Transcript 段落或 SEC Filing,而不仅是标准化 API 行。
Security, cost, and latency controls安全、成本与延迟控制
Keep provider tokens in a secret manager. Never expose them in browser JavaScript, logs, screenshots, or prompts.
供应商 Token 应放入 Secret Manager,不能出现在浏览器 JavaScript、日志、截图或 Prompt 中。
Refresh future calendars slowly, then poll a bounded symbol set near confirmed event windows.
低频刷新未来 Calendar,只在已确认事件窗口附近轮询受控的 Symbol 集合。
Cache estimate snapshots and provider payloads by symbol, period, and observed timestamp instead of overwriting.
按 Symbol、期间和观测时间缓存预期快照与供应商载荷,不要直接覆盖。
Retrieve only relevant transcript sections and source records after structured validation has narrowed the event.
先用结构化验证缩小事件范围,再只检索相关 Transcript 章节和来源记录。
Common failure modes and fixes常见失败模式与修复方式
| Failure失败 | Cause原因 | Fix修复 |
|---|---|---|
| Alert fires on the wrong day提醒日期错误 | Predicted date was treated as confirmed or timezone was dropped把预测日期当成确认日期,或丢失时区 | Version event status and store timezone plus market-session label给事件状态建版本,并保存时区和交易时段标签 |
| False beat or miss错误 Beat/Miss | Different fiscal period, EPS basis, or estimate snapshot财政期间、EPS 口径或预期快照不同 | Compare only after the evidence contract matches on every semantic key只有证据契约的所有语义键一致后才比较 |
| Infinite surprise percentageSurprise 百分比无穷大 | Estimate is zero or missingEstimate 为零或缺失 | Return null percentage and preserve the absolute differencePercentage 返回 Null,并保留绝对 Difference |
| Historical answer changes silently历史答案静默变化 | Provider corrections overwrote old rows供应商修正覆盖旧记录 | Use append-only snapshots, content hashes, and correction versions使用只追加快照、内容哈希和修正版本 |
| Transcript is cited as the reported number把 Transcript 当成实际数值来源 | Narrative and structured result layers were merged叙述层与结构化结果层被合并 | Use structured actuals for numbers and transcript passages for explanation数值使用结构化 Actual,解释使用 Transcript 段落 |
| Duplicate issuer events发行人事件重复 | ADR, dual listing, or provider-specific symbols were not mappedADR、双重上市或供应商 Symbol 未映射 | Separate issuer, security, listing, and provider identifiers分离发行人、证券、上市地和供应商标识 |
Transcripts and SEC filings are evidence layers—not substitutesTranscript 与 SEC Filing 是证据层,不是替代品
An earnings transcript explains management's narrative and analyst questions. An 8-K exhibit may contain the earnings release; a 10-Q or 10-K carries the filed financial statements and disclosures. Neither one supplies a time-stamped consensus estimate. The reliable pattern is to freeze the estimate, ingest the reported result, then attach narrative and primary evidence.
Earnings Transcript 解释管理层叙述与分析师问答;8-K 附件可能包含 Earnings Release;10-Q/10-K 提供已提交财务报表和披露。但它们都不提供带时间戳的 Consensus Estimate。可靠模式是先冻结预期,再采集实际结果,最后关联叙述与第一方证据。
QVeris implementation pattern: Discover → Inspect → CallQVeris 实现模式:Discover → Inspect → Call
QVeris can sit above provider-specific earnings endpoints as an agent-facing discovery and routing layer. The agent searches for the exact capability—calendar, estimates, actuals, surprise, transcript, or filing—inspects its schema and limits, then calls it with bounded inputs. The response must still preserve the underlying provider and evidence URLs.
QVeris 可以位于各供应商 Earnings 端点之上,承担面向 Agent 的发现与路由。Agent 搜索精确能力——Calendar、Estimates、Actuals、Surprise、Transcript 或 Filing——检查 Schema 与限额,再用受控输入调用。响应仍须保留底层供应商与证据 URL。
Find a capability by data layer and market coverage, not by a generic “earnings” label.
按数据层和市场覆盖寻找能力,而不是只搜索笼统的“Earnings”。
Check symbol format, fiscal-period semantics, timestamps, estimate methodology, schema, entitlements, and source fields.
检查 Symbol 格式、财政期间语义、时间戳、预期方法、Schema、权限和来源字段。
Invoke the smallest date or symbol scope, validate the payload, and write an immutable evidence record.
调用最小日期或 Symbol 范围,验证载荷,并写入不可变证据记录。
Frequently asked questions常见问题
Which earnings API is best for AI agents?哪种 Earnings API 最适合 AI Agent?
FMP is a strong all-in-one choice, Finnhub is useful for event timing and estimate fields, Alpha Vantage is simple for prototypes, and EODHD is useful for global calendars and estimate trends. Test each against your own coverage and freshness requirements.
FMP 适合一体化数据栈;Finnhub 适合事件时段与预期字段;Alpha Vantage 适合简单原型;EODHD 适合全球日历与预期趋势。最终应按自己的覆盖和新鲜度需求实测。
What is the difference between a calendar and earnings history?Earnings Calendar 与历史结果有什么区别?
A calendar predicts or records an announcement event. Earnings history stores reported results for fiscal periods. Event date and fiscal period are separate fields.
Calendar 预测或记录公告事件;Earnings History 保存各财政期间的实际结果。事件日期与财政期间是不同字段。
How should an agent calculate earnings surprise?Agent 应如何计算 Earnings Surprise?
Prefer the provider's documented value. If you calculate it, preserve actual, estimate, formula, denominator policy, currency, and as-of timestamp. Zero or missing estimates need explicit handling.
优先使用供应商文档值。自行计算时保留 Actual、Estimate、公式、分母规则、币种和 As-of 时间;零或空 Estimate 必须显式处理。
Are transcripts the same as earnings results?Transcript 与 Earnings Result 是同一种数据吗?
No. Transcripts contain management commentary and questions. Reported EPS and revenue should come from a structured results source and be verified against a release or filing when material.
不是。Transcript 包含管理层表达与问答;EPS 和 Revenue 实际值应来自结构化结果源,重要时还应与 Release 或 Filing 核验。
Why do earnings dates change?为什么财报日期会变化?
Companies can confirm or reschedule announcements, and providers can revise predicted dates. Store confirmation status and every observed update.
公司可能确认或改期,供应商也可能修订预测日期。应保存确认状态与每次观测更新。
How should fiscal quarters be normalized?如何标准化财政季度?
Store fiscal year, fiscal quarter, period end, report date, and provider labels separately. Never derive the fiscal quarter from calendar month alone.
分别保存财政年度、财政季度、Period End、Report Date 与供应商标签,不要只按自然月份推导财政季度。
Should an agent trust consensus estimates as facts?Agent 应把 Consensus Estimate 当作事实吗?
No. Consensus is a time-dependent aggregate. Store value, analyst count when available, provider, methodology notes, and as-of timestamp.
不应。Consensus 是随时间变化的聚合值,应保存数值、可用的分析师数量、供应商、方法说明和 As-of 时间。
Where does QVeris fit?QVeris 位于哪一层?
QVeris helps an agent discover, inspect, and call provider tools. The data provider, earnings release, transcript, or SEC filing remains the source of record.
QVeris 帮助 Agent 发现、检查和调用供应商工具;数据供应商、Earnings Release、Transcript 或 SEC Filing 仍是记录源。
Official sources and next steps官方资料与下一步
API schemas, limits, plan entitlements, and update cycles can change. Verify the current official documentation and test representative symbols before production use.
API Schema、限额、套餐权限和更新周期可能变化。生产使用前,请核对当前官方文档并测试代表性 Symbol。
Freeze expectations before explaining the result先冻结预期,再解释结果
Use QVeris to discover and inspect agent-ready earnings tools, then preserve provider identity, estimate snapshots, fiscal semantics, and primary evidence throughout the workflow.
用 QVeris 发现并检查适合 Agent 的财报工具,并在整个工作流中持续保留供应商身份、预期快照、财政语义与第一方证据。
Start with QVeris开始使用 QVeris