Lead Generator is a full-stack SaaS web application built by RyxaDev to help businesses find verified B2B leads from Google Maps in minutes. Instead of manually searching, copying, and organizing business data, users can enter a business type and location, scrape verified results, and export ready-to-use lead lists for outreach campaigns.
Small businesses, agencies, sales teams, and freelancers often spend hours manually collecting local business leads from Google Maps. The process is slow, repetitive, and inconsistent. A user may search for “dentists in London” or “restaurants in Dubai,” then manually copy business names, phone numbers, websites, addresses, ratings, and map links into a spreadsheet.
This creates three major problems:
Many existing lead tools are expensive, overcomplicated, or locked behind large monthly subscriptions. RyxaDev built Lead Generator to make business data collection faster, cleaner, and accessible through flexible pricing.
Lead Generator is a SaaS platform that lets users search for any business category in any city or location worldwide. The system automatically collects business information from Google Maps and returns a structured lead list containing:
Users can export the results to CSV in one click and use them directly in CRM systems, cold outreach campaigns, or sales pipelines.
The product combines a user-friendly React frontend, a secure NestJS backend, subscription billing through Stripe, and a Playwright-powered scraping engine designed for reliable lead extraction.
The application was built as a modern full-stack SaaS system with a clean separation between frontend, backend, database, scraping, billing, and admin operations.
The backend uses NestJS with TypeScript, chosen for its scalable architecture, dependency injection, modular structure, and strong support for enterprise-level application patterns. Authentication, billing, user management, subscription logic, scraping control, and admin features are handled through structured NestJS modules.
MySQL with Prisma ORM powers the database layer. Prisma provides type-safe database access, clean schema management, and predictable query handling across users, plans, subscriptions, usage records, OAuth settings, and payment approvals.
The scraping system uses Playwright with a headless Chromium browser. It follows a two-phase process: first collecting Google Maps result URLs, then opening each listing to extract detailed business data. This design improves reliability and makes the extraction process easier to control, debug, and scale.
The frontend is built with React.js, Tailwind CSS v3, Lucide React, and React Router DOM v6. The interface includes a polished marketing landing page, authentication pages, dashboard, scraping workflow, subscription pages, profile settings, and admin panel.
Stripe recurring subscriptions handle monthly and yearly billing. Webhooks automatically extend subscriptions, expire failed plans, reset monthly usage, and support cancellation at period end.
Lead Generator includes email/password registration, six-digit email verification, JWT-based authentication, Google OAuth, Facebook OAuth, forgot password, secure reset links, and password change functionality.
Social login providers can be enabled or disabled dynamically by the super admin without changing code. This gives the platform flexibility for different deployment or compliance needs.
The platform supports five subscription tiers:
Stripe handles recurring payments, customer management, renewals, failed payments, and cancellation workflows. A manual bank transfer option was also built with an admin approval process.
The scraping engine collects verified business data from Google Maps using scroll-based traversal, realistic browser behavior, custom user-agent handling, and human-like delays.
Before every scrape, the system checks the user’s subscription quota. If the requested number of leads exceeds the remaining quota, the scrape is capped automatically.
The admin panel gives platform operators full control over users, plans, subscriptions, payments, and OAuth settings.
Admins can manage users, assign plans, reset usage, approve or reject bank transfer payments, toggle plan availability, and control social login credentials.
The system supports role-based access for:
The product includes a conversion-focused landing page with SEO meta tags, Open Graph tags, Twitter cards, hero section, features, how-it-works section, pricing preview, CTA, and RyxaDev branding throughout.
Google Maps scraping can be unreliable if browser behavior looks automated. RyxaDev solved this with a two-phase scraping model, realistic user-agent headers, controlled scrolling, and human-like delays.
This made the extraction flow more stable while reducing failed scraping attempts.
Hardcoding Google and Facebook OAuth credentials would make the system difficult to manage. Instead, RyxaDev built database-driven OAuth settings controlled by the super admin.
This allows social login providers to be turned on or off at runtime without deployment changes.
Lead limits had to be accurate across free trials, monthly plans, yearly plans, enterprise access, and pay-per-lead billing.
The system checks subscription validity and remaining quota before scraping, updates usage after scraping, expires invalid subscriptions automatically, and resets monthly usage through Stripe renewal webhooks.
Recurring SaaS billing requires more than just checkout. RyxaDev implemented Stripe customer creation, subscription tracking, renewal handling, failed payment expiration, period-end cancellation, and manual payment approval workflows.
This created a complete billing lifecycle suitable for a real SaaS product.
Lead Generator turns manual lead research into an automated workflow. A user can search for a business type and location, scrape verified business data, export a CSV, and start outreach almost immediately.
The platform delivers clear business value:
For RyxaDev, the project demonstrates strong capability in SaaS engineering, scraping automation, secure authentication, subscription billing, admin dashboards, and production-ready full-stack development.