earningscalls-dev Search API
Full-text search (Pro/Enterprise)
Full-text search (Pro/Enterprise)
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/earningscalls-dev:earningscalls-dev-search-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Earnings Call Transcripts Search API
description: Access our growing archive of earnings call transcripts from publicly traded companies across 70+ countries and 175+ exchanges. Full-text search, speaker segments, and structured data.
version: 1.0.0
contact:
name: API Support
url: https://earningscalls.dev
servers:
- url: https://earningscalls.dev
description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Search
description: Full-text search (Pro/Enterprise)
paths:
/api/v1/search/:
get:
summary: Full-Text Search
tags:
- Search
description: 'Search across 17K+ earnings calls. Supports Google-style operators in the q parameter: "exact phrase" for phrase match, AND/OR for boolean, -word for negation. Example: q=guidance OR outlook -macro. Returns transcripts, speaker segments, or company names. Pro/Enterprise only.'
parameters:
- schema:
type: string
in: query
name: q
required: true
description: Search query. Supports "exact phrase", word AND word, word OR word, -word (negation).
- schema:
type: string
enum:
- all
- transcripts
- speakers
- companies
default: all
in: query
name: type
required: false
description: Search scope
- schema:
type: string
in: query
name: speaker_type
required: false
description: 'When type=speakers: filter to a specific speaker role (executive, analyst, operator, attendee, shareholder, unknown).'
- schema:
type: string
in: query
name: ticker
required: false
description: Filter results to a specific ticker (case-insensitive). Applies to transcripts and speakers scopes.
- schema:
type: string
in: query
name: tickers
required: false
description: Comma-separated tickers to filter to (e.g. "AAPL,MSFT"). Suffixed forms like "AAPL:US" work too. Combines with ticker; applies to transcripts and speakers scopes.
- schema:
type: string
enum:
- date
- relevance
default: date
in: query
name: sort
required: false
description: Result order. Default "date" keeps the legacy order; "relevance" sorts by match rank descending.
- schema:
type: string
in: query
name: sector
required: false
description: Filter results by sector
- schema:
type: string
in: query
name: industry
required: false
description: Filter results by industry
- schema:
type: string
format: date
in: query
name: date_from
required: false
description: Filter from date
- schema:
type: string
format: date
in: query
name: date_to
required: false
description: Filter to date
- schema:
type: integer
minimum: 1
default: 1
in: query
name: page
required: false
- schema:
type: integer
minimum: 1
maximum: 100
default: 20
in: query
name: limit
required: false
responses:
'200':
description: Default Response
operationId: getApiV1Search
x-operation-id-source: derived
/api/v1/search/by_ticker:
get:
summary: Aggregate Search by Ticker
tags:
- Search
description: Search transcripts and return per-ticker aggregated counts (how many of a ticker's calls in the window mentioned the query). Optional ticker filter lets you scope to a known universe (e.g. Fortune 500). The `results` leaderboard is capped at `limit` (max 500), but `total_companies` and `total_calls` always reflect the full matching set independent of limit. Pro/Enterprise only.
parameters:
- schema:
type: string
in: query
name: q
required: true
description: Search query (required, 2+ chars)
- schema:
type: string
in: query
name: tickers
required: false
description: Comma-separated ticker list to scope the search (e.g. NVDA,MSFT,AAPL). Omit to scan all.
- schema:
type: string
in: query
name: sector
required: false
description: Filter by GICS sector
- schema:
type: string
in: query
name: industry
required: false
description: Filter by industry
- schema:
type: string
format: date
in: query
name: date_from
required: false
description: YYYY-MM-DD lower bound
- schema:
type: string
format: date
in: query
name: date_to
required: false
description: YYYY-MM-DD upper bound
- schema:
type: integer
minimum: 1
maximum: 500
default: 500
in: query
name: limit
required: false
responses:
'200':
description: Default Response
operationId: getApiV1SearchByTicker
x-operation-id-source: derived
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key obtained from the dashboard after registration