Back to The Times of Claw

DenchClaw + Apollo.io: Lead Enrichment Without the API Fees

Apollo.io lead enrichment using DenchClaw's browser agent — no API fees, no credits. Pull emails, phones, company data into DuckDB with your existing login.

Mark Rachapoom
Mark Rachapoom
·8 min read
DenchClaw + Apollo.io: Lead Enrichment Without the API Fees

DenchClaw + Apollo.io: Lead Enrichment Without the API Fees

Apollo.io charges anywhere from $49 to $149/month for API access, and even then you're burning through export credits. DenchClaw's browser agent already has your Apollo session — it copied your Chrome profile when you installed it. That means you can enrich leads directly through Apollo's web interface, the same way you'd do it manually, except the AI does it for you and stores everything in DuckDB.

Here's how to set it up and run your first enrichment.

How the Browser Agent Works With Your Existing Session#

When you run npx denchclaw, DenchClaw copies your Chrome profile into its own managed browser instance. This isn't a fresh browser — it inherits your cookies, saved logins, and session tokens. If you're logged into Apollo in Chrome, you're logged in through DenchClaw's browser too.

This matters because:

  • No API key setup required
  • No per-export credit usage (you're browsing, not calling the API)
  • You get the same data you'd see if you opened Apollo yourself
  • Works with your existing Apollo plan, whether free or paid

The browser agent navigates Apollo programmatically using your session. It can search for people, open profile pages, extract contact data, and then write that data directly to your DuckDB database.

You can trigger this through Telegram, WhatsApp, Discord, or the DenchClaw web UI:

"Enrich the leads in my Apollo list named Q2 Outreach"
"Pull email and phone for everyone in my CRM with status = Lead"
"Find Apollo data for Sarah Chen at Acme Corp"

DenchClaw translates those into browser automation tasks and syncs results back to your contact entries.

Step-by-Step: Enriching a Lead List From Apollo#

Here's the full workflow for enriching a batch of leads.

Step 1: Have contacts in your CRM#

First, make sure the contacts you want to enrich exist in DenchClaw. You can import them from a CSV, add them manually, or let DenchClaw create them from a webhook (Typeform, Calendly, etc.).

Check what you have:

SELECT name, company, email
FROM v_contacts
WHERE email IS NULL
ORDER BY created_at DESC
LIMIT 20;

These are the contacts that need enrichment — they have names and companies but no email yet.

Step 2: Trigger enrichment via natural language#

Send a message to DenchClaw through your preferred channel:

"Go to Apollo and find emails for all contacts where email is null.
 Use their name and company to search."

DenchClaw will:

  1. Query DuckDB for contacts missing email
  2. Open Apollo in the browser agent
  3. Search each person by name + company
  4. Extract available contact data
  5. Write results back to the entries table

Step 3: Watch it run#

The browser agent runs in the background. You can check progress:

"How many contacts have been enriched so far?"

Or query directly:

SELECT
  COUNT(*) FILTER (WHERE email IS NOT NULL) AS enriched,
  COUNT(*) FILTER (WHERE email IS NULL) AS pending,
  COUNT(*) AS total
FROM v_contacts
WHERE status = 'Lead';

Step 4: Review and verify#

Once the enrichment run finishes, DenchClaw summarizes what it found. You can then spot-check:

SELECT name, company, email, phone, linkedin_url
FROM v_contacts
WHERE updated_at > NOW() - INTERVAL '1 hour'
ORDER BY updated_at DESC;

What Data You Can Pull From Apollo#

Apollo's web interface exposes more data than most people realize. Through the browser agent, DenchClaw can extract:

Contact-level data:

  • Work email address
  • Direct phone number (when available)
  • Mobile phone (with Apollo's phone reveal feature)
  • LinkedIn profile URL
  • Job title and seniority
  • Department

Company-level data:

  • Company name and website
  • Employee count / headcount range
  • Industry and sub-industry
  • HQ location
  • Annual revenue estimate
  • Technologies used (tech stack)
  • Funding stage and total raised

Engagement data:

  • Whether they've opened emails in Apollo sequences
  • Stage in any existing Apollo sequence

All of this gets mapped to fields in your DuckDB entries table. If a field doesn't exist yet, DenchClaw can create it.

How It Syncs to DuckDB#

DenchClaw's data model uses an EAV (Entity-Attribute-Value) schema. Each contact is an object, and each piece of data (email, phone, company size) is stored as a field-value pair in the entry_fields table.

After enrichment, your data looks like this:

-- See all enriched fields for a contact
SELECT
  o.name,
  f.name AS field_name,
  ef.value
FROM objects o
JOIN entries e ON e.object_id = o.id
JOIN entry_fields ef ON ef.entry_id = e.id
JOIN fields f ON f.id = ef.field_id
WHERE o.name = 'Sarah Chen'
ORDER BY f.name;

You can also use the PIVOT view for a flat, readable format:

SELECT *
FROM v_contacts
WHERE name = 'Sarah Chen';

When Apollo returns data that updates an existing field value, DenchClaw preserves the old value in history and writes the new one as current. Nothing is lost.

Apollo API Access vs. DenchClaw Browser Agent: A Comparison#

FeatureApollo API ($49-149/mo)DenchClaw Browser Agent
CostMonthly subscription + credit costsFree (uses your existing Apollo plan)
Credits per exportDeducted from your allowanceNot charged
SetupAPI key, SDK integrationAlready works if you're logged in
Data freshnessSame databaseSame database
Rate limitsAPI rate limits applyHuman browsing speed
Bulk operationsBatch API callsSequential browser navigation
ReliabilityHigh (direct API)Dependent on Apollo UI changes

The browser agent is slower than the API for large lists — it navigates pages like a human would. For 50-100 leads at a time, it's fast enough. For thousands of contacts, you might want to queue up the enrichment and let it run overnight.

The economics are straightforward: if you're already on Apollo's free or basic plan, you get enrichment functionality that would otherwise require an API upgrade. If you're on a paid plan, you stop burning export credits.

DuckDB Queries for Post-Enrichment Analysis#

Once your contacts are enriched, DuckDB lets you slice the data quickly.

Contacts by company size (for prioritization):

SELECT
  CASE
    WHEN CAST(employee_count AS INT) < 50 THEN 'SMB'
    WHEN CAST(employee_count AS INT) < 500 THEN 'Mid-Market'
    ELSE 'Enterprise'
  END AS segment,
  COUNT(*) AS count
FROM v_contacts
WHERE employee_count IS NOT NULL
GROUP BY 1
ORDER BY count DESC;

Contacts with phone but no email (call-first outreach):

SELECT name, company, phone, title
FROM v_contacts
WHERE phone IS NOT NULL
  AND email IS NULL
ORDER BY company;

Enrichment coverage by status:

SELECT
  status,
  COUNT(*) AS total,
  COUNT(email) AS has_email,
  ROUND(100.0 * COUNT(email) / COUNT(*), 1) AS email_pct
FROM v_contacts
GROUP BY status
ORDER BY total DESC;

High-value targets: enterprise + director level or above:

SELECT name, company, title, email, linkedin_url
FROM v_contacts
WHERE employee_count::INT > 500
  AND title ILIKE ANY ('%VP%', '%Director%', '%Head of%', '%CXO%', '%Chief%')
ORDER BY company;

Frequently Asked Questions#

Does using the browser agent violate Apollo's terms of service?

Apollo's terms restrict automated API access without authorization. The browser agent mimics normal user browsing — it's operating your account through a browser, the same as you clicking around manually. That said, you should review Apollo's current ToS for your plan. High-volume automated access may be restricted regardless of method.

What if Apollo's UI changes and breaks the integration?

DenchClaw's browser agent uses AI to navigate and extract data, not hardcoded CSS selectors. It can recover from minor UI changes. If Apollo does a major redesign, an update to DenchClaw may be needed, but this is a known limitation of browser-based integrations.

Can I enrich contacts in bulk automatically?

Yes. You can set up a scheduled task: "Every Monday morning, enrich any new leads added in the past week." DenchClaw will queue the enrichment and run it in the background. Set a reasonable batch size (50-100 contacts per run) to avoid triggering any rate limiting on Apollo's end.

What Apollo plan do I need?

Any plan, including free. The browser agent uses whatever access your account already has. If you're on the free plan with limited phone reveals per month, you'll still be limited to that quota — DenchClaw doesn't bypass account-level restrictions.

Can I enrich from Apollo Lists specifically?

Yes. You can tell DenchClaw: "Pull all contacts from my Apollo list named 'Q2 Prospects'" and it will navigate to that list, extract the visible data, and sync it to DuckDB. This is useful when you've already done targeted prospecting in Apollo and want to pull the results into your local CRM.

Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →

Mark Rachapoom

Written by

Mark Rachapoom

Building the future of AI CRM software.

Continue reading

DENCH

© 2026 DenchHQ · San Francisco, CA