Automation & MCPs

How to Scrape Leads With AI and n8n (Free Clay Alternative)

How to scrape leads with AI and n8n: build a scraper that cleans, enriches, and writes outreach to a sheet. A free Clay alternative, caveats included.
D
Founder, Asset Academy
·8 min read ·August 8, 2026
Concept diagram of how to scrape leads with AI and n8n, showing a Google Maps search flowing through a scraper, an AI clean-and-enrich step, and a personalized outreach line written to a Google Sheet.
How to scrape leads with AI and n8n: a search query feeds a scraper, AI cleans and enriches each row, then writes a personalized outreach line to your sheet.
In this guide7 sections
  1. How do you scrape and enrich leads with AI and n8n?
  2. What do you need before you build?
  3. How do you build the scrape-clean-enrich workflow?
  4. Is scraping Google Maps and directories legal?
  5. Where this beats Clay, and where it doesn't
  6. Frequently Asked Questions
  7. Where to take this next

Clay is the tool everyone points to for scraping and enriching leads, and it works. It also starts at $185 a month and meters you in credits that drain fast. Here is how to scrape leads with AI and n8n instead: build the same result in an afternoon, a sheet of clean, enriched leads with a personalized first line already written, minus the monthly bill.

This guide walks the whole build: pull local businesses, clean and enrich each row with AI, write a one-to-one outreach line to a sheet. It also draws a hard line on the scraping caveats most tutorials skip, because a lead list that gets your accounts banned is no bargain.

How do you scrape and enrich leads with AI and n8n?

Four stages in one n8n workflow: a scraper node, an AI node that cleans the mess, a second AI node that enriches and writes the outreach line, and a Google Sheets node that saves the row.

To scrape leads with AI and n8n, you chain a scraper (or a compliant data API) into an AI clean-and-enrich step, then write the structured, personalized result to a sheet. n8n is the free, self-hosted plumbing that replaces Clay's paid credit system, and the AI does the judgment work a static enrichment tool can't.

New to the tool? The n8n for marketers beginner's guide covers nodes, triggers, and expressions so the steps below read as plain English.

What do you need before you build?

Three things: an n8n instance (Cloud or self-hosted, which keeps your data in-house), an AI credential from OpenAI, Anthropic, or Gemini, and a way to pull the raw listings.

That last one is the fork in the road. The compliant path is a business data API (the Google Places API, or a scraper service like Apify or Bright Data) called from n8n's HTTP Request node. The gray-area path is scraping a directory page directly. Read the caveats before you pick. The AI credential replaces Clay's marketplace: you pay cents per model call, not per enrichment lookup.

How do you build the scrape-clean-enrich workflow?

Five nodes.

Step 1: Set the search. Start with a Manual Trigger and a Set node that holds your target as fields: niche (say, "roofers"), city, and country_code. Query in one node means you point the workflow at a new market by editing one place.

Step 2: Pull the raw listings. Add an HTTP Request node. Point it at your data source (the Places API endpoint, or a scraper service's API) with the method it requires, usually POST, and pass your search fields in the body. Back comes a raw array of businesses with name, address, phone, website, and rating. This is the node the caveats govern.

Step 3: Clean the mess with AI. Add an AI node (the built-in AI Agent, or a Basic LLM Chain) and feed it one business at a time. The job is narrow: take a raw, inconsistent record and return clean, structured JSON. Normalize the phone, strip tracking junk from the URL, split the address, flag rows missing a website. Not enriching yet, just making the data trustworthy for the next step.

Step 4: Enrich and write the outreach line. Add a second AI node. Now the model does the work you would have paid Clay credits for: from the name, category, and website, infer a primary service, a likely pain point, and a segment tag. In the same call, have it write one cold-outreach opening line grounded in a real detail from the row. One prospect, one specific hook. To turn that line into a full sequence that still reads hand-written across hundreds of sends, the AI email marketing guide picks up where this leaves off.

Step 5: Save the row. Add a Google Sheets node set to "append row." Map every field the pipeline produced, business name, clean phone, website, service, pain point, tag, and outreach line, to a column. Run it. The sheet fills with finished leads.

Prompt to clean and enrich one scraped lead
You are a B2B lead-enrichment analyst. I will paste one raw business
record scraped from a directory. Do two things and return only JSON.

RAW RECORD:
[PASTE THE RAW BUSINESS OBJECT: name, address, phone, website, category, rating]

MY OFFER:
[ONE SENTENCE ON WHAT I SELL AND WHO IT IS FOR]

1. CLEAN: normalize phone to [FORMAT, e.g. E.164], strip query params
   from the website URL, split address into street/city/region/postcode,
   and set "has_website" true/false.
2. ENRICH: infer "primary_service", one likely "pain_point" for this
   business type, and a "segment_tag" from [YOUR TAG LIST].
3. WRITE: one "outreach_first_line" (max 30 words) that references a
   REAL detail from this record and connects to my offer. No greetings,
   no "I hope this finds you well," no invented facts.

Return JSON with keys: name, phone, website, street, city, region,
postcode, has_website, primary_service, pain_point, segment_tag,
outreach_first_line. If a field is unknown, use null. Never guess a
fact you cannot support from the record.

This is the part the "free Clay alternative" videos skip, and it can cost you. Draw the line before you run at volume.

Google's Maps Platform Terms, Section 3.2.3, are explicit: you may not scrape, pre-fetch, cache, or store Google Maps content outside the service, and that includes copying business names, addresses, and reviews. The sanctioned route is the Google Places API, which is why the compliant build above calls an API instead of scraping the Maps page.

Now the nuance. Courts have separated a terms violation from a crime: hiQ Labs v. LinkedIn held that scraping publicly available data is not itself illegal, and Van Buren v. United States narrowed the Computer Fraud and Abuse Act so breaking a site's terms is not automatically a federal offense. So scraping public business info is generally not criminal, but it can still breach a platform's terms, and the platform can block your IP or ban your account.

The operator's stance: extract only publicly visible business facts (name, address, phone, website, rating), never user reviews, photos, or personal data, which carry copyright and privacy exposure. Prefer an official API or compliant scraper service, and respect robots.txt and rate limits. This is not legal advice; at real scale or in the EU, have a lawyer check your setup.

Where this beats Clay, and where it doesn't

The build wins on cost and control. Clay's self-serve plans climb from a free tier of 100 credits to $185 a month on Launch and higher on Growth, metered in credits per enrichment. Your n8n version has no seat fee and no credit meter: you pay the flat cost of your instance plus cents per call.

Where Clay still wins: it ships with a large marketplace of data providers and waterfall enrichment that chains them until it finds a verified email or direct phone. Your build lacks that firepower unless you wire in a verification API yourself. If verified contact data is the whole job and your time is scarce, Clay may earn its bill. If you want to own the asset and keep costs flat, the n8n build is the operator's move.

Frequently Asked Questions

Is n8n really a free alternative to Clay?

The software is free and open-source, so there is no seat fee or credit meter. Your only costs are hosting (flat, or free while you self-host) and a few cents per AI call. It swaps Clay's paid enrichment credits for your own AI plumbing.

Can I use this workflow without paying for a scraper API?

Yes, if you scrape a directory page directly with the HTTP Request node instead of a paid API. But read the caveats section first: direct scraping can breach a platform's terms, and free on the API side often means gray-area on compliance.

Which AI model should I use for enrichment?

Any capable model (OpenAI, Anthropic Claude, or Gemini) handles it, since it is structured reasoning over one record at a time. Pick on cost per call and JSON reliability, and keep clean and enrich as separate nodes.

How do I keep the outreach lines from sounding like a mail merge?

Force the model to reference one real detail from each record and ban greetings, filler, and invented facts, exactly as the prompt above does. The difference between spam and a hand-written opener is one specific hook.

Where to take this next

You now have the four-stage pattern that replaces a paid enrichment tool: pull, clean with AI, enrich and write the line, save to a sheet. A fresh list of any niche in any city costs an API call and a few minutes, not a credit budget. The next build wires this pipeline into your outreach tool so leads flow into a sequence, which the no-code marketing workflows guide maps out. For the exact node configs, prompt tuning, and feedback on your own build, join the operators inside Asset Academy.

D
Don Lyons is the founder of Asset Academy. He has been building and selling digital assets since 2007, and writes across every category with a bias toward the moves that actually move money.
Build it with us

Stop reading about copy. Write it with operators who ship.

Inside the Asset Academy community we build the copy, funnels, and offers together, with the prompts and the feedback. $96/mo, or save with annual.

Join the community →