Skip to main content
By Fruit Stand Team · November 8, 2026 · Guides There are three ways to get earnings call transcripts into Snowflake: subscribe to a Snowflake Marketplace listing, use Snowflake’s free public data share, or load them from an API and parse them into speaker paragraphs yourself. A listing is fastest: the transcripts appear as a database in minutes. The free share lags about three months, and loading your own means maintaining a parser. This post covers how to set up each one, with the SQL. Once the transcripts are in, How to Query Earnings Call Transcripts in Snowflake SQL covers reading calls, splitting out the Q&A and finding the analysts.
Fruit Stand publishes the Earnings Call Transcripts listing, one of the options below. Counts were checked in Snowflake on November 8, 2026.

The short answer

Option 1: Subscribe to a Marketplace listing

A Marketplace listing is shared into your account, not copied. The provider’s tables appear as a read-only database, each refresh shows up without you doing anything, and you don’t pay storage for it.
1

Find the listing

Open the Earnings Call Transcripts listing on the Snowflake Marketplace.
2

Get it

Click Get, name the database it will mount as (for example EARNINGS_CALLS), and choose which roles can use it.
3

Query it

Select that database and its schema in a worksheet and query the views.
The listing has three views: To check coverage for the companies you care about:
On November 8, 2026 that returned 85 calls for Apple since 2005, 84 for Microsoft, 82 for NVIDIA and 78 for JPMorgan Chase since 2007, each through its most recent call. Fiscal years follow each company’s own calendar, so Microsoft’s and NVIDIA’s latest calls are already in fiscal 2027. The trial covers Apple only. During the 30-day trial the views return Apple’s 85 calls, so you can test your queries on real data. The other 6,600 companies appear once you subscribe.

Keeping your own copy in sync

You don’t need a copy to query the listing. If you want one, for example to add embeddings or join to tables in another database, src_updated_at tells you which calls are new or changed:
In the seven days to November 8, 2026, that was 1,581 calls from 1,580 companies. The oldest was from August 13: transcripts get corrected after a call, so sync on src_updated_at, not on the call date. A MERGE keyed on the company and fiscal period keeps the copy current (this one targets a table of your own, so adjust the names):

Option 2: Use Snowflake’s free public data share

Snowflake’s own Snowflake Public Data (Free) listing includes event transcripts in company_event_transcript_attributes. It’s free, and it covers more than earnings calls: conferences, annual meetings, investor days and M&A calls too. Three things to handle:
  • It’s about three months behind. On November 8, 2026 its latest earnings call was from August 9.
  • Each call appears more than once. There’s a RAW and a SPEAKERS_ANNOTATED version, and sometimes several of each. Pick one type and the latest row per event.
  • The transcript is one JSON document. Paragraphs and speakers are arrays inside it, so you flatten them before filtering on text.
Deduplicated, it has over 150,000 earnings calls for 7,732 tickers since November 2009:
To flatten one call into paragraphs with speaker names and roles, see the free option in our querying guide. Its speaker roles and firms are something our listing doesn’t have.

Option 3: Load transcripts from an API yourself

If your transcripts come from an API or as files, load the raw JSON first and parse it in SQL. Keeping the raw payload means you can re-parse without calling the API again. 1. Land the raw JSON. One row per call:
From a Python job, insert each API response as it arrives. From files in a bucket, use COPY INTO with a JSON file format:
2. Parse it into paragraphs. Most transcript APIs return the whole call as one text field, with each paragraph on its own line starting with the speaker’s name: Operator: Good afternoon.... Financial Modeling Prep’s transcript endpoint, for example, returns its text in a content field like that. Split the text on line breaks, take the speaker from the start of each line, and carry it forward to lines that continue the same speaker:
The field names (symbol, year, period, date, content) depend on your vendor, so rename them to match. We tested the parsing on a sample call with a continuation paragraph and a colon inside the text, and it returned one row per paragraph with the right speakers. 3. Plan for what breaks.
  • Speaker detection is a heuristic. A paragraph that starts with something like Revenue: up 12% looks like a speaker label. Check each call’s speaker list against a known list, or flag labels that appear only once.
  • Corrections arrive later. Vendors re-deliver transcripts after the call. Keep the newest payload per call and rebuild that call’s paragraphs, rather than appending.
  • Fiscal periods aren’t calendar quarters. Keep the call date next to the fiscal period, and compare companies by date.
  • Rate limits and plans. Transcript endpoints are usually on higher tiers: FMP includes them on its $139/month Ultimate plan. A full backfill is one request per company per quarter.
  • The license. Check that your plan allows storing the text in a shared warehouse. Where to Get Earnings Call Transcripts in Bulk compares the providers’ terms.

Check your load

Whichever option you use, run these on your paragraph table before trusting it. Each call should have a sensible number of paragraphs and speakers:
A real earnings call has at least a host or operator and one executive, and usually several analysts. A call with one or two speakers, or a handful of paragraphs, usually means the parser missed the speaker labels or the transcript was cut short.

Which should you choose?

  • You want every company’s calls in SQL with nothing to build: the Earnings Call Transcripts listing.
  • You need other company events, or speaker roles, and can wait three months: Snowflake Public Data (Free).
  • You already license transcripts from a vendor with no Snowflake delivery: load the raw JSON and parse it in SQL as above.
For the other financial data you can add the same way, see What Financial Datasets Are on the Snowflake Marketplace?

F.A.Q.

Yes. Snowflake Public Data (Free) has over 150,000 earnings calls since 2009, about three months behind. Fruit Stand’s listing has a 30-day free trial that covers Apple’s calls.
No. Shared data stays in the provider’s account. You pay for the compute your queries use, plus the listing’s price. Copies you make into your own tables are stored and billed like any other table.
Fruit Stand’s listing refreshes weekly, with new calls and corrected transcripts. The free Snowflake share runs about three months behind.
Yes, with an external access integration and a Python stored procedure, so no outside scheduler is needed. The parsing SQL above works the same way on what it loads.
Fruit Stand’s listing has 6,601 companies with calls since October 2005. Query earning_call_transcripts_cnt_vw for each company’s call count and date range.
To get every company’s calls in Snowflake without building a pipeline, start a free 30-day trial of the Earnings Call Transcripts listing on the Snowflake Marketplace. The schema is in the dataset docs. Questions? Reach out at contact@fruitstand.dev.