Google Maps Business Finder
Under maintenancePricing
from $0.00025 / actor start
Google Maps Business Finder
Under maintenanceDiscover businesses from Google Maps, enrich websites with contact and social data, and run SEO diagnostics with structured JSON output. Built for lead generation, research, and automation workflows.
Pricing
from $0.00025 / actor start
Rating
0.0
(0)
Developer
Karan Sharma
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Google Maps Business Finder is a Python service that helps you discover local businesses and quickly analyze their websites.
It supports three practical workflows:
- Google Maps discovery: find businesses by query + location.
- Website analysis: extract contact, social, and technology signals from a URL.
- SEO analysis: compute on-page SEO score with actionable issues.
You can run it as:
- A local API (FastAPI)
- A local CLI (Typer)
- An Apify Actor
What This Is Used For
Use this project when you need a repeatable lead research workflow for:
- Local business prospecting
- Agency outreach list building
- Website quality checks before outreach
- SEO quick-audits at scale
- Automation pipelines that need structured JSON output
Core Capabilities
- Async Google Maps scraping pipeline (query/location/max results)
- Website extraction (emails, phones, social links, analytics IDs, schema types)
- SEO extraction (score, issues, title/meta/headings, sitemap, canonical, broken links)
- API routes with optional API key auth and per-IP rate limiting
- CLI commands for day-to-day local usage
- Data persistence and history tracking
- JSON exports for each workflow
- Apify actor input/output/dataset schemas
Project Entry Points
- API app: run.py
- CLI app: app/cli/main.py
- Actor runtime: scripts/apify_actor.py
- API router composition: app/api/router.py
- Runtime settings: app/config/settings.py
Quick Start (Windows PowerShell)
1. Create environment and install dependencies
py -3.12 -m venv .venv.\.venv\Scripts\Activate.ps1python -m pip install --upgrade pippip install -r requirements.txt
2. Create a minimal .env
This repository currently has no .env.example, so create .env manually:
APP_ENV=developmentAPP_DEBUG=trueAPP_HOST=127.0.0.1APP_PORT=8000# Optional: if set, non-system API endpoints require x-api-key headerAPI_KEY=DATABASE_URL=sqlite+aiosqlite:///./data/business_intelligence.db
3. Start the API
.\.venv\Scripts\python.exe run.py
Docs are available at:
API Usage
System endpoints (no API key required):
- GET
/system/health - GET
/system/ready
Protected endpoints (require x-api-key only when API_KEY is configured):
- POST
/discovery/google-maps - POST
/analysis/website - POST
/analysis/seo - GET
/statistics/summary
Example: Google Maps discovery
curl -X POST "http://127.0.0.1:8000/discovery/google-maps" \-H "Content-Type: application/json" \-H "x-api-key: YOUR_KEY_IF_CONFIGURED" \-d '{"query": "coffee shop","location": "New York","max_results": 20,"save_json": true}'
Example: Website analysis
curl -X POST "http://127.0.0.1:8000/analysis/website" \-H "Content-Type: application/json" \-H "x-api-key: YOUR_KEY_IF_CONFIGURED" \-d '{"url": "https://example.com","save_json": true}'
Example: SEO analysis
curl -X POST "http://127.0.0.1:8000/analysis/seo" \-H "Content-Type: application/json" \-H "x-api-key: YOUR_KEY_IF_CONFIGURED" \-d '{"url": "https://example.com","save_json": true}'
CLI Usage
Run with:
.\.venv\Scripts\python.exe -m app.cli.main <command>
Available commands:
versionshow-configinit-dirsgoogle-maps-discover --query ... --location ... --max-results ...website-analyze --url ...seo-analyze --url ...
Examples:
.\.venv\Scripts\python.exe -m app.cli.main google-maps-discover --query "coffee shop" --location "new york" --max-results 10.\.venv\Scripts\python.exe -m app.cli.main website-analyze --url "https://example.com".\.venv\Scripts\python.exe -m app.cli.main seo-analyze --url "https://example.com"
Apify Actor Usage
Actor metadata and schemas live in the .actor folder:
- Actor definition: .actor/actor.json
- Input schema: .actor/INPUT_SCHEMA.json
- Output schema: .actor/OUTPUT_SCHEMA.json
- Dataset schema: .actor/DATASET_SCHEMA.json
Actor runtime entrypoint:
- scripts/apify_actor.py
Input modes:
google_mapsrequiresquery(optionallocation,max_results)websiterequiresurlseorequiresurl
Example actor input (google maps mode):
{"mode": "google_maps","query": "coffee shops","location": "New York","max_results": 20,"save_json": true}
Output envelope format (dataset item and OUTPUT record):
{"mode": "google_maps","status": "ok","timestamp": "2026-07-09T06:00:03.000000+00:00","summary": {"requested_count": 20,"discovered_count": 14,"duration_seconds": 4.231},"data": {}}
Docker
Start full local stack:
docker compose up --build
Services from docker-compose.yml:
- app (FastAPI)
- redis
- rabbitmq
- postgres
Testing
.\.venv\Scripts\python.exe -m pytest tests
Frontend
A simple local dashboard starter is available at:
- frontend/index.html
Notes
- Exports are written under the configured
EXPORT_DIR(default:exports). - If
API_KEYis empty, protected API routes are effectively open in local development. - For production, set strong secrets, enforce API key usage, and run behind TLS.