SEC Earnings Call Transcripts Scraper avatar

SEC Earnings Call Transcripts Scraper

Pricing

from $0.21 / 1,000 transcript extracteds

Go to Apify Store
SEC Earnings Call Transcripts Scraper

SEC Earnings Call Transcripts Scraper

Monitor SEC 8-K filings and extract sectioned earnings-call transcript exhibits with speakers and source links.

Pricing

from $0.21 / 1,000 transcript extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Extract SEC earnings call transcripts from official 8-K exhibits. Monitor selected public companies by ticker or CIK, or parse a known SEC filing URL, and receive filing identity, company metadata, event dates, full normalized transcript text, sections, speakers, speaker turns, and official source links.

The Actor is designed for recurring financial research, RAG ingestion, analyst workflows, and source-linked transcript archives. It reads public SEC EDGAR data directly and does not require a paid market-data API.

What does this SEC transcript Actor do?

The Actor follows a filing-first workflow:

  1. Resolve supplied stock tickers to SEC CIK identifiers.
  2. Read each company's recent SEC submissions.
  3. Select 8-K and 8-K/A filings inside the requested date range.
  4. Inspect the filing's official exhibit list.
  5. Score EX-99 exhibits for earnings-call transcript signals.
  6. Parse the strongest transcript into sections and speaker turns.
  7. Save one typed, source-linked dataset row per transcript.

It does not label every press release as a transcript. An exhibit must contain useful call-transcript signals, substantial text, and multiple detected speaker turns before it is returned or charged.

Who is it for?

  • Equity researchers monitoring prepared remarks and analyst Q&A.
  • Portfolio analysts maintaining transcript archives for selected companies.
  • Data engineers feeding source-linked text into warehouses or search indexes.
  • AI and RAG teams building retrieval corpora from official public filings.
  • Compliance teams that need accession numbers and original SEC links beside extracted text.
  • Journalists and academics comparing management commentary across reporting periods.

Why use filing-first transcript extraction?

Third-party transcript pages can change, disappear, or obscure provenance. This Actor preserves the official SEC filing and exhibit URLs with every record.

The output combines:

  • stable accession and CIK identity;
  • filing and report dates;
  • the selected exhibit type and description;
  • full text instead of a short snippet;
  • semantic sections such as prepared remarks and questions and answers;
  • distinct speaker names and ordered speaker turns;
  • timestamps and source links for auditability.

The implementation uses lightweight official JSON and static HTML rather than a browser. Requests are sequential and identify the client under SEC fair-access guidance.

What data can I extract?

FieldMeaning
accessionNumberUnique SEC filing accession number
filingDateDate the filing was accepted by EDGAR
eventDateFiling report or event date when supplied
form8-K or 8-K/A
companyNameSEC registrant name
tickerRequested ticker when the ticker route was used
cikZero-padded SEC Central Index Key
filingUrlOfficial SEC filing index
transcriptUrlOfficial exhibit selected as the transcript
exhibitTypeExhibit classification such as EX-99.2
exhibitDescriptionDescription from the filing index
titleDetected call title
speakersDistinct detected speakers
sectionsSection title and normalized text pairs
speakerTurnsOrdered speaker, section, and text objects
transcriptTextComplete normalized exhibit text
scrapedAtUTC extraction timestamp

Nullable fields remain null when the filing does not expose them. The original source links remain available for verification.

How do I get started?

  1. Open the Actor in Apify Console.
  2. Enter one or more tickers, ciks, or filingUrls.
  3. Add dateFrom and dateTo for a bounded monitoring window.
  4. Set maxFilingsPerCompany to control filing inspection.
  5. Set maxItems to cap returned transcripts.
  6. Start the run.
  7. Open the default dataset, then export JSON, CSV, Excel, XML, or another Apify-supported format.

A useful first test is ticker TRAK with dates from 2025-09-01 through 2025-10-15.

Input parameters

tickers

A list of US public-company ticker symbols. The Actor resolves each symbol with the official SEC ticker map. Unknown tickers fail closed rather than silently producing misleading empty data.

ciks

A list of numeric SEC CIKs. Leading zeroes are optional. Use CIKs for stable scheduled workflows that should not depend on ticker changes.

filingUrls

Official sec.gov/Archives/edgar/data/... filing index or exhibit URLs. The Actor identifies the parent filing and applies the same transcript selection rules used in company monitoring.

