🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Apollo to Airtable, clean leads without duplicates

Lisa Granqvist Partner Workflow Automation Expert

Your lead list starts clean. Then one scrape turns into three versions of the same person, missing websites, blank emails, and a base nobody trusts. You end up doing the worst kind of work: copy-paste plus “wait, didn’t we already contact them?”

This Apollo Airtable dedupe setup hits sales ops first, because they’re the ones cleaning the mess. A founder doing outbound feels it too. Same for a recruiter building candidate lists. The outcome is simple: a usable Airtable CRM that stays organized automatically.

You’ll see exactly how the workflow pulls search URLs, fetches prospects, removes duplicates, and sorts records into the right Airtable tables so outreach can start faster.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Apollo to Airtable, clean leads without duplicates

The Challenge: Dirty lead data that ruins outreach

Pulling leads from Apollo is the easy part. Turning that raw export into something you can actually work from is where the hours disappear. You get duplicates because the same person appears in multiple searches, or because one row has a personal email and another has a work email. Then you spot blanks: no website, no email, or half-filled fields that make filtering useless. After a couple of runs, your Airtable base becomes “mostly right,” which is honestly worse than wrong because your team stops trusting it.

The friction compounds. Here’s where it breaks down.

  • You waste about 1–2 hours per import cleaning duplicates and matching records by hand.
  • Outreach lists get contaminated, which means reps email people twice or skip them entirely.
  • Leads without a website or key fields sneak in and bloat your base, so every view loads slower and filtering feels unreliable.
  • Teams end up building “shadow spreadsheets” in Google Sheets to do basic sorting and segmentation that the CRM should handle.

The Fix: Apollo leads synced into Airtable, deduped and sorted

This n8n workflow turns Airtable into the control center for your Apollo scraping and cleanup. You store one or more Apollo search URLs in Airtable, then run the automation when you’re ready. n8n fetches the lead data via an HTTP request (using an Apollo scraper service like Apify behind the scenes), maps every lead into clean Airtable-friendly fields, and removes repeats based on key identifiers like name and email. After that, it filters out incomplete records (like missing websites) and routes each lead to the right Airtable table depending on whether an email exists and what type it is. The end result is a base that stays workable even as volume grows.

The workflow starts with Airtable as the “input queue” of search URLs. It then pulls leads, cleans them, and makes a decision: work email table, personal email table, or a separate no-email table for enrichment later. That sorting is what keeps your outreach lists clean.

What Changes: Before vs. After

Real-World Impact

Say you run 5 Apollo searches per week and each one returns about 200 leads. Manually, exporting, importing, deduping, and sorting usually costs about 2 hours per search, so that’s roughly 10 hours weekly. With this workflow, you paste the search URLs into Airtable, hit run, and wait for processing (often 10–20 minutes depending on volume and the scraper). You still review the final tables, but the cleanup work is basically gone.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Airtable for search URL input and lead tables
  • Apify (Apollo scraper) to scrape Apollo search results
  • Apify API token (get it from Apify Console → API)

Skill level: Intermediate. You’ll connect accounts, map fields once, and confirm your Airtable table structure matches the workflow.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

You launch it on demand. A manual trigger starts the run, which is useful when you want control over timing (for example, after you’ve updated search URLs in Airtable).

Search URLs are pulled from Airtable. The workflow reads the URL(s) you’ve saved, so your team doesn’t have to touch n8n every time a new Apollo query is needed.

Leads are fetched and normalized. An HTTP request pulls lead data from the scraper, then a mapping step reshapes fields into something Airtable can store cleanly (names, company, LinkedIn, emails, and whatever else you choose to keep).

Duplicates are removed and records are routed. n8n removes repeats, filters out low-value records like missing websites, then checks email availability. Leads with work emails go to one Airtable table, personal emails go to another, and no-email leads are kept separate so they don’t pollute your outreach views.

You can easily modify the dedupe keys and the “valid lead” filter to match your market, so enterprise targeting won’t be treated the same as SMB lists. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts on-demand and is initiated manually before it pulls lead data.

  1. Add the Manual Launch Trigger node as the start of the workflow.
  2. Leave all default settings as-is since no parameters are required.
  3. Confirm the execution flow starts from Manual Launch TriggerRetrieve Search URL.

Step 2: Connect Airtable for Search URL Retrieval

Pull the Apollo search URL from Airtable to drive the data fetch.

  1. Add Retrieve Search URL and set Operation to search.
  2. Select the correct Airtable Base and Table (e.g., Real Estate CTO and IT ManagersApollo URL).
  3. Credential Required: Connect your airtableOAuth2Api credentials in Retrieve Search URL.
  4. Verify the output includes the URL field used by downstream nodes (referenced as {{$json.URL}}).

⚠️ Common Pitfall: If the Airtable row doesn’t include a populated URL field, Apollo Data Fetch will send an empty {{$json.URL}} value and return no leads.

Step 3: Fetch Leads from Apollo and Map Fields

