Google Meet Transcript Bot
Under maintenancePricing
from $99.00 / 1,000 minutes
Google Meet Transcript Bot
Under maintenanceGoogle Meet Bot API for meeting transcription & intelligence. Join calls programmatically, capture speaker-diarized transcripts from live captions, and export JSON/Markdown via REST API, webhooks, n8n & Zapier. Build AI notetakers and automate meeting notes.
Pricing
from $99.00 / 1,000 minutes
Rating
0.0
(0)
Developer
Lexis Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Meet Bot API — Transcription & Meeting Intelligence
Programmatic Google Meet bots that join calls, capture speaker-diarized transcripts, and deliver structured meeting data via REST API — built as an Apify Actor for developers who want meeting intelligence without building browser automation from scratch.
Send a bot to any Google Meet. Get diarized transcripts and meeting metadata — all through Apify's production-grade API, webhooks, and integrations.
Why this over Recall.ai, Vexa, or rolling your own?
| Lexis Meet Agent | Typical meeting-bot APIs | |
|---|---|---|
| API platform | Full Apify REST API — runs, datasets, KV store, webhooks, schedules | Custom REST + WebSocket |
| Transcripts | Full diarized transcript written to Dataset and KV store at meeting end | Real-time WebSocket / webhook |
| Speaker diarization | Native Google Meet captions with per-speaker attribution | STT diarization |
| Audio / video recording | Not included (captions-only) | MP4, separate audio streams |
| Source code | Open Actor — fork, self-host, audit | Closed / partial open source |
| Scaling | Apify cloud — concurrent runs, retries, monitoring | Managed infra |
| Integrations | n8n, Zapier, Make, webhooks, any HTTP client | Platform-specific |
| Join model | Guest bot (host admits) or authenticated Google session | Often no host permission required |
Best fit: engineering teams building meeting intelligence, AI notetakers, sales call logging, interview transcription, compliance workflows, or agentic apps — who want API-first control and Apify's developer ecosystem instead of a closed meeting-BaaS.
Compare: Recall.ai Google Meet Bot API · Vexa Meeting Transcription API
What you get
Google Meet Bot API primitives
- Automatic join & leave — bot joins via meeting URL, stays for the call, exits on alone-timeout, max duration, removal, or exit phrases
- Custom bot identity — set display name per meeting (
botName) - Transcription — live captions observed via DOM
MutationObserver; full diarized transcript written at meeting end - Speaker-diarized transcripts — each segment includes
speakerandtext - Meeting metadata — run status, segment counts, end reason, meeting URL in
status.jsonandtranscript.json - Post-meeting output — full
TRANSCRIPT.mdand structuredtranscript.json - Multi-language captions — configure caption language (
en,es,de, …) - Agent-ready data — feed transcripts into LLMs, CRMs, ticketing, or RAG pipelines
Built for AI agents & automation
- REST API for every operation — start bots, read final transcripts and artifacts
- Webhooks on run finish — trigger n8n, Zapier, or your backend when a meeting ends
- Schedules — calendar-driven bot deployment via Apify Schedules
- Concurrent bots — run unlimited parallel meetings (Apify platform limits apply)
- Observable runs — live logs, screenshots, and run history in Apify Console
Two API calls to meeting intelligence
1. Start a Google Meet bot
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~google-meet-transcription-bot/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"meetingUrl": "https://meet.google.com/abc-defg-hij","botName": "Acme Notetaker","captionLanguage": "en","aloneTimeoutSecs": 120}'
2. Get the transcript (after the meeting ends)
Transcript segments (available once the run completes):
# Structured JSONcurl "https://api.apify.com/v2/key-value-stores/STORE_ID/records/transcript.json?token=YOUR_APIFY_TOKEN"# Human-readable Markdowncurl "https://api.apify.com/v2/key-value-stores/STORE_ID/records/TRANSCRIPT.md?token=YOUR_APIFY_TOKEN"# Run status (joining → captions_active → ended)curl "https://api.apify.com/v2/key-value-stores/STORE_ID/records/status.json?token=YOUR_APIFY_TOKEN"
TypeScript / JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });// Join the meetingconst run = await client.actor('YOUR_USERNAME/google-meet-transcription-bot').call({meetingUrl: 'https://meet.google.com/abc-defg-hij',botName: 'Vexa-style Notetaker',});// Diarized transcript segmentsconst { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);// [{ speaker: "Alice", text: "..." }, ...]// Full transcript artifactconst store = client.keyValueStore(run.defaultKeyValueStoreId);const transcript = await store.getRecord('transcript.json');
Python
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("YOUR_USERNAME/google-meet-transcription-bot").call(run_input={"meetingUrl": "https://meet.google.com/abc-defg-hij","botName": "Meeting Bot",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["speaker"], item["text"])
Webhook on meeting end
const run = await client.actor('YOUR_USERNAME/google-meet-transcription-bot').call({ meetingUrl: 'https://meet.google.com/abc-defg-hij' },{webhooks: [{eventTypes: ['ACTOR.RUN.SUCCEEDED', 'ACTOR.RUN.FAILED'],requestUrl: 'https://your-app.com/webhooks/meeting-ended',},],},);
Or configure a permanent webhook on the Actor in Apify Console → your Actor → Integrations → Webhooks.
Your webhook receives the run payload with links to the dataset and key-value store — fetch transcripts and push to Salesforce, HubSpot, Linear, Slack, or your vector DB.
How it works
Meeting URL → Apify API → Bot joins Meet → Captions ON → Bot leaves → Transcript artifacts
- Launch — Camoufox (anti-fingerprint Firefox) via Playwright on Apify infrastructure
- Join — guest join with your
botName, mic/camera off, keyboard-driven lobby navigation - Admit — waits for host admission (configurable timeout)
- Transcribe — enables Google Meet live captions, observes caption DOM with
MutationObserver - Diarize — accumulates per-speaker turns; speaker change triggers segment commit
- End — leaves on alone-timeout, max duration, removal, or configurable exit phrases
- Deliver — writes full
TRANSCRIPT.md,transcript.json, andstatus.jsonto the KV store; pushes segments to the Dataset
No audio capture. No speech-to-text API. Transcription quality follows Google Meet captions for the selected language.
Input
| Field | Required | Default | Description |
|---|---|---|---|
meetingUrl | Yes | — | Google Meet link (https://meet.google.com/...) |
botName | No | Notetaker | Bot display name shown to participants |
maxDurationSecs | No | 7200 | Max time in meeting (0 = unlimited) |
captionLanguage | No | en | Caption language code (en, es, de, …) |
aloneTimeoutSecs | No | 5 | Leave when bot is alone this long |
admissionTimeoutSecs | No | 600 | Wait for host to admit the bot |
storageStatePath | No | — | Playwright storage state from a signed-in Google account (more reliable than guest) |
Output
Dataset — transcript segments
One row per speaker turn, written to the Dataset when the meeting ends:
{"speaker": "Alice Chen","text": "We need to finalize the API contracts by Friday."}
Fetch GET /v2/actor-runs/{runId}/dataset/items after the run completes.
Key-Value Store — meeting artifacts
| Key | Description |
|---|---|
transcript.json | Full structured transcript + metadata |
TRANSCRIPT.md | Human-readable transcript |
status.json | Live run status (joining → captions_active → ended) |
SELECTOR_PROBE.json | Debug: caption selector health |
Status lifecycle
starting → joining → admitted → captions_active → ended
Terminal states: blocked_guest, admission_timeout, error
Use cases
- Sales & revenue — auto-log discovery calls, demo notes, competitor mentions to CRM
- Engineering — standup / retro transcripts for AI coding agents and ticket creation
- HR & recruiting — interview transcription with speaker attribution
- Compliance — meeting recordkeeping where caption-based capture is acceptable
- AI notetakers — build your own Otter/Fireflies alternative on Apify
- Workflow automation — n8n/Zapier triggers on
ACTOR.RUN.SUCCEEDED
Requirements & limitations
Works with
- Google Meet on all common Workspace tiers (guest join where org policy allows)
- Free Google accounts when guest access is permitted
- Multi-language live captions supported by Google Meet
Limitations
- Host must admit the guest bot (unless using an authenticated
storageStatePathsession) - Some organizations block guest joins — run exits with
blocked_guest - Captions-only — no audio recording, video recording, screenshare capture, or chat messages
- Google Meet only — Microsoft Teams and Zoom not supported in this Actor
- Google Meet's DOM is not a public API; selectors may need updates when Meet changes
- Caption quality varies by language, accent, and Meet's own STT
- Real-time delivery is via Dataset polling (sub-second segment finalization; not a dedicated WebSocket)
Consent
This Actor captures meeting captions, which may constitute recording in some jurisdictions. You are responsible for obtaining consent from meeting participants before use.
Architecture
| Layer | Technology |
|---|---|
| Platform | Apify Actors |
| Browser | Camoufox + Playwright (Firefox) |
| Interaction | Ghost cursor, semantic locators, keyboard shortcuts |
| Transcription | Google Meet live captions (DOM scrape) |
FAQ
Does this work as a Google Meet transcription API? Yes. Start a run with a Meet URL; retrieve diarized transcript segments from the Dataset API and full artifacts once the run completes.
Do I need the host's permission?
For guest join, the host (or someone with admit rights) must let the bot into the meeting. For stricter orgs, use a signed-in Google session via storageStatePath.
Can I get real-time transcripts?
Not currently — segments are written to the Dataset when the meeting ends. Use the status.json key-value record to monitor the bot's state (joining → captions_active → ended) and fetch the transcript after the run completes.
How does this compare to Recall.ai? Recall.ai offers audio/video capture, wider platform support, and often no-admit joins. This Actor is caption-based (simpler compliance surface), open source, and runs on Apify's API with webhooks, schedules, and integrations you may already use.
How does this compare to Vexa? Vexa is open-source meeting-bot infrastructure with WebSockets and self-hosting. This Actor gives you a deploy-ready Google Meet bot on Apify with the same "send URL → get transcript" developer experience, plus Apify's managed scaling and ecosystem.
Can I run multiple bots at once? Yes. Each meeting is a separate Apify Actor run. Scale concurrent bots via Apify platform limits and billing.
Can I schedule bots for calendar meetings? Use Apify Schedules or trigger runs from your calendar integration (Google Calendar → webhook → Apify API).
Is there speaker diarization? Yes — speaker names come from Google Meet's live caption UI, attributed per segment.
Google Meet Bot API · Meeting Transcription API · Real-Time Transcripts · Speaker Diarization · Meeting Intelligence · Apify Actor
👀 p.s.
Got feedback or need an extension?
Lexis Solutions is a certified Apify Partner. We can help you with custom solutions or data extraction projects.
Contact us over Email or LinkedIn
Support Our Work 💝
If you're happy with our work and scrapers, you're welcome to leave us a company review here and leave a review for the scrapers you're subscribed to. It will take you less than a minute but it will mean a lot to us!