dateFrom and dateTo

Optional inclusive filing-date boundaries in YYYY-MM-DD format. They apply to ticker and CIK discovery. Keep a moving recent window in scheduled Tasks.

maxFilingsPerCompany

The maximum recent 8-K/8-K-A filings inspected for each ticker or CIK. Default: 30. Maximum: 200.

maxItems

The maximum transcript records written to the dataset. Default: 10. Maximum: 1000.

secUserAgent

Optional organization and contact email sent in the request User-Agent. The default identifies Automation Lab. Organizations with their own SEC request identity can replace it.

Example input: monitor by ticker

{
"tickers": ["TRAK"],
"dateFrom": "2025-09-01",
"dateTo": "2025-10-15",
"maxFilingsPerCompany": 10,
"maxItems": 1
}

Example input: parse a known SEC filing

{
"filingUrls": [
{
"url": "https://www.sec.gov/Archives/edgar/data/50471/000143774925030128/0001437749-25-030128-index.html"
}
],
"maxItems": 1
}

Example output

This abbreviated example reflects the Actor's real output shape:

{
"accessionNumber": "0001437749-25-030128",
"filingDate": "2025-09-30",
"eventDate": "2025-09-29",
"form": "8-K",
"companyName": "ReposiTrak, Inc.",
"ticker": "TRAK",
"cik": "0000050471",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/50471/000143774925030128/0001437749-25-030128-index.html",
"transcriptUrl": "https://www.sec.gov/Archives/edgar/data/50471/000143774925030128/ex_865468.htm",
"exhibitType": "EX-99.2",
"title": "Fiscal Fourth Quarter and Full-Year 2025 Earnings Call",
"speakers": ["Operator", "Jeff Stanlis", "John Merrill", "Randy Fields", "Thomas Forte"],
"sections": [{"title": "Prepared remarks", "text": "Operator\nGreetings, and welcome..."}],
"speakerTurns": [{"speaker": "Operator", "section": "Prepared remarks", "text": "Greetings, and welcome..."}],
"transcriptText": "Fiscal Fourth Quarter and Full-Year 2025 Earnings Call...",
"scrapedAt": "2026-09-06T20:00:00.000Z"
}

The complete record includes the full sections and all detected turns.

How much does it cost to extract SEC earnings call transcripts?

Pricing is pay per event:

  • a $0.0001 start event is charged once per run;
  • each useful transcript is charged at the active plan tier;
  • the BRONZE transcript price is $0.0003561 per transcript;
  • filings that do not contain a qualifying transcript are not charged as transcripts.

At the BRONZE tier, a one-transcript run contains one start event and one transcript event. A ten-transcript run contains one start event and ten transcript events; a hundred-transcript run contains one start event and one hundred transcript events. Multiply the active per-transcript tier by useful records and add the single start event to estimate the run charge.

Apify may separately account for platform usage according to your plan. Check the Actor pricing panel for the current tier applicable to your account.

How transcript selection works

8-K filings often contain several EX-99 exhibits. The transcript is not always EX-99.1. The Actor inspects up to eight candidate exhibits and scores signals including:

  • “earnings call” or “conference call”;
  • operator dialogue;
  • participant lists;
  • prepared remarks or presentation headings;
  • question-and-answer headings;
  • substantial document length.

The strongest candidate must pass a minimum score and produce multiple speaker turns. This avoids returning ordinary earnings releases as if they were transcripts.

Monitoring workflow

Create an Apify Task with stable CIKs and a recent date window. Schedule it daily or weekly. Downstream automation can deduplicate on accessionNumber.

A typical pipeline is:

  1. scheduled Task runs;
  2. Actor scans recent filings;
  3. dataset webhook starts your integration;
  4. pipeline upserts by accession number;
  5. new transcript text is chunked for search or RAG;
  6. analysts receive a source-linked update.

The Actor itself does not send alerts or compare prior datasets. Apify schedules, webhooks, Make, Zapier, or your own integration can provide that orchestration.

Export and integration ideas

  • Export speaker turns to a warehouse for longitudinal analysis.
  • Index transcriptText in a vector database.
  • Separate prepared remarks from Q&A using sections.
  • Filter management and analyst turns by speaker.
  • Join records to market data using ticker, CIK, and event date.
  • Retain filingUrl and transcriptUrl as provenance in generated research.
  • Trigger a webhook only when a new accession appears.

