Back to all articles
How I Scraped 1,000 Contacts in One Hour
My Articles

How I Scraped 1,000 Contacts in One Hour

Detailed how-to: Apollo.io + n8n + Supabase pipeline for B2B lead generation. 1,034 contacts in 67 minutes, with step-by-step setup, GDPR notes, and real campaign results.

11 min readBy Ivan Bobanović

Case study: 1,034 B2B contacts in 67 minutes. Apollo.io + n8n + Supabase stack, €10,200+ in revenue from the first campaign. Here's how the process ran, what worked, what didn't, and the one rule that keeps 90% of spam filters off your back.

Sažetak

  • Client: wanted a list of founders and heads of growth in SaaS and e-commerce companies, 11-200 employees, EU region
  • Tools: Apollo.io (data), n8n (orchestration), Supabase (dedupe + storage)
  • Result: 1,034 contacts, 12% bounce, 23 booked meetings, 4 new clients, €10,200+ revenue over 6 months
  • Tech duration: 67 minutes from kickoff to a CSV ready for import
  • Most important lesson: it's not scraping. It's data licensing. The economics flipped in favor of legitimate sources.

2026 isn't 2023

Three years ago the same project would have been done scraping LinkedIn through Phantombuster or a custom Puppeteer script.

Not anymore.

Here's why.

In 2024, LinkedIn won a Court of Appeal precedent (hiQ Labs v. LinkedIn) that significantly narrows what you can automate. Account bans land in days, not weeks. Microsoft is actively pursuing scrapers.

Cloudflare Bot Management, PerimeterX, Imperva — ML models that detect automated traffic in real time. Puppeteer with rotating proxies is no longer enough.

