DEV Community

Cover image for Building FathomExporter: From Web Scraping to Official API Partnership
Andy Stearman
Andy Stearman

Posted on

Building FathomExporter: From Web Scraping to Official API Partnership

I built FathomExporter, a Chrome extension that bulk exports Fathom meeting transcripts, and recently became an official Fathom partner. Here's the journey from scraping to official API integration.

The Problem

Fathom (the AI meeting recorder) doesn't have a bulk export feature. Users were manually clicking through hundreds of meetings, copying transcripts one by one. For someone with 500+ meetings, this could take 4-8 hours.

Version 1 & 2: Web Scraping

Initially, I built the extension using web scraping. It worked, but had major issues:

  • Slow: Had to navigate through each meeting page sequentially
  • Fragile: Broke whenever Fathom updated their UI
  • Limited: Required keeping the tab open and active

For 100 meetings, it took 16 minutes. For 1000 meetings? Over 2 hours.

Version 3: Official Partnership

After reaching out to Fathom, they approved FathomExporter as an official partner with OAuth API access. This changed everything:

10x Faster:

  • 100 meetings: 16 min → 2 min
  • 500 meetings: 80 min → 8 min
  • 1000 meetings: 2+ hours → 20 min

More Reliable:

  • Uses OAuth 2.0 authentication
  • Direct API access via /external/v1/meetings endpoint
  • Won't break with UI changes
  • Runs completely in background

Technical Implementation

The OAuth flow uses Chrome's chrome.identity.launchWebAuthFlow():

const redirectURL = chrome.identity.getRedirectURL('oauth');
const authURL = `https://app.fathom.video/oauth/authorize?client_id=${CLIENT_ID}&redirect_uri=${redirectURL}&response_type=code`;

chrome.identity.launchWebAuthFlow({
    url: authURL,
    interactive: true
}, (responseUrl) => {
    const code = new URL(responseUrl).searchParams.get('code');
    // Exchange code for access token
    // Store and use for API calls
});
Enter fullscreen mode Exit fullscreen mode

The export process respects Fathom's rate limits (60 requests/min) while maximizing throughput.

Key Learnings

  1. Reach out to companies: I assumed Fathom wouldn't partner with a small Chrome extension. I was wrong. The worst they can say is no.
  2. Official APIs > Scraping: Even though scraping "works," the reliability and speed of an official API is worth the effort to get approval.
  3. Performance matters for retention: When I cut export time from 2 hours to 20 minutes for 1000 meetings, customer satisfaction went way up.
  4. Partnership credibility sells: Being an "Official Fathom Partner" dramatically improved conversion rates compared to "Chrome extension that works with Fathom."

Results

  • $29 one-time purchase (no subscription)
  • 25x faster than manual (30 sec per meeting → 1.2 sec per meeting)
  • Handles 5000+ meetings without breaking
  • Live demo calculator

Try FathomExporter →

If you're building tools on top of other platforms, don't assume you can't get official access. Sometimes you just need to ask.

Top comments (1)

Collapse
 
onlineproxy profile image
OnlineProxy

From being a small Chrome extension to an official API partner, I learned that technical triumph is not business triumph - scaling responsibly within another company’s ecosystem involves communication, compliance, and trust. I approached Fathom after publicly displaying real user results, which paved the path for partnership. The Official Partner designation virtually doubled conversions and reduced support tickets by one-quarter due to improved reliability. From a tech perspective, we transitioned from scraping to a safe OAuth 2.0 flow with a Node.js backend that handled tokens, caching, and rate limiting. This transition made the product 10x faster and immensely more scalable.