api-ninjas-com Earnings Call Transcript API

The Earnings Call Transcript API provides access to full transcripts of earnings calls for major companies every quarter.

Operations 5

GET /v1/earningstranscript Get Earnings Call Transcript #
GET /v1/earningstranscriptlist List All Earnings Call Transcripts #
GET /v1/earningstranscriptsearch Search for available earnings call transcripts by ticker, CIK, date, or date… #
GET /v1/earningstranscriptspeaker Search earnings-call speakers, or get one speaker's profile and appearance… #
GET /v1/earningstranscriptparticipants List the executives and analysts who appeared on a company's earnings calls #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/api-ninjas-com:api-ninjas-com-earnings-call-transcript-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

api-ninjas-com-earnings-call-transcript-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ninjas Earnings Call Transcript API
  description: 'Combined OpenAPI specification for every API Ninjas endpoint. Requests go to https://api.api-ninjas.com with an `X-Api-Key` header; get a free key at https://api-ninjas.com/register. Human-readable docs: https://api-ninjas.com/api. Index for LLMs: https://api-ninjas.com/llms.txt.'
  version: 1.0.0
  contact:
    name: API Ninjas
    url: https://api-ninjas.com
  license:
    name: Proprietary
servers:
- url: https://api.api-ninjas.com
  description: API Ninjas Production
security:
- ApiKeyAuth: []
tags:
- name: Earnings Call Transcript
  description: The Earnings Call Transcript API provides access to full transcripts of earnings calls for major companies every quarter.
paths:
  /v1/earningstranscript:
    get:
      summary: Get Earnings Call Transcript
      description: Returns the full text of one company's earnings call. Requires a `ticker` or `cik`; to find which calls exist first, use /earningstranscriptsearch. Choosing a `quarter` requires premium.
      operationId: getEarningsTranscript
      tags:
      - Earnings Call Transcript
      parameters:
      - name: ticker
        in: query
        required: false
        schema:
          type: string
        description: Company ticker symbol (e.g., AAPL). Either ticker or cik must be provided. Share classes and preferred shares can be written in any common form, e.g. BRK.B, BRK-B, BRK/B or BRKB, and BAC.PRL or BAC-PL. Non-US stocks take an exchange suffix (SHEL.L, 7203.T) or prefix (LON:SHEL).
      - name: cik
        in: query
        required: false
        schema:
          type: string
        description: Company Central Index Key (e.g., 320193). Either ticker or cik must be provided.
      - name: year
        in: query
        schema:
          type: integer
          format: int32
          minimum: 2000
        description: Earnings year (e.g., 2025). Must be a valid year between 2000 and the current year. If provided, quarter must also be provided. Premium only.
      - name: quarter
        in: query
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - 2
          - 3
          - 4
        description: Earnings quarter from Q1 to Q4. If provided, year must also be provided. Premium only.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EarningsTranscriptResponse'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
  /v1/earningstranscriptlist:
    get:
      summary: List All Earnings Call Transcripts
      description: Lists all available earnings call transcripts, paged with `limit` and `offset`. To filter by ticker, CIK or date use /earningstranscriptsearch; for the text of one call use /earningstranscript.
      operationId: listEarningsCallTranscripts
      tags:
      - Earnings Call Transcript
      parameters:
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
        description: Number of results to return. Default is unlimited - all results will be returned.
      - name: offset
        in: query
        schema:
          type: integer
          minimum: 0
          default: 0
        description: 'Number of results to skip for pagination. Default: 0.'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EarningsTranscriptsListResponse'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
  /v1/earningstranscriptsearch:
    get:
      summary: Search for available earnings call transcripts by ticker, CIK, date, or date…
      description: Finds which earnings call transcripts are available by ticker, CIK, date or date range, with paginated results. Returns the matching calls, not their text; read that from /earningstranscript.
      operationId: searchEarningsTranscripts
      tags:
      - Earnings Call Transcript
      parameters:
      - name: ticker
        in: query
        required: false
        schema:
          type: string
        description: Company ticker symbol (e.g., MSFT). At least one of ticker, cik, date, or start_date/end_date must be provided. Share classes and preferred shares can be written in any common form, e.g. BRK.B, BRK-B, BRK/B or BRKB, and BAC.PRL or BAC-PL. Non-US stocks take an exchange suffix (SHEL.L, 7203.T) or prefix (LON:SHEL).
      - name: cik
        in: query
        required: false
        schema:
          type: string
        description: Company Central Index Key (e.g., 789019). For US companies registered with the SEC only.
      - name: date
        in: query
        required: false
        schema:
          type: string
        description: Earnings call date in YYYY-MM-DD format (e.g., 2024-05-02). Mutually exclusive with start_date/end_date.
      - name: start_date
        in: query
        required: false
        schema:
          type: string
        description: Start of the earnings call date range (inclusive), YYYY-MM-DD. Must be paired with end_date. When ticker and cik are both omitted, the range cannot exceed 30 days.
      - name: end_date
        in: query
        required: false
        schema:
          type: string
        description: End of the earnings call date range (inclusive), YYYY-MM-DD. Must be paired with start_date.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 200
        description: Maximum number of results to return. Default 20; values above 200 are clamped to 200.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
        description: Number of results to skip for pagination. Default 0.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EarningsTranscriptSearchResponse'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
  /v1/earningstranscriptspeaker:
    get:
      summary: Search earnings-call speakers, or get one speaker's profile and appearance…
      description: Searches earnings-call speakers by name, company, analyst firm, role or type, or returns one speaker's profile, coverage and appearance history when `id` is given.
      operationId: getEarningsCallSpeaker
      tags:
      - Earnings Call Transcript
      parameters:
      - name: id
        in: query
        required: false
        schema:
          type: string
        description: Resolved speaker_id. When provided, the endpoint returns that single speaker's profile, per-company coverage, and appearance history (detail mode). Search filters are ignored in detail mode, except ticker/year/quarter (which filter the appearance list) and limit/offset (which paginate it).
      - name: name
        in: query
        required: false
        schema:
          type: string
        description: Substring match on the speaker's name (search mode).
      - name: company
        in: query
        required: false
        schema:
          type: string
        description: Substring match on an executive's primary company (search mode).
      - name: analyst_firm
        in: query
        required: false
        schema:
          type: string
        description: Substring match on an analyst's firm (search mode).
      - name: role
        in: query
        required: false
        schema:
          type: string
        description: Substring match on role/title (search mode).
      - name: speaker_type
        in: query
        required: false
        schema:
          type: string
          enum:
          - executive
          - analyst
        description: Filter by speaker type (search mode).
      - name: ticker
        in: query
        required: false
        schema:
          type: string
        description: In search mode, restrict to people who appeared on this company's calls. In detail mode, filter the appearance list to this company. Share classes and preferred shares can be written in any common form, e.g. BRK.B, BRK-B, BRK/B or BRKB, and BAC.PRL or BAC-PL. Non-US stocks take an exchange suffix (SHEL.L, 7203.T) or prefix (LON:SHEL).
      - name: year
        in: query
        required: false
        schema:
          type: integer
          format: int32
        description: Filter by fiscal year.
      - name: quarter
        in: query
        required: false
        schema:
          type: integer
          format: int32
          enum:
          - 1
          - 2
          - 3
          - 4
        description: Filter by fiscal quarter (1-4). In search mode, requires year.
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          enum:
          - appearance_count
          - last_appearance_date
          - name
          default: appearance_count
        description: Sort field (search mode).
      - name: sort_dir
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
        description: Sort direction (search mode). Defaults to desc, or asc when sort_by=name.
      - name: include_appearances
        in: query
        required: false
        schema:
          type: boolean
          default: false
        description: When true (search mode), include each returned speaker's appearance list.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
        description: 'Search mode: speakers per page (default 25, max 100). Detail mode: appearances per page (default 50, max 200).'
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
        description: Number of results to skip for pagination. Default 0.
      responses:
        '200':
          description: A speaker search result (no id) or a single speaker detail object (id provided).
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/SpeakerSearchResponse'
                - $ref: '#/components/schemas/SpeakerDetailResponse'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
  /v1/earningstranscriptparticipants:
    get:
      summary: List the executives and analysts who appeared on a company's earnings calls
      description: Lists the executives and analysts who appeared on one company's earnings calls. Requires a `ticker` or `cik`. For a single person across companies use /earningstranscriptspeaker.
      operationId: getEarningsCallParticipants
      tags:
      - Earnings Call Transcript
      parameters:
      - name: ticker
        in: query
        required: false
        schema:
          type: string
        description: Company ticker symbol (e.g. AAPL). Either ticker or cik must be provided. Share classes and preferred shares can be written in any common form, e.g. BRK.B, BRK-B, BRK/B or BRKB, and BAC.PRL or BAC-PL. Non-US stocks take an exchange suffix (SHEL.L, 7203.T) or prefix (LON:SHEL).
      - name: cik
        in: query
        required: false
        schema:
          type: string
        description: Company Central Index Key (e.g. 320193). Either ticker or cik must be provided.
      - name: speaker_type
        in: query
        required: false
        schema:
          type: string
          enum:
          - executive
          - analyst
        description: Restrict to the management roster (executive) or the covering analysts (analyst).
      - name: sort_by
        in: query
        required: false
        schema:
          type: string
          enum:
          - appearance_count
          - last_appearance_date
          - name
          default: appearance_count
        description: Sort field.
      - name: sort_dir
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
        description: Sort direction. Defaults to desc, or asc when sort_by=name.
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 50
          minimum: 1
          maximum: 200
        description: Maximum number of participants to return. Default 50; values above 200 are clamped to 200.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
        description: Number of results to skip for pagination. Default 0.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParticipantsResponse'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '500':
          description: Internal Server Error
      security:
      - ApiKeyAuth: []
