# EarningsCalls.dev - Full Reference > Earnings call transcripts for 12,000+ publicly traded companies across 70 countries. Read transcripts free on the website, or access them via a hosted MCP (Model Context Protocol) server for AI assistants and a low-cost REST API for automated analysis. ## Overview EarningsCalls.dev is a financial data platform that provides: 1. **Free transcript reading** - Anyone can browse and read full earnings call transcripts with speaker segments on the website at no cost. No account required. 2. **Hosted MCP server** - AI assistants (Claude Desktop, claude.ai, Claude Code, Cursor, and any MCP-capable client) can query transcripts natively via one connector URL. See the MCP section below. 3. **Low-cost REST API** - Developers, traders, and AI pipelines can access the same data programmatically. Plans start at $24.99/month for 5,000 requests. 4. **Earnings calendar** - Interactive calendar showing upcoming and past earnings calls, filterable by sector and company. 5. **Distribution on two channels** - Same API available directly at earningscalls.dev or via the RapidAPI marketplace. ## Database Coverage - **246,000+ earnings call transcripts** from **12,000+ companies** across **70 countries** and **170+ exchanges** - **History**: 2020 to present (5+ years); new calls land within minutes of the call ending - **Exchanges**: NYSE, NASDAQ, plus major international venues (LSE, Euronext, TSX, BSE/NSE, BIT, ASX, TSE, HKEX, …) - **Sectors**: All 11 GICS sectors (Information Technology, Health Care, Financials, Energy, Consumer Discretionary, Consumer Staples, Industrials, Materials, Real Estate, Utilities, Communication Services) - **Data per transcript**: Company name, ticker, event date, sector, industry, exchange, country, currency, full transcript text, speaker segments with roles, fiscal year/quarter - **Speaker segments**: 11M+ segments; each tagged Executive / Analyst / Operator / Attendee / Shareholder with speaker name (~93% named) - **Polling-friendly**: dedicated `/api/v1/transcripts/recent` endpoint with cursor pagination so ETL pipelines can pull only newly-added rows since the last poll ## MCP Server (Model Context Protocol) A hosted MCP server lets AI assistants search and read earnings call transcripts natively — no scraping, no copy-paste: - **What it exposes**: ~13 tools (search transcripts, get a transcript, speaker segments, calls by ticker, latest call for a ticker, upcoming earnings, dataset stats, company lookup, sectors/industries) - **Connect**: generate a personal connector URL in the dashboard (https://earningscalls.dev/dashboard → Connectors → Generate) — it looks like `https://earningscalls.dev/u/mct_xxxx/mcp` (token embedded, no separate API-key header) - **Claude Desktop / claude.ai**: Settings → Connectors → Add custom connector → paste the URL - **Claude Code**: `claude mcp add --transport http earningscalls "https://earningscalls.dev/u/mct_xxxx/mcp"` - **Cursor and other MCP clients**: add the connector URL as an HTTP/streamable MCP server - **Guide**: https://earningscalls.dev/mcp ## Use Cases ### For AI Agents and LLMs - Feed earnings transcripts directly into Claude, GPT, or other LLMs for analysis - Extract sentiment, guidance changes, and key metrics from CEO/CFO remarks - Build automated research pipelines that process new transcripts as they arrive - Search for specific topics across 246,000+ transcripts (e.g., "margin pressure", "guidance raised", "AI investment") ### For Developers and Traders - Build trading bots that react to earnings call content - Create sentiment dashboards from speaker segments - Backtest strategies using historical transcript data - Screen for keywords across the full transcript archive ### For Startups and Products - Add earnings intelligence features to financial apps - Power research platforms with structured transcript data - Build client-facing analytics with speaker-level breakdowns ## API Reference ### Authentication Two equivalent ways to authenticate, depending on where you signed up: **Direct (signed up on earningscalls.dev):** ``` X-API-Key: YOUR_KEY ``` or ``` ?api_key=YOUR_KEY ``` Base URL: `https://earningscalls.dev/api/v1` **RapidAPI (signed up on the RapidAPI marketplace):** ``` X-RapidAPI-Key: YOUR_KEY X-RapidAPI-Host: earnings-call-transcripts1.p.rapidapi.com ``` Base URL: `https://earnings-call-transcripts1.p.rapidapi.com/api/v1` The same endpoints, schemas, and tier limits work on both channels. ### Endpoints #### Earnings Calls - `GET /api/v1/earnings` - List earnings calls with filters - Query params: `ticker`, `sector`, `industry`, `date_from`, `date_to`, `limit`, `offset` - `GET /api/v1/earnings/:id` - Get single earnings call details - `GET /api/v1/earnings/latest` - Most recent earnings calls by event date - Query params: `limit` (max 50), `sector` - `GET /api/v1/earnings/upcoming` - Upcoming earnings calls - Query params: `days_ahead`, `limit`, `sector` #### Companies - `GET /api/v1/companies` - List / search companies (paginated) - Query params: `search`, `sector`, `industry`, `exchange`, `sort`, `page`, `limit` - `GET /api/v1/companies/ticker/:ticker` - Company + every call by ticker - `GET /api/v1/companies/ticker/:ticker/latest` - Latest call only for a ticker - `GET /api/v1/companies/:name` - Company by name match #### Transcripts - `GET /api/v1/transcripts/recent` - **Recently added transcripts** ordered by DB-insertion time, with cursor-based pagination — designed for ETL polling - Query params: `since` (ISO 8601), `after_id` (cursor), `event_since`, `limit` (max 100, default 50) - Returns metadata only; clients fetch full text via `/transcripts/:id` - Available on all tiers including Free - `GET /api/v1/transcripts/:earningsId` - Full transcript text (Pro+) - `GET /api/v1/transcripts/:earningsId/summary` - Transcript summary / preview (Free) - `GET /api/v1/transcripts/:earningsId/components` - Structured transcript components (Pro+) #### Speakers (Pro tier and above) - `GET /api/v1/speakers/:earningsId` - Speaker segments with roles and text - Query params: `role` filter (Executive/Analyst/Operator) #### Search (Pro tier and above) - `GET /api/v1/search?q=QUERY` - Full-text search across all transcripts - Minimum 2 characters - Returns matching segments with context #### Metadata - `GET /api/v1/sectors` - List all sectors with call counts - `GET /api/v1/industries` - List all industries - `GET /api/v1/exchanges` - List all exchanges - `GET /api/v1/event-types` - List all earnings event types - `GET /api/v1/stats` - Dataset totals, date range, and version info - `GET /api/v1/me` - Authenticated user info (tier, usage, limits) ### Response Format All responses return JSON with a consistent structure: ```json { "data": [ ... ], "pagination": { "total": 32000, "limit": 20, "offset": 0, "has_more": true } } ``` Cursor-paginated endpoints (`/transcripts/recent`) return: ```json { "data": [ ... ], "count": 50, "pagination": { "limit": 50, "has_more": true, "next_since": "2026-05-29T17:51:59.338Z", "next_after_id": 12345 } } ``` ### Rate Limits Response headers: - `X-RateLimit-Limit` - Monthly request allowance - `X-RateLimit-Remaining` - Requests remaining this month ## Pricing | Tier | Price | Requests/Month | Full Transcripts | Speaker Segments | Search | |------|-------|----------------|------------------|------------------|--------| | Free | $0 | 50 | Preview only | No | No | | Pro | $24.99/mo | 5,000 | Yes | Yes | Yes | | Ultra | $39.99/mo | 25,000 | Yes | Yes | Yes | | Enterprise | $299/mo | 100,000 | Yes | Yes | Yes | ## Managing Your Subscription Two paths depending on where you signed up: - **Direct (earningscalls.dev)**: Manage from your `/dashboard` — view your API key, see usage, cancel. Billing runs through Paddle, issued in the name of Dreaverr Digital Solutions LLP. To switch tier, cancel the current plan first, then subscribe to the new one on the pricing section — the new tier activates immediately and the old one runs in parallel until period end (no double charge). - **RapidAPI**: Manage from your RapidAPI account → Subscribe / Switch Plan / Cancel from the API page. Billing and invoices are handled by RapidAPI directly. ## Example: Python (direct API) ```python import requests response = requests.get( "https://earningscalls.dev/api/v1/search", headers={"X-API-Key": "YOUR_KEY"}, params={"q": "NVIDIA guidance"} ) data = response.json() ``` ## Example: JavaScript/Node.js (RapidAPI) ```javascript const response = await fetch( "https://earnings-call-transcripts1.p.rapidapi.com/api/v1/earnings/latest?limit=5", { headers: { "X-RapidAPI-Key": "YOUR_KEY", "X-RapidAPI-Host": "earnings-call-transcripts1.p.rapidapi.com" } } ); const data = await response.json(); ``` ## Example: Polling for new transcripts ```python import requests since = None while True: params = {"limit": 100} if since: params["since"] = since r = requests.get( "https://earningscalls.dev/api/v1/transcripts/recent", headers={"X-API-Key": "YOUR_KEY"}, params=params ).json() for row in r["data"]: process(row) since = r["pagination"]["next_since"] or since if not r["pagination"]["has_more"]: break ``` ## Links - Website: https://earningscalls.dev - API Documentation: https://earningscalls.dev/docs - OpenAPI 3.0 Spec: https://earningscalls.dev/openapi.json - MCP connector guide: https://earningscalls.dev/mcp - Swagger UI: https://earningscalls.dev/swagger - RapidAPI Marketplace: https://rapidapi.com/earningscallsdev/api/earnings-call-transcripts1 - Contact: contact@earningscalls.dev ## Company earningscalls.dev is operated by DREAVERR Digital Solutions LLP.