[Apollo.io](https://www.apollo.io), meanwhile, has 275 million B2B profiles. Opt-in legal basis — every contact consented to data sharing. €49/mo for 3,000 credits.

Do you see what that means?

For €20-30 in credit cost you get 1,000 legitimate contacts. No ban. No proxy hell. No Microsoft lawyers waiting around the corner.

**Principle:** it's not scraping. It's data licensing. Cheaper. Faster. Legal.

The client and the brief

The client needed 1,034 qualified B2B contacts for outreach.

The brief, in one sentence:

*"Ivan, I want a list of founders and heads of growth in SaaS and e-commerce companies with 11 to 200 employees, in the EU. No agencies, no freelancers, no enterprise."*

Manually, that's 80 hours of work. Two full-time weeks for one person.

We did it in 67 minutes.

ICP is 80% of the game

Before I touched Apollo, we sat down for 15 minutes and defined the ICP and the anti-ICP.

On the list:

  • SaaS, e-commerce, professional services
  • 11-200 employees
  • EU primary, US secondary
  • Role: founder, CEO, head of growth, head of marketing

Off the list:

  • Freelancers and solo consultancies (no budget)
  • Enterprise 500+ (sales cycle 6+ months, outreach doesn't fit)
  • Regulated industries (healthcare, banking — compliance friction)
  • LinkedIn profiles under 2 years old (fake-account signal)

Why spend time writing the anti-list?

Because without a clear ICP, reply rate drops 3-5×. 500 precisely targeted beats 5,000 generic.

This one decision drives 80% of the gap between a successful and a failed campaign. Everything else — tool, template, delivery — is execution.

Tool stack — why these three

Apollo.io. 275M profiles, Search API with 40+ filter fields, bulk enrichment. I considered Clay.com (more expensive, overkill), Hunter.io (email finder only), Phantombuster (LinkedIn integration — skip).

[n8n](https://n8n.io). Self-hosted orchestration. 400+ integrations, visual editor, JavaScript node for custom logic. €6/mo on a Hetzner VPS. The alternative is Make.com — good, but it charges per operation. For batches over 1,000 records it gets expensive fast.

Supabase. PostgreSQL-as-a-service. Two functions: dedupe (unique index on email + company_name) and a long-term database of every contact for exclusion lists.

**Principle:** the stack follows the problem, not the other way around. I didn't pick Apollo because it's the newest tool. I picked it because it solves this client's exact problem.

The process — 6 steps

1. Setup — 5 min. Apollo API token, n8n HTTP Header Auth credential, test request → 200 OK.

2. Filter query — 10 min. Apollo Search API with a JSON body: person_titles, organization_industry_keywords, employee ranges, location. 100 profiles per call.

3. Batch pagination — 30 min. n8n Loop node through 10 pages. Wait 500ms between calls because of the rate limit. Each response normalized into flat JSON.

4. Enrichment — 15 min. Apollo's `people/match` endpoint pulls phone, company summary, LinkedIn activity score. Batch 50 profiles.

5. Dedupe + upsert — 10 min. Each contact runs through `SELECT id FROM contacts WHERE email = $1 OR (company_name = $2 AND full_name = $3)`. Match → skip. No match → insert.

6. CSV export — 2 min. Flatten JSON to CSV. Upload to [Instantly.ai](https://instantly.ai).

67 minutes from kickoff. CSV in hand. Ready to send.

GDPR — the part 90% of people skip

Three tiers:

Green. Apollo, ZoomInfo, Clearbit. Opt-in databases. Legal basis: legitimate interest (GDPR Art. 6(1)(f)). Condition: privacy notice in the first outreach email + a clear opt-out link.

Yellow. Scraping public profiles (business registries, Google Maps, Crunchbase). Technically legal for B2B company data. More problematic for individuals (names + emails). I only use it for company-level data, never for individuals.

Red. LinkedIn scraping, Facebook/Instagram profiles, Google dork email discovery. Bans. GDPR complaints. Spam reputation damage.

Croatia note: AZOP (the Croatian data protection authority) has stepped up investigations for cold outreach without a legal basis. Privacy policy link in every email + opt-out in the first paragraph = safe.

The wider compliance frame is in the [pillar post on AI automation for small businesses](/en/blog/ai-automation-for-small-businesses).

Results — 60 days in

  • 1,034 contacts in the final CSV
  • 12% bounce rate (normal: 8-15%)
  • 908 valid email addresses after delivery
  • Open rate 41% (industry: 25-35%)
  • Reply rate 6.8% (industry: 3-5%)
  • 23 booked meetings
  • 4 new clients
  • €10,200+ in revenue over the first 6 months

What worked: first-paragraph personalization — company LinkedIn summary → one custom sentence. Biggest lift on reply rate.

CTA "15-min call" beat "30-min demo". 2× more bookings.

What didn't: direct ask in the first email ("Are you available for a call?") — 0% reply rate. Works only after 2-3 value-add messages.

Sending on Friday or Sunday — 60% lower open rate. Every time.

Three most common mistakes

1. Sending without ICP filtering. The "send to everyone" mentality. Every off-ICP contact drops your domain reputation. 100 off-ICP emails = +15% bounce rate on every campaign after.

2. Ignoring dedupe. Sending to the same person twice in 6 months = spam complaint + Gmail/Outlook suppression. Every production pipeline needs a dedupe layer. No exceptions.

3. One sequence for everyone. Founder isn't marketing director isn't CFO. Each segment has a different pain point. Minimum 3 variants, personalized by role.

Self-service or turnkey

If you're tech-comfortable:

  • Apollo Basic €49/mo (3K credits)
  • n8n self-hosted €6/mo (Hetzner VPS)
  • Supabase Free tier €0
  • Instantly.ai Growth €97/mo (5K emails/mo)
  • €152/mo + 8-12 hours of setup the first time

If not — Fraviz builds it:

  • Growth package €1,500 one-time: setup + testing + documentation + 30-day support
  • Tools paid directly (~€150/mo ongoing)
  • First results in 2 weeks from kickoff

The math is the same. If the campaign brings in 1-2 new clients worth €3K+, the full setup pays for itself in the first month.

The advisor strategy I used to design prompts inside this pipeline is covered in detail in the [post on the Claude Advisor approach](/en/blog/advisor-strategy).


Want me to take a look at your ICP?

If you're thinking about B2B outreach, or you already have a list that's not delivering — reach out through the form below or book a [15-min call](https://cal.com/fraviz/15min).

I'll look at your ICP, your industry, your market. And give you an honest read: is scraping the right play for you or not. No sales script, no obligation.

I reply within 24 hours on business days.

Frequently asked questions

Is web scraping legal in Croatia and the EU?

It depends on the source. Publicly accessible data (business registries, Google Maps, Crunchbase) sits in a grey area — precedents go both ways. A safer path is B2B data providers like Apollo that have a legitimate legal basis (opt-in database + GDPR compliance). LinkedIn scraping — no. It violates Terms of Service, and there's a Court of Appeal precedent (hiQ Labs v. LinkedIn, 2024).

How much does Apollo.io cost for this use case?

The free plan covers 100 credits per month — enough to test. Paid plans start at €49/mo for 3,000 credits (1 credit = 1 contact export). For a single batch of 1,000 contacts, expect €20-30 in credit cost. Additional pipeline costs: self-hosted n8n €6/mo, Supabase free tier €0, Instantly.ai €97/mo for delivery.

Can I use the same workflow for LinkedIn scraping?

Technically yes (via Phantombuster or custom Puppeteer), but LinkedIn Terms of Service explicitly forbid it and Microsoft is actively pursuing scrapers. Account bans land in days. Better alternative: Apollo or LinkedIn Sales Navigator (legitimate API) — you get the same data legally.

What about email deliverability after this kind of outreach?

Warm up the domain for 2 weeks before outreach — this is critical. Use SPF + DKIM + DMARC. Send 30-50 emails per day per mailbox (not 500). Tools: Instantly.ai or Lemlist (both have built-in warm-up pools). Bounce rate below 15% is healthy; above 20% means domain reputation damage.

How fast from "idea" to first conversion?

Tech setup: 1-2 days. Domain warm-up + first outreach campaign starts in week 2. First reply typically 3-7 days after sending. First conversion (call → proposal → client) realistically 3-8 weeks from first send. In this project, 4 clients landed in a window from 60 days to 4 months after initial send.

Need help implementing this?

Schedule a free consultation call and let's discuss how we can automate and optimize your workflows.

Send Inquiry