components:
  schemas:
    ParticipantsResponse:
      type: object
      properties:
        ticker:
          type:
          - string
          - 'null'
          description: The company ticker.
        cik:
          type:
          - string
          - 'null'
          description: The company CIK.
        participants:
          type: array
          items:
            $ref: '#/components/schemas/Participant'
        pagination:
          $ref: '#/components/schemas/Pagination'
    SpeakerAppearance:
      type: object
      properties:
        transcript_id:
          type: string
          description: Identifier of the earnings call transcript (e.g. aapl-2026-q2).
        ticker:
          type: string
          description: Ticker of the company holding the call.
        cik:
          type:
          - string
          - 'null'
          description: CIK of the company holding the call.
        year:
          type: integer
          description: Fiscal year of the call.
        quarter:
          type: integer
          description: Fiscal quarter of the call (1-4).
        date:
          type:
          - string
          - 'null'
          format: date
          description: Date of the call.
        role:
          type:
          - string
          - 'null'
          description: The person's role on this specific call.
        company:
          type:
          - string
          - 'null'
          description: The person's affiliation on this call (issuer for executives; firm for analysts).
        speaker_type:
          type: string
          enum:
          - executive
          - analyst
          description: Classification on this call.
        turn_count:
          type: integer
          description: Number of speaking turns the person had on this call.
    EarningsTranscriptResponse:
      type: object
      properties:
        date:
          type: string
          format: date
          description: The date of the earnings call.
        timestamp:
          type:
          - integer
          - 'null'
          description: The UNIX timestamp (in seconds) of the earnings call to the nearest minute. Premium only.
        ticker:
          type: string
          description: The ticker symbol of the company.
        cik:
          type: string
          description: The CIK of the company.
        year:
          type: string
          description: The year of the earnings call.
        quarter:
          type: string
          description: The quarter of the earnings call.
        earnings_timing:
          type:
          - string
          - 'null'
          enum:
          - before_market
          - during_market
          - after_market
          - null
          description: Timing of the earnings call. Premium only.
        transcript:
          type: string
          description: The transcript of the earnings call as a single string.
        participants:
          type:
          - array
          - 'null'
          items:
            type: object
            properties:
              name:
                type: string
                description: The name of the participant.
              role:
                type: string
                description: The role of the participant.
              company:
                type: string
                description: The company the participant represents.
          description: The list of participants of the earnings call. Premium only.
        summary:
          type: string
          description: A concise summary of the earnings call, covering the main points discussed including financial performance, key metrics, and strategic initiatives. Business tier and above.
        guidance:
          type: string
          description: Forward-looking guidance issued by the company during the call, including revenue projections, earnings estimates, margin expectations, or other forecasts. Business tier and above.
        risk_factors:
          type: string
          description: Risk factors, challenges, headwinds, or concerns mentioned during the call that could negatively impact the company's future performance. Business tier and above.
        overall_sentiment:
          type: number
          description: The overall sentiment of the entire transcript on a scale from -1 (very negative) to 1 (very positive), where 0 is neutral. Business tier and above.
        overall_sentiment_rationale:
          type: string
          description: A brief explanation of the overall sentiment score, including key positive signals, key negative signals, and the reasoning behind the score. Business tier and above.
        transcript_split:
          type:
          - array
          - 'null'
          items:
            type: object
            properties:
              speaker:
                type: string
                description: The name of the speaker.
              company:
                type: string
                description: The company the speaker represents.
              role:
                type: string
                description: The role of the speaker.
              text:
                type: string
                description: The text spoken by the speaker.
              sentiment:
                type: number
                description: Sentiment score for this segment from -1 (very negative) to 1 (very positive).
              sentiment_rationale:
                type: string
                description: Brief explanation of the sentiment score.
              speaker_type:
                type: string
                enum:
                - management
                - investor
                - operator
                description: Type of speaker.
              is_qa:
                type: boolean
                description: Whether this segment is part of the Q&A portion of the call.
          description: The transcript of the earnings call split into sections by speaker. Premium only.
    SpeakerDetailResponse:
      description: Returned by /earningstranscriptspeaker in detail mode (id provided). An empty object {} is returned if the id is unknown.
      allOf:
      - $ref: '#/components/schemas/Speaker'
      - type: object
        properties:
          coverage:
            type: array
            items:
              $ref: '#/components/schemas/SpeakerCoverage'
            description: Per-company rollup of the person's appearances.
          appearances_pagination:
            $ref: '#/components/schemas/Pagination'
    Pagination:
      type: object
      properties:
        total:
          type: integer
          description: Total number of matching records across all pages.
        count:
          type: integer
          description: Number of records returned on this page.
        limit:
          type: integer
          description: Page size used.
        offset:
          type: integer
          description: Number of records skipped.
        has_more:
          type: boolean
          description: True if more records exist beyond this page.
    EarningsTranscriptsListResponse:
      type: array
      items:
        type: object
        properties:
          ticker:
            type: string
            description: The company ticker symbol.
          company:
            type: string
            description: The company name.
      description: A list of all available earnings call transcripts.
    Participant:
      type: object
      properties:
        speaker_id:
          type: string
          description: Stable speaker identifier.
        name:
          type: string
          description: Display name.
        speaker_type:
          type: string
          enum:
          - executive
          - analyst
          description: Executive or sell-side analyst.
        role:
          type:
          - string
          - 'null'
          description: Most recent role on this company's calls.
        analyst_firm:
          type:
          - string
          - 'null'
          description: Analyst's firm (analysts only).
        appearance_count:
          type: integer
          description: Number of this company's calls the person appeared on.
        first_appearance_date:
          type:
          - string
          - 'null'
          format: date
          description: First appearance on this company's calls.
        last_appearance_date:
          type:
          - string
          - 'null'
          format: date
          description: Most recent appearance on this company's calls.
    SpeakerSearchResponse:
      type: object
      description: Returned by /earningstranscriptspeaker in search mode (no id parameter).
      properties:
        speakers:
          type: array
          items:
            $ref: '#/components/schemas/Speaker'
        pagination:
          $ref: '#/components/schemas/Pagination'
    EarningsTranscriptSearchResponse:
      type: array
      items:
        type: object
        properties:
          ticker:
            type: string
            description: The company ticker symbol.
          year:
            type: string
            description: The year of the earnings call transcript.
          quarter:
            type: string
            description: The quarter of the earnings call transcript (1, 2, 3, or 4).
          date:
            type: string
            description: The earnings call date in YYYY-MM-DD format.
      description: A list of available earnings call transcripts.
    SpeakerCoverage:
      type: object
      properties:
        ticker:
          type: string
          description: Ticker the person appeared for.
        cik:
          type:
          - string
          - 'null'
          description: CIK of that company.
        appearance_count:
          type: integer
          description: Number of that company's calls the person appeared on.
        first_appearance_date:
          type:
          - string
          - 'null'
          format: date
          description: First appearance for that company.
        last_appearance_date:
          type:
          - string
          - 'null'
          format: date
          description: Most recent appearance for that company.
    Speaker:
      type: object
      properties:
        speaker_id:
          type: string
          description: Stable identifier for the resolved person. Pass it back as the id parameter to fetch full detail.
        name:
          type: string
          description: Display name of the speaker.
        speaker_type:
          type: string
          enum:
          - executive
          - analyst
          description: Whether the person is a company executive or a sell-side analyst.
        primary_company:
          type:
          - string
          - 'null'
          description: For executives, the company they represent.
        primary_company_ticker:
          type:
          - string
          - 'null'
          description: Ticker of the primary company (executives).
        primary_cik:
          type:
          - string
          - 'null'
          description: CIK of the primary company (executives).
        analyst_firm:
          type:
          - string
          - 'null'
          description: For analysts, their most recent firm.
        primary_role:
          type:
          - string
          - 'null'
          description: Most common role or title.
        role_variants:
          type: array
          items:
            type: string
          description: All distinct roles/titles observed for this person, most frequent first.
        appearance_count:
          type: integer
          description: Number of distinct earnings calls the person appeared on.
        distinct_companies:
          type: integer
          description: Number of distinct companies the person appeared for.
        distinct_tickers:
          type: integer
          description: Number of distinct tickers the person appeared for.
        first_appearance_date:
          type:
          - string
          - 'null'
          format: date
          description: Earliest appearance date.
        last_appearance_date:
          type:
          - string
          - 'null'
          format: date
          description: Most recent appearance date.
        appearances:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/SpeakerAppearance'
          description: The person's appearances. In search mode, present only when include_appearances=true; always present in detail mode.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
externalDocs:
  description: API Ninjas documentation
  url: https://api-ninjas.com/api