Use an HTTP request to pull leads and normalize data fields for storage.

  1. Add Apollo Data Fetch and set URL to =https://api.apify.com/v2/acts/jljBwyyQakqrL1wae/run-sync-get-dataset-items.
  2. Set Method to POST and Specify Body to json.
  3. Set JSON Body to ={"getPersonalEmails": true,"getWorkEmails": true,"totalRecords": 1100,"url": "{{ $json.URL }}"}.
  4. Add header Authorization with =Bearer [CONFIGURE_YOUR_TOKEN] and update the token value.
  5. Set query parameters timeout to 600000 and memory to 32768.
  6. Connect Apollo Data Fetch to Map Lead Fields.
  7. In Map Lead Fields, create assignments such as first_name{{ $json.first_name }} and Company Name{{ $json.organization.name }}.
  8. Include all mapped fields shown: last_name, name, linkedin_url, Job Title, Website, Company Linkedin, personal_email, Twitter_url, email_status, and email.

Tip: Keep field names in Map Lead Fields exactly aligned with Airtable column names to avoid empty values during record creation.

Step 4: Deduplicate and Filter Leads

Remove repeated contacts and ensure only leads with websites move forward.

  1. Add Eliminate Repeats after Map Lead Fields to remove duplicates.
  2. Add Filter Website Present after Eliminate Repeats.
  3. In Filter Website Present, set the condition to check if {{ $json.Website }} exists.
  4. Confirm execution flow: Map Lead FieldsEliminate RepeatsFilter Website PresentCheck Email Exists.

⚠️ Common Pitfall: If Map Lead Fields doesn’t assign Website, Filter Website Present will filter out all records.

Step 5: Configure Conditional Routing and Airtable Outputs

Route leads based on email availability and create records in the correct Airtable tables.

  1. Add Check Email Exists with a condition that {{ $json.email }} exists.
  2. Connect the true output of Check Email Exists to Create Email Record.
  3. Connect the false output of Check Email Exists to Check Personal Email, which checks {{ $json.personal_email }} exists.
  4. Connect the true output of Check Personal Email to Create Personal Email Record.
  5. Connect the false output of Check Personal Email to Create No-Email Record.
  6. Credential Required: Connect your airtableOAuth2Api credentials in Create Email Record, Create Personal Email Record, and Create No-Email Record.
  7. In Create Email Record, map columns like Email{{ $ifEmpty($json.personal_email, $json.email) }}, Company{{ $json['Company Name'] }}, and Website{{ $json.Website }}.
  8. Use the same field mapping structure in Create Personal Email Record and Create No-Email Record, ensuring the target Airtable tables are correct.

Tip: Double-check Airtable table selection in each create node, especially Create No-Email Record which uses the Contacts without emails table.

Step 6: Test and Activate Your Workflow

Run a manual test to verify that leads are fetched, deduplicated, and routed into the correct Airtable tables.

  1. Click Execute Workflow from the editor to run Manual Launch Trigger.
  2. Verify Apollo Data Fetch returns lead data and Map Lead Fields outputs populated fields like Website and email.
  3. Confirm that Check Email Exists and Check Personal Email route records to the correct Airtable nodes.
  4. Check Airtable to ensure records appear in Contacts with email or Contacts without emails with the expected values.
  5. Once validated, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • Airtable credentials can expire or need specific permissions. If things break, check the connected account in n8n’s Credentials and confirm the base/table access first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Common Questions

How quickly can I implement this Apollo Airtable dedupe automation?

About an hour if your Airtable base is ready and you have your scraper token.

Can non-technical teams implement this lead deduping outcome?

Yes, but someone has to be comfortable mapping fields and testing a small batch first. No coding, just careful setup.

Is n8n free to use for this Apollo Airtable dedupe workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Apify/Apollo scraping costs, which depend on how many leads you pull.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

How do I adapt this Apollo Airtable dedupe solution to my specific challenges?

Start by changing what counts as a “duplicate” in the Eliminate Repeats step (for some teams it’s email, for others it’s email plus LinkedIn URL). You can also tighten or loosen the Filter Website Present step depending on whether a website is required for your outreach. If your team treats personal emails differently, adjust the Check Personal Email decision so those records route to the right Airtable table.

Why is my Airtable connection failing in this workflow?

Usually it’s permissions or the table/base changed names. Reconnect the Airtable credential in n8n, then confirm the base, table, and field IDs still match what the workflow expects.

What’s the capacity of this Apollo Airtable dedupe solution?

It can handle large pulls (the scraper supports up to about 50,000 leads), but capacity is mainly limited by your n8n plan, your server resources, and Airtable API limits. On n8n Cloud Starter you can run plenty of weekly scrapes for a small team, and higher plans handle more volume. If you self-host, executions aren’t capped, but you still need enough memory to process batches without timing out. In practice, many teams run this in smaller chunks (a few thousand leads at a time) to keep Airtable writes steady and easier to QA.

Is this Apollo Airtable dedupe automation better than using Zapier or Make?

Often, yes, because deduping and conditional routing get messy fast in simpler tools. n8n handles branching logic cleanly, and self-hosting means you’re not paying extra per step when you scale. The downside is you’ll spend a bit more time up front mapping fields and testing. If your process is just “Apollo export → Airtable import,” Zapier or Make can be fine. For anything beyond that, n8n tends to be the calmer option. Talk to an automation expert if you want a quick recommendation based on your volume.

Airtable stays clean, outreach stays sane, and your lead engine stops depending on someone’s patience. Set it up once, then let the workflow do the boring part.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal