How to get Claude building you a lead list with a free scraper called ScrapeGraphAI, then set it to run every morning so the list keeps growing without you.
Before you start
Read this bit before anything else. In Australia, the Spam Act says you need consent before you send anyone a marketing email or text. The ACMA’s own page also says you can’t use a list built with address-harvesting software. Pulling emails off websites and blasting them is exactly what gets businesses fined. So this guide builds a list of businesses to call, research or approach properly, not an email list. The rules are on the ACMA spam page. If you’re unsure, get advice before you contact anyone.
If you plan to cold call, check the Do Not Call Register rules on the ACMA site first.
It’s free, mostly. ScrapeGraphAI is free and open source. It needs an AI model to read the pages. If you run a model on your own computer it costs nothing. If you use a paid one like ChatGPT’s API, you pay for what it uses.
It runs on your computer. So you need Claude Code, and your computer needs to be on for the morning run.
Check the site first. Some websites don’t allow scraping in their terms. Check before you point it at a site, and stick to public business listings.
Step 1: Install it
Open Claude Code and paste this in:
Install ScrapeGraphAI from https://github.com/ScrapeGraphAI/Scrapegraph-ai on my computer. Set it up in its own folder and virtual environment, install everything it needs including Playwright, and set it up to use a free local model through Ollama so I'm not paying for API calls. I'm not technical, so do every step yourself and tell me when it's ready.
It’ll take a few minutes and may ask you to approve some installs. Say yes.
You’ll know it worked when Claude tells you it’s ready and has run a test scrape without errors.
Step 2: Test it on one page
Start small so you can see what it pulls before you scale up. Find one public listing page for the kind of business you’re after, then paste this in:
Use ScrapeGraphAI on this page: [paste the URL]. Pull out every business listed with these fields: business name, suburb, phone number, website, and what they do in a few words. Save it as a spreadsheet called test-leads.csv and show me the first 10 rows.
You’ll know it worked when you open the spreadsheet and the rows match what’s on the page. Check 3 or 4 by hand.
Step 3: Build the real list
Now tell it who you’re actually after:
Build me a lead list of [type of business] in [area], for example every plumber in Western Sydney with a website. Use ScrapeGraphAI's search pipeline to find them across multiple search results and public listing pages. For each business, get: business name, suburb, phone number, website, what they do, and the page you found them on. Don't collect personal email addresses. Remove duplicates, then save everything to leads.csv and tell me how many you found.
You’ll know it worked when you’ve got a spreadsheet of real businesses in the right area, with a source link on every row so you can check it.
Step 4: Sort the good ones to the top
A list of 300 names is only useful if you know who to call first:
Go through leads.csv. Visit each business's website and add 2 columns: a score from 1 to 5 for how good a fit they are for [what you sell], and one line on why. Flag anyone whose site looks abandoned or who's clearly out of the area. Sort the list best to worst and save it as leads-ranked.csv.
You’ll know it worked when the top 10 are businesses you’d genuinely want to talk to.
Step 5: Make it run every morning
This is the bit that makes it worth setting up:
Turn everything we just did into a job that runs automatically every morning at 7am. Each run, find any [type of business] in [area] that isn't already in leads-ranked.csv, score them the same way, and add them to a new tab or a file called new-leads-[today's date].csv. Set this up on my computer so it runs without me, and show me how to check it ran.
You’ll know it worked when there’s a new file waiting for you the next morning. If nothing new turned up, it should still say so, rather than failing without a trace.
Troubleshooting
It keeps erroring on the install. Tell Claude Code to read the error, fix it and try again. Most install errors are a missing piece Claude can add itself.
The results are messy or half empty. The free local model is weaker than the paid ones. Point it at cleaner listing pages first, or ask Claude to switch to a paid model if the list is worth it.
It finds businesses from the wrong area. Add the suburbs by name to the prompt, and tell it to drop anything outside them.
Nothing ran this morning. Your computer was probably asleep or off. Ask Claude to check the job and show you when it last ran.
A site blocks it. Leave that site out. Don’t try to get around it.