Run through the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~sec-8k-earnings-call-transcripts/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tickers":["TRAK"],"dateFrom":"2025-09-01","dateTo":"2025-10-15","maxItems":1}'

To wait for completion and receive dataset items, use the synchronous dataset-items endpoint documented by Apify.

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/sec-8k-earnings-call-transcripts').call({
ciks: ['50471'],
dateFrom: '2025-09-01',
dateTo: '2025-10-15',
maxItems: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/sec-8k-earnings-call-transcripts').call(run_input={
'filingUrls': [{
'url': 'https://www.sec.gov/Archives/edgar/data/50471/000143774925030128/0001437749-25-030128-index.html'
}],
'maxItems': 1,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI agents

Add the Apify MCP server to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/sec-8k-earnings-call-transcripts"

Claude Desktop

Claude Desktop can use this Actor-specific MCP server configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/sec-8k-earnings-call-transcripts"
}
}
}

Cursor

In Cursor, open Settings → Tools & MCP → New MCP Server and use the same Actor-specific URL.

VS Code

In VS Code with MCP support enabled, add an HTTP MCP server named apify and use the same Actor-specific URL.

Example prompts:

  • “Find the ReposiTrak SEC earnings call transcript filed in September 2025 and summarize the prepared remarks.”
  • “Extract this SEC 8-K transcript and list each analyst question with the attributed speaker.”
  • “Monitor CIK 50471 in this date window and return accession numbers and official exhibit links.”

Always verify generated financial conclusions against the included SEC source links.

Reliability and fair-access behavior

The Actor uses official SEC endpoints, a descriptive User-Agent, sequential requests, and bounded retries. Transient timeouts, HTTP 429, and temporary 5xx responses are retried up to three times with backoff. Stable malformed-input and deterministic 4xx failures are not retried blindly.

If every filing request fails, the run fails non-zero instead of reporting a false valid empty result. If filing requests succeed but no qualifying transcript exists, a successful zero-item result is valid.

Limitations

  • Only transcript exhibits publicly attached to SEC 8-K or 8-K/A filings are in scope.
  • Many companies publish only earnings releases, slide decks, or webcast links in 8-K exhibits.
  • Historical filings outside the recent company-submissions block may not appear in ticker/CIK discovery.
  • PDF-only, image-only, or unusually formatted exhibits may not parse.
  • Speaker detection is rule-based and can miss stylized names or include a heading that resembles a name.
  • The Actor does not provide investment advice, sentiment scores, audio transcription, alerts, or non-SEC transcript sources.
  • SEC availability and fair-access controls can affect run time.

For older known filings, pass the official filing URL directly.

Responsible use and legality

SEC filings are public records, but users remain responsible for their use, storage, redistribution, and downstream conclusions. Respect SEC fair-access guidance and avoid aggressive schedules or overlapping runs. Do not imply that normalized text is an SEC endorsement or a perfect legal reproduction.

Transcripts may contain third-party transcription notices and forward-looking statements. Preserve the original exhibit link and review the source before making financial, legal, or compliance decisions.

Troubleshooting

Why did the run return zero transcripts?

The selected company or date window may contain 8-K filings but no complete call transcript exhibit. Expand the date range, raise maxFilingsPerCompany, or verify a known filing URL.

Why did an unknown ticker fail?

The Actor validates tickers against the current SEC mapping. Use the company's CIK if its ticker recently changed or is absent from the mapping.

Why is a speaker missing?

Some exhibits do not visually separate names from dialogue. Use transcriptText and sections when precise speaker attribution is not available.

Why did every filing request fail?

Check the error log for SEC throttling or temporary availability. Avoid concurrent overlapping schedules and retry later with a bounded window.

Frequently asked questions

Does this scrape every transcript website?

No. It intentionally focuses on official SEC 8-K exhibits.

Does it download call audio?

No. It parses transcript text already filed as an exhibit.

Can I monitor several companies?

Yes. Supply multiple tickers or CIKs and schedule the Task. Use maxItems and maxFilingsPerCompany to bound work.

Can I deduplicate recurring runs?

Yes. Use accessionNumber as the stable filing key and transcriptUrl as the source-document key.

Are non-transcript filings charged per transcript?

No. The transcript event is charged only when a useful transcript row passes validation and is saved.

Use this Actor when the buyer job is specifically to identify, structure, and monitor earnings-call transcripts filed with SEC EDGAR.