Most public companies post earnings calls on YouTube. Getting those transcripts programmatically has historically meant subscribing to Bloomberg or FactSet, building a scraper, or doing it by hand. YouTube's official API won't give you caption text for channels you don't own. VidProxy fills that gap — subscribe to a company's IR channel, and the full transcript lands in your pipeline within minutes of publish.
Investor relations YouTube channels are one of the richest and most underused sources of primary financial data available for free. Many public companies — especially those in tech, biotech, and consumer sectors — post their full quarterly earnings calls, analyst day presentations, and special investor briefings directly to YouTube. These aren't edited summaries. They're the unabridged call: prepared remarks, CFO walkthrough, full Q&A session.
Often these recordings go up faster than the written transcript from IR sites or SEC-linked services. The Q&A in particular — where analysts probe management on guidance, margins, and competitive dynamics — is where the most actionable information surfaces. That part frequently doesn't make it into summary coverage.
Premium financial data providers bundle earnings call transcripts, but at costs that are prohibitive for independent researchers, small funds, and fintech builders. Free sources like SEC EDGAR give you filings, not spoken word. Building a scraper against YouTube directly means navigating rate limits, dealing with caption availability timing, and maintaining the infrastructure when YouTube changes its structure. None of those paths are clean.
VidProxy is designed for developers building financial data pipelines. You subscribe to channels once, configure your webhook endpoint, and transcripts start arriving automatically — quarter after quarter, no maintenance required.
Set up once. Receive every earnings call automatically.
Find the company's YouTube investor relations channel — most link from their IR website. Paste the channel URL into VidProxy. You can also use the @handle or channel ID. VidProxy starts monitoring immediately, no YouTube API key or Google Cloud project required.
When adding the subscription, set a tag like the company's ticker symbol (e.g. "MSFT") or a sector grouping ("SaaS", "Biotech", "FinTech"). Tags let you query across multiple companies by category using the Pull API — essential when you're monitoring dozens or hundreds of channels.
Use GET /api/videos?tag=earnings&since=90d to retrieve all transcripts from the past quarter across your entire subscription set. Or set a webhook to receive each transcript the moment it's available. Either way, the data lands in your pipeline — ready for LLM analysis, search indexing, or structured extraction.
Pull all earnings transcripts from the past 90 days, then pass each to an LLM to extract management sentiment signals.
// Step 1: Pull all earnings call transcripts from the past quarter const response = await fetch( 'https://vidproxy.pro/api/videos?tag=earnings&since=90d', { headers: { 'X-API-Key': process.env.VIDPROXY_API_KEY } } ); const { videos } = await response.json(); // videos: [{ video_id, video_title, channel_name, published_at, transcript_text, ... }] // Step 2: For each transcript, ask an LLM for sentiment signals for (const video of videos) { if (!video.transcript_text) continue; // skip if transcript unavailable const analysis = await openai.chat.completions.create({ model: 'gpt-4o', messages: [ { role: 'system', content: 'You are a financial analyst. Extract sentiment signals from earnings call transcripts.' }, { role: 'user', content: `Analyze this earnings call transcript. Return JSON with: - overall_sentiment: bullish | neutral | bearish - guidance_tone: raised | maintained | lowered | withdrawn - key_risks: string[] - management_confidence: 1-10 Transcript (${video.channel_name} · ${video.video_title}): ${video.transcript_text.slice(0, 12000)}` } ], response_format: { type: 'json_object' } }); const signals = JSON.parse(analysis.choices[0].message.content); await db.earningsSignals.insert({ video_id: video.video_id, company: video.channel_name, published_at: video.published_at, ...signals }); console.log(`Processed: ${video.channel_name} — ${signals.overall_sentiment}`); }
A full earnings call transcript is an unusually rich primary source — executives rarely speak as candidly in written materials as they do when responding to analyst questions live. Here are the categories of signal worth extracting automatically.
Exact phrasing around revenue ranges, ARR growth, and forward guidance is highly meaningful. "We expect" versus "we are confident" versus "visibility remains limited" are signals in themselves — not just the numbers.
Hedging language, confidence levels, and how executives respond when analysts push back on weak metrics are all extractable from the transcript. Tone shifts quarter-over-quarter are often leading indicators.
When analysts name competitors directly, management's response is revealing — whether they dismiss, acknowledge, or strategize around them. Competitor names that appear unprompted in prepared remarks are even more significant.
"We're continuing to invest in headcount" versus "we've made some difficult decisions" are lagging and leading indicators of business health. Transcript monitoring surfaces this before it shows up in official filings.
How much time management spends on technology investment, new product development, and AI initiatives — and in what detail — reveals strategic priority. Vague answers to pointed R&D questions are themselves a signal.
Changes in how executives discuss regulatory exposure, litigation, or macro risk factors are often the clearest signal in an earnings call. Transcript extraction makes cross-quarter comparison automatic.
GET /api/videos?tag=SaaS&since=90d returns all transcripts from your SaaS watchlist for the past quarter.
Free tier to explore. Pro plan for production financial research pipelines.
No credit card · Free tier forever