LeadsForge is a browser extension that scrapes business data from Google Maps search results. It supports advanced filtering, multi-location scanning, individual business selection, and one-click export to Excel, CSV, or Google Sheets.
Whether you are a freelancer prospecting for web design clients, a sales professional building outreach lists, or a marketing agency qualifying leads: LeadsForge streamlines the entire process from search to structured data.
| Feature | Description |
|---|---|
| Website Filter | Filter businesses by availability: all, with website, or without website |
| Rating Filter | Set a minimum star rating (0 to 5) to include only quality-rated businesses |
| Closed Business Detection | Automatically identifies and excludes permanently or temporarily closed businesses |
| Business Selection | Select individual businesses via checkboxes before exporting: pick exactly the leads you need |
| Multi-Location Scanning | Enter multiple search queries and scan them all sequentially |
| Deep Scan Mode | Clicks into each business listing for detailed data: phone, email, social links, hours |
| Social Media Extraction | Captures Facebook, Instagram, Twitter/X, LinkedIn, YouTube, and TikTok links (Deep Scan) |
| Rich Results Table | Live results displayed in a clean table with ratings, social badges, and website links |
| Multi-Format Export | Export to Excel (.xlsx), CSV, or open Google Sheets directly |
| Persistent Storage | Leads are saved locally: reopen the popup and your data is still there |
-
Download or clone this repository to your local machine.
-
Libraries are pre-included in the
libs/directory:libs/xlsx.full.min.js: SheetJS for Excel exportlibs/papaparse.min.js: PapaParse for CSV export
-
Open Google Chrome and navigate to:
chrome://extensions/ -
Enable Developer mode using the toggle in the top-right corner.
-
Click Load unpacked.
-
Select the
Leadforgeproject folder. -
Pin the extension to your toolbar for quick access.
-
Open Firefox and navigate to:
about:debugging#/runtime/this-firefox -
Click Load Temporary Add-on.
-
Select the
manifest.jsonfile inside theLeadforgefolder. -
The extension will appear in your toolbar and is ready to use.
Note: The manifest includes
browser_specific_settingswith a placeholder ID (leadsforge@envy.xyz) for Firefox compatibility.
To update the bundled libraries to their latest versions:
- SheetJS: download from
https://cdn.sheetjs.com/xlsx-0.20.1/package/dist/xlsx.full.min.jsand save aslibs/xlsx.full.min.js - PapaParse: download from
https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.4.1/papaparse.min.jsand save aslibs/papaparse.min.js
- Open Google Maps in your browser.
- Search for a business type and location (for example: "restaurants in Austin, TX").
- Click the LeadsForge extension icon in your toolbar.
- Configure your filters:
- Website Filter: Choose "All Businesses", "Without Website", or "With Website"
- Min Rating: Slide to set a minimum star rating
- Exclude Closed: Toggle on to automatically remove closed businesses
- Deep Scan: Enable for detailed data (phone, email, socials): takes longer
- Scroll Depth: Control how many pages of results to load (1x to 5x)
- Click Start Scan.
- Watch the live results populate in the table.
- Use checkboxes to select or deselect specific businesses.
- Export your selected leads via Excel, CSV, or Google Sheets.
- In the Locations field, enter multiple search queries separated by commas, semicolons, or new lines:
plumbers in Chicago, plumbers in Miami, plumbers in Los Angeles - Click Start Scan.
- LeadsForge will automatically navigate to each location, scan, and aggregate all results.
- After all locations are processed, select and export your combined leads.
| Column | Description |
|---|---|
| Checkbox | Select or deselect the business for export |
| Business | Business name |
| Business email address (if detected) | |
| Rating | Star rating with visual indicator |
| Website | Clickable website link, or "None" if no website is found |
| Phone | Phone number |
| Socials | Clickable badges for Facebook, Instagram, Twitter/X, LinkedIn, YouTube, TikTok |
- Excel (.xlsx): Full spreadsheet with formatted headers and all data columns
- CSV: Universal format compatible with any spreadsheet application
- Google Sheets: Downloads CSV and opens a new Google Sheets tab for import
The "Include all fields" checkbox controls whether the export includes extended data (hours, price range, plus code) or just the essential columns.
Leadforge/
├── manifest.json # Chrome/Firefox Extension Manifest V3 configuration
├── popup.html # Extension popup UI structure
├── popup.css # Light theme styling with premium design language
├── popup.js # Popup logic: filters, scanning, selection, export
├── content.js # Injected scraper: DOM parsing, data extraction, social detection
├── background.js # Service worker: chunked storage, tab navigation
├── utils/
│ ├── storage.js # Chrome storage abstraction with caching
│ ├── exporter.js # Excel, CSV, and Google Sheets export handlers
│ └── scraper.js # Shared scraper utility functions
├── libs/
│ ├── xlsx.full.min.js # SheetJS library for Excel generation
│ └── papaparse.min.js # PapaParse library for CSV generation
└── icons/
├── icon32.png
├── icon48.png
└── icon128.png
-
Content Script (
content.js): Injected into Google Maps pages. Scrolls the results feed, extracts business data from DOM elements, and optionally performs deep scans by clicking into each listing for detailed information including phone, email, and social links. -
Popup (
popup.jsandpopup.html): Manages the UI, filter state, multi-location queue, business selection, and export triggers. Communicates with the content script via Chrome message passing. -
Background Service Worker (
background.js): Handles persistent storage with chunked writes to stay withinchrome.storage.locallimits and supports tab navigation for multi-location scanning.
| Setting | Default | Description |
|---|---|---|
| Website Filter | All | Filter by website availability: All, With, or Without |
| Min Rating | Any (0) | Minimum star rating threshold (0 to 5, in 0.5 increments) |
| Exclude Closed | Enabled | Hide businesses flagged as temporarily or permanently closed |
| Deep Scan | Disabled | Click into each listing for full details (slower but richer data) |
| Scroll Depth | 3x | Number of scroll iterations to load more results |
All settings are automatically saved and restored between sessions.
| Issue | Solution |
|---|---|
| "Not on Google Maps" error | Ensure you are on google.com/maps with search results visible |
| No results found | Increase the Scroll Depth slider, or verify the search has visible results |
| Missing phone, email, or socials | Enable Deep Scan mode: card-level data is limited |
| Extension not appearing | Navigate to chrome://extensions/, ensure Developer Mode is on, and the extension is enabled |
| Export button not working | Verify that libs/xlsx.full.min.js and libs/papaparse.min.js exist in the libs/ folder |
| Scan appears to hang | Google Maps may have rate-limited requests. Wait a moment and retry with a lower scroll depth |
| Field | Source | Description |
|---|---|---|
| Business Name | Card / Detail | Official business name |
| Category | Card | Business type (Restaurant, Plumber, etc.) |
| Phone | Card / Detail | Primary phone number |
| Card / Detail | Email address (if visible on Maps) | |
| Address | Card | Street address |
| Rating | Card | Star rating (1.0 to 5.0) |
| Total Reviews | Card | Number of Google reviews |
| Website | Card / Detail | Business website URL |
| Detail | Facebook page URL | |
| Detail | Instagram profile URL | |
| Twitter / X | Detail | Twitter or X profile URL |
| Detail | LinkedIn company or profile URL | |
| YouTube | Detail | YouTube channel URL |
| TikTok | Detail | TikTok profile URL |
| Business Hours | Detail | Operating hours |
| Price Range | Detail | Price tier indicator |
| Open Status | Card / Detail | Open or Possibly Closed |
| Google Maps URL | Card | Direct link to the Maps listing |
This extension is provided for educational and personal use only. Automated scraping of Google Maps may violate Google's Terms of Service. Use responsibly and at your own risk. The developers are not responsible for any consequences arising from the use of this tool.
Built by ameer<3