← All apps

Built in-house

B2B Lead Scraper

Built for

Anyone who needs fresh B2B leads - without buying stale lists

Pick a country, cities and industry. The scraper finds every matching business, visits their websites, extracts emails, and hands you an Excel file - ready for outreach in minutes.

PythonFlaskRapidAPIGeoNamesClaude AI
B2B Scraper
B2B Scraper - main interface

What we built

An assistant that finds B2B contact data so you don't have to

Bought lead lists are always stale and never quite match your target area. The scraper builds fresh lists for any country and industry, straight from live sources - with emails extracted from company websites, integrated web auditing and instant export.

  • Country → region → city selection from the GeoNames database (worldwide)
  • Company search by industry and custom keywords
  • AI (Claude Haiku) auto-suggests 15 relevant search keywords for the chosen industry
  • Automatic website visits per company and email extraction
  • Advanced filters: minimum rating, review count, mandatory email, website type
  • Live tracking via SSE - new companies appear in the table in real time
  • Checkpoint system - jobs can be paused and resumed without any data loss
  • Per-company web audit: mobile, HTTPS, Google Analytics, CTA, platform
  • CSV / XLSX export ready to import into InboxIQ or any CRM

Search setup

Choose industry, keywords and cities - in a few clicks

Select your country and cities from the GeoNames list, pick an industry from a pre-configured dropdown, and add search keywords. If you're not sure what to enter, hit "Suggest" and the AI generates 15 relevant English terms - optimised for the business data API.

B2B Scraper - Industry & Keywords
B2B Scraper - Industry and keyword selection

Live progress

Watch the search in real time - every business appears as it's found

Via SSE (Server-Sent Events), each new business appears in the table instantly - no page reload. The progress bar shows the percentage complete, how many companies have been found and how many unique emails collected - all live. You can pause and resume at any point without losing the data already collected.

B2B Scraper - Advanced filters
B2B Scraper - Live progress

AI suggestions

Claude generates your keywords - no guesswork needed

Press "Suggest" and Claude Haiku analyses the chosen industry and returns 15 English keywords, optimised for the RapidAPI business database. The feature is optional - if you have an Anthropic API key, enable it in settings and it's ready instantly.

B2B Scraper - AI suggestions
B2B Scraper - AI keyword suggestions

Collected results

Name, email, phone, website and rating - in a single table

The results table shows for each business: company name, contact email, phone number, website, physical address, Google rating and review count. When done, download everything as CSV or XLSX, ready to import into InboxIQ or any CRM - no manual steps.

B2B Scraper - Live results
B2B Scraper - Results table

Search history

All generated lists, with stats and download options

The "Lists" page keeps the full history of every search job: how many companies it found, how many unique emails, current status (completed / stopped / running). From there you can re-download the CSV or XLSX, restart a paused job, or delete old lists. Everything stored locally - no data ever leaves your machine.

B2B Scraper - Lists
B2B Scraper - Lists page
B2B Scraper - mobile interface
B2B Scraper - mobile lists page

Responsive interface

Works on mobile too

Though a desktop tool by nature, the Flask interface is built with Bootstrap and is fully responsive - you can start a search, track progress or download results from your phone, without installing anything.

Runs locally on your machine at localhost:5000 - no cloud server, no subscription, no usage limits imposed by us.

Why it matters

The advantages over bought lists

Geographically precise

Select the exact country, region and cities you want from the GeoNames database - covering the entire globe. No more receiving companies from the wrong area or the wrong industry.

Always fresh

Lists are generated live from RapidAPI Business Data, not from stale exports. Every search returns current information - addresses, phones, websites, ratings.

Real emails

Beyond the database email, the scraper visits each company's website and looks for emails on the homepage and /contact page. The result is more complete than any commercial database.

Integrated with InboxIQ

The CSV/XLSX export imports directly into InboxIQ for email campaigns or into AI Cold Calling for automated calls. The three tools form a complete pipeline from data to conversion.

Tech stack

Lean, fast, no heavy dependencies

Backend

  • Python 3.12
  • Flask 3.0
  • Gunicorn 22.0 (production)
  • Requests 2.32 (scraping)
  • OpenPyXL 3.1 (Excel export)
  • SSE - real-time progress

Data & storage

  • SQLite (GeoNames local)
  • JSON (jobs_state.json)
  • JSON checkpoint per job
  • CSV results (live update)
  • CSV audit UX + marketing

Frontend

  • Bootstrap 5.3 (UI)
  • HTML5 + CSS3
  • Vanilla JS
  • EventSource (SSE client)
  • Fetch API

External APIs

  • RapidAPI - Business Data
  • RapidAPI - LinkedIn (optional)
  • Anthropic Claude Haiku (optional)
  • GeoNames.org (offline)

Notable architecture

  • SSE (Server-Sent Events) - live progress without polling or WebSockets
  • Per-job checkpoint system - jobs can be resumed at any point without data loss
  • Per-company email scraping: homepage + /contact page, regex extraction
  • Automatic deduplication at email and company level within each job
  • Web audit in two separate scores: UX/design and digital marketing
  • Claude Haiku optional - only activated if the user supplies an API key

Feeds our own outreach stack - lists generated here go directly into InboxIQ for email campaigns and into AI Cold Calling for automated calls.

Want something similar for your business?

Let's talk →