Get Your Data
Fathom - How to Get Your Meeting Data
A practical guide to getting your meeting data out of Fathom - covering API access, transcript extraction, incremental polling, webhook-triggered flows, and how to route structured data into your downstream systems.
What you'll learn
- What meeting data you can extract from Fathom - transcripts, summaries, action items, and participant info
- How to access data via the Fathom API - authentication, endpoints, and pagination
- Three extraction patterns: historical backfill, incremental polling, and webhook-triggered
- How to connect Fathom data pipelines to Zapier, n8n, and Make
- Advanced use cases - meeting intelligence, sales coaching, productivity tracking, and custom analytics
Data
What Data You Can Extract From Fathom
Fathom is an AI meeting assistant that records, transcribes, and summarizes your meetings. Every meeting produces a rich set of structured assets that can be extracted via API - the full transcript, AI-generated summaries, action items, participant details, and CRM associations.
Common fields teams care about
API Access
How to Get Transcripts via the Fathom API
Fathom exposes meetings and transcripts through a REST API at developers.fathom.ai. The workflow is: authenticate with an API key, list meetings by date range, then fetch the transcript for each recording - or inline it directly with a query parameter.
Authenticate
Fathom uses API key authentication at the user level. Generate an API key from your Fathom account settings and pass it as a Bearer token in the Authorization header on every request.
Authorization: Bearer fathom_api_key_... Content-Type: application/json
List meetings by date range
Call the GET /meetings endpoint with date filter parameters to retrieve meetings within a time range. Results are paginated. Add ?include_transcript=true to inline transcripts directly in the response.
GET https://api.fathom.ai/meetings?from=2025-01-01T00:00:00Z&to=2025-02-01T00:00:00Z # Or with inline transcripts: GET https://api.fathom.ai/meetings?from=2025-01-01T00:00:00Z&to=2025-02-01T00:00:00Z&include_transcript=true
The response returns an array of meeting objects with recording IDs, participant info, summaries, action items, and CRM matches. Paginate through the results until all meetings are retrieved.
Fetch the transcript
For each recording, request the transcript via GET /recordings/{recording_id}/transcript. The response contains the full transcript text with speaker labels and timestamps.
GET https://api.fathom.ai/recordings/rec_abc123/transcript
The transcript includes speaker identification and timestamps. You can also retrieve the transcript inline when listing meetings by using the include_transcript=true parameter, which avoids a second API call per meeting.
Handle rate limits and transcript availability
Rate limits
Fathom enforces a rate limit of 60 calls/minute. For bulk operations, pace requests at approximately 1 per second. Implement exponential backoff when you receive rate limit responses, and use pagination to work through large datasets incrementally.
Transcript timing
Transcripts are not available the instant a meeting ends. Fathom processes recordings asynchronously - typical lag is a few minutes depending on meeting length. Use webhooks to be notified when processing completes, or build a short buffer into your polling schedule.
Patterns
Key Extraction Flows
There are three practical patterns for getting transcripts out of Fathom. The right choice depends on whether you're doing a one-off migration, running ongoing extraction, or need near real-time processing.
Backfill (Historical Export)
One-off migration of past meetings
Define your date range - typically 3-6 months of historical meetings, or all available data if migrating
Call GET /meetings with from and to date filters. Paginate through the full result set, collecting all meeting and recording IDs
For each recording ID, fetch the transcript via GET /recordings/{recording_id}/transcript. Pace requests to stay within the 60 calls/minute rate limit
Store each transcript with its meeting metadata (meeting ID, date, participants, summary, action items) in your data warehouse or object store
Once the backfill completes, run your analysis pipeline against the stored data in bulk
Incremental Polling
Ongoing extraction on a schedule
Set a cron job or scheduled trigger (hourly, daily, etc.) that runs your extraction script
On each run, call GET /meetings with the from parameter set to your last successful poll timestamp
Fetch transcripts for any new recording IDs returned. Use the meeting ID as a deduplication key to avoid reprocessing
Route each transcript and its metadata to your downstream pipeline - analysis tool, warehouse, or automation platform
Update your stored timestamp to the current run time for the next poll cycle
Webhook-Triggered
Near real-time on meeting completion
Register a webhook endpoint in your Fathom account settings. Fathom fires events when a meeting is processed and the transcript becomes available
When the webhook fires, parse the event payload to extract the recording ID and meeting metadata
Fetch the transcript via GET /recordings/{recording_id}/transcript using the recording ID from the event
Route the transcript and metadata downstream - to your analysis pipeline, CRM updater, or automation tool
Automation
Send Fathom Transcripts to Automation Tools
Once you can extract transcripts from Fathom, the next step is routing them through Semarize for structured analysis and into your downstream systems. Below are end-to-end example flows - each showing the full pipeline from Fathom trigger through Semarize evaluation to CRM, Slack, or database output.
Fathom → Zapier → Semarize → CRM
Detect new Fathom meetings via webhook, fetch the transcript, send it to Semarize for structured analysis, then write the scored output - signals, flags, and evidence - directly to your CRM.
Setup steps
Create a new Zap. Choose "Webhooks by Zapier" as the trigger and select "Catch Hook". Copy the webhook URL and register it in your Fathom account settings to receive meeting completion events.
Add a "Webhooks by Zapier" Action (Custom Request) to fetch the transcript from Fathom. Set method to GET, URL to https://api.fathom.ai/recordings/{{recording_id}}/transcript, and add your Fathom API key as a Bearer token.
Add a second "Webhooks by Zapier" Action. Set method to POST, URL to https://api.semarize.com/v1/runs. Add your Semarize API key as a Bearer token. In the body, set kit_code to your Kit, mode to "sync", and map the transcript text into input.transcript.
Add a Formatter step to extract individual brick values from the Semarize JSON response - overall_score, risk_flag, action_items, etc.
Add a Salesforce (or HubSpot, Sheets, etc.) Action to write the extracted scores and signals to your CRM record.
Test each step end-to-end, then turn on the Zap.
Fathom → n8n → Semarize → Database
Poll Fathom for new meetings on a schedule, fetch transcripts, send each one to Semarize for analysis, then write the structured scores and signals to your database. n8n's native loop support handles pagination and batch processing.
Setup steps
Add a Cron node as the workflow trigger. Set the interval to your desired polling frequency (hourly works well for most teams).
Add an HTTP Request node to list new meetings from Fathom. Set method to GET, URL to https://api.fathom.ai/meetings, configure Bearer auth with your API key, and add from parameter set to one interval ago. Include ?include_transcript=true to get transcripts inline.
Add a Split In Batches node to iterate over the returned meetings. Inside the loop, add a Code node to extract the transcript text from each meeting object.
Add another HTTP Request node to send the transcript to Semarize. Set method to POST, URL to https://api.semarize.com/v1/runs. Add your API key as a Bearer token. Set kit_code, mode to "sync", and map the transcript into input.transcript.
Add a Code node to extract the brick values from the Semarize response - overall_score, risk_flag, action_items, evidence, confidence.
Add a Postgres (or MySQL / HTTP Request) node to write the structured output. Use meeting_id as the primary key for upserts.
Activate the workflow. Monitor the first few runs to verify Semarize responses are arriving and writing correctly.
Fathom → Make → Semarize → CRM + Slack
Fetch new Fathom transcripts on a schedule, send each to Semarize for structured analysis, then use a Router to branch the scored output - alert on risk flags via Slack and write all signals to your CRM.
Setup steps
Create a new Scenario. Add a Schedule module as the trigger, set to your desired interval (15-60 minutes is typical).
Add an HTTP module to list new meetings from Fathom. Set method to GET, URL to https://api.fathom.ai/meetings, configure Bearer auth with your API key, and filter by from date since the last run. Add include_transcript=true to get transcripts inline.
Add an Iterator module to loop through each meeting. For each, the transcript is already available in the response since we used include_transcript=true.
Add another HTTP module to send the transcript to Semarize. Set URL to https://api.semarize.com/v1/runs, add your Bearer token, and set kit_code, mode to "sync", and input.transcript from the previous step. Parse the response as JSON.
Add a Router module. Define Branch 1 with a filter: bricks.risk_flag.value equals true. Leave Branch 2 as a fallthrough (no filter).
On Branch 1, add a Slack module to alert your team when risk is detected. Map the score, risk flag, and meeting title into the message.
On Branch 2, add a Salesforce module to write all brick values (score, risk_flag, action_items) to the Opportunity record.
Set the scenario schedule and activate. Monitor the first few runs in Make's execution log.
What you can build
What You Can Do With Fathom Data in Semarize
Custom scoring frameworks, cross-meeting intelligence, behavioral coaching analytics, and building your own tools on structured meeting signals.
Structured Interview Bias & Consistency Audit
Interview Quality Assurance
What Semarize generates
Your HR team records every interview. Are interviewers asking consistent, unbiased questions that follow the structured interview guide? Run every interview transcript through an interview calibration kit grounded against your structured interview document. Semarize scores each for question_consistency (did the interviewer follow the guide?), bias_indicator_count (leading questions, assumptions, gendered language patterns), competency_coverage (were all required competencies assessed?), and interview_guide_adherence. A monthly calibration report shows that Hiring Manager A only covers 3 of 6 competencies and asks 2.5x more leading questions than the team average. Targeted interviewer training improves consistency - and reduces time-to-hire by 18%.
Learn more about QA & ComplianceKnowledge-Grounded Account Intelligence
Roadmap & Pricing Verification
What Semarize generates
Your CS and sales teams reference product roadmap items and pricing on every customer call. Are those references accurate? Run every customer call through a knowledge-grounded kit against your product roadmap document and current pricing sheet. Semarize scores roadmap_alignment (did the rep reference features actually on the roadmap?), pricing_reference_correct (was the quoted price current?), upsell_precision (did they recommend the right tier for the customer’s usage?), and pain_to_capability_match. After scoring 200 calls, the data shows reps consistently reference a feature that was deprioritised two quarters ago. Product marketing updates the internal talking points within days — not after the next quarterly enablement session.
Learn more about Customer SuccessCross-Meeting Decision Continuity Scoring
Follow-Through Analysis
What Semarize generates
Action items get captured after every meeting — but do those commitments actually carry through to the next call? Run pairs of consecutive meeting transcripts through a commitment tracking kit. Semarize compares commitments_made in meeting N with commitments_referenced in meeting N+1, scoring follow_through_rate, dropped_commitments, and new_blockers_introduced. Across your sales team, the data shows a 41% commitment drop-off between discovery and demo calls. Deals where commitments carry through close at 2.8x the rate. Pipeline reviews now include commitment continuity as a deal health metric.
Learn more about RevOpsKnowledge-Grounded Methodology Scoring
Your Framework, Evidence-Backed
What Semarize generates
A VP of Sales vibe-codes a Next.js leaderboard app that scores every call against YOUR methodology document - not a vendor's template. Each rep's calls get run through a knowledge-grounded methodology kit that checks against the actual playbook PDF. Semarize scores methodology_adherence with evidence_spans linking each score to the specific transcript moment. When your methodology changes (new objection handling framework, updated discovery questions), you update the kit the same week. The leaderboard updates with rankings, trend arrows, and coaching priorities per rep - each backed by evidence from the transcript. The team's average methodology score improves 22% in one quarter because coaching is specific, evidence-backed, and always current.
Learn more about Sales CoachingWatch out for
Common Challenges & Gotchas
These are the issues that come up most often when teams start extracting transcripts from Fathom at scale.
Rate limit ceiling at 60 calls/minute
Fathom's API enforces a 60 calls/minute rate limit. For bulk backfills with hundreds of meetings, you need to pace requests carefully. Implement request queuing with delays to avoid hitting the ceiling, especially when fetching individual transcripts.
Transcript processing delay
Transcripts are not available the instant a meeting ends. Fathom processes recordings asynchronously. Attempting to fetch a transcript too soon after a meeting will return incomplete or unavailable data. Use webhooks or a retry mechanism with a short delay.
API key scope is user-level
Fathom API keys are scoped to individual users, not organizations. This means you only have access to meetings recorded by the authenticated user. If you need organization-wide data, you may need to coordinate API keys across multiple users or use a shared recording account.
Pagination handling for large meeting histories
The GET /meetings endpoint returns paginated results. For teams with extensive meeting histories, you need to handle pagination correctly - tracking your position and resuming from where you left off if a batch is interrupted.
Inline transcript payloads can be large
Using ?include_transcript=true on the meetings list endpoint returns transcript data inline, which can produce very large response payloads for long meetings. Consider fetching transcripts separately for meetings over 60 minutes to avoid payload size issues in automation tools.
CRM match accuracy varies
Fathom attempts to match meeting participants to CRM contacts, but the accuracy depends on email matching and CRM data quality. Validate CRM associations before using them as keys for downstream enrichment or routing.
Duplicate processing protection
Without idempotency checks, re-running an extraction flow can process the same meeting twice. Use meeting IDs or recording IDs as deduplication keys to ensure each transcript is handled exactly once in your pipeline.
FAQ
Frequently Asked Questions
Explore