Python · requests · pandas

Earnings calls in Python, three lines.

requests.get() and you have structured earnings data: transcripts, speaker segments and search results as JSON that drops straight into pandas. No SDK to install, no scraping to maintain.

  • Plain REST - requests, httpx or aiohttp, no SDK required
  • Flat JSON that loads into pandas DataFrames without wrangling
  • Cursor pagination for backfills and incremental syncs that resume cleanly
  • Copy-paste examples for search, transcripts and the calendar in the docs
earnings_api.py python
import requests

API = "https://earningscalls.dev/api/v1"
headers = {"X-API-Key": "ect_your_key_here"}

# Search across all transcripts
hits = requests.get(f"{API}/search/",
    params={"q": '"guidance raised"', "limit": 10},
    headers=headers).json()

# Full transcript with speaker segments
call_id = hits["data"][0]["earnings_call_id"]
transcript = requests.get(f"{API}/transcripts/{call_id}",
    headers=headers).json()

# Into pandas for analysis
import pandas as pd
segments = pd.DataFrame(transcript["data"]["segments"])
print(segments.groupby("speaker_type").size())
Since 2020
5+ years deep - new calls live within minutes of the call
247,000+
Earnings call transcripts, speaker-tagged & searchable
12,000+
Companies across 70 countries & all 11 GICS sectors

Python-first, like the rest of your stack

Four primitives that turn raw earnings calls into a clean dataset your strategy can consume.

01

Speaker-segmented

Every segment pre-tagged. Five categories with verified counts: executive (826k), analyst (470k), operator (208k), attendee (33k), shareholder (4k). 93% carry the speaker's name.

GET /api/v1/speakers/:id
02

Full-text archive search

Sweep the live archive for phrases like "margin pressure" in one query. Boolean operators, exact phrases, ticker filters across global markets.

GET /api/v1/search?q=…
03

Cross-company aggregate

Scan up to 500 tickers in a single request. Per-ticker counts, sector breakdown, last-match date — screen a global universe in one call.

GET /api/v1/search/by_ticker
04

Cursor-based polling

Incremental sync via since / after_id. Re-runnable, idempotent. New calls land within hours of the wire and flow straight into your pipeline.

GET /api/v1/transcripts/recent

Run a real live query.

Change the ticker, click Run, see the actual response.

Select a test phrase
GET /api/v1/search?q=agentic AI&type=speakers&speaker_type=Executive&ticker=NVDA&limit=5
API online · ~45ms
API Pricing

Honest Pricing. No Surprises.

Read for free. Automate when you're ready. Cancel anytime.

Pro
$ 24.99 /month

Full access for builders and traders

  • ✓ Read earning call transcripts
  • ✓ 5,000 requests/month
  • ✓ Personal use - up to 50 MAU
  • ✓ Full transcript text
  • ✓ Speaker segments & roles
  • ✓ Full-text search
  • ✓ All endpoints unlocked
  • ✓ 20 requests/minute
  • ✓ Email support
  • ✓ Instant API key after checkout
Enterprise
$ 299 /month

High-volume production workloads

  • ✓ Read earning call transcripts
  • ✓ 100,000 requests/month
  • ✓ Commercial use - up to 10,000 MAU
  • ✓ Everything in Ultra
  • ✓ 120 requests/minute
  • ✓ Dedicated support channel
  • ✓ Custom integrations
  • ✓ Bulk data export
  • ✓ Compliance documentation
  • ✓ Priority feature requests

Python usage - common questions

Coverage, query semantics, and what the data supports.

Is there an official Python SDK?

You don't need one - the API is plain REST with predictable JSON, so requests or httpx is all it takes. The docs include copy-paste Python examples for every endpoint group.

How do I keep a local dataset in sync?

Poll /transcripts/recent with cursor pagination - it returns transcripts by ingest time, so a cron job picks up exactly what's new. Ideal for vector stores and research databases.

Does the JSON work with pandas?

Yes - responses are flat arrays of records. pd.DataFrame(response["data"]) is usually the whole ETL. Speaker segments, search hits and calendar rows all follow that shape.

What are the rate limits for batch jobs?

Pro: 20 req/min and 5,000/month. Ultra: 60/min, 25,000/month. Enterprise: 120/min, 100,000/month. Details on the earnings call API overview.

Testimonials

Trusted by analysts and research teams.

What research professionals say about the data and the API.

“Excellent service. Comprehensive coverage of the sectors I wanted and the API is very easy to work with. Highly recommend.”
Jim Analyst at Telemetry Research
“Transcripts are accurate, and the API is very user friendly.”
Subash Analyst at inve.money
“Connecting Claude through MCP to analyze earnings transcripts has never been easier.”
Lee Analyst at Retail Insider
New Products

Two more tools for traders and investors

From the team that brought you the Earnings Calls API - same clean data, same fair pricing.

StockMarketScan logo

StockMarketScan.com

Stock screeners & email alert system

Pre-configured, industry-standard stock screeners - near real-time, refreshed every 5 minutes, no setup required.

  • 24 screeners
  • 5-minute scans
  • Watchlists
  • AI chat analysis
  • API & MCP
Starting from just $14.99/mo Visit website →
OptionsBell logo

OptionsBell.com

Unusual options activity alerts

Scans options activity across all US stocks - immediate email alerts the moment institutional-sized trades hit your watchlist.

  • All US stocks
  • 10 custom alerts
  • 5-minute scans
  • Email alerts
  • API & MCP
Starting from just $24.99/mo Visit website →