Locus is a self-hosted tool that extracts business leads from Google Maps and enriches them with AI-verified emails. No account with us, no fees; bring your own API keys for search and AI.
Key Features
- Search and extraction: a location, a category, and a radius pull real Google Maps business listings, with live progress over WebSocket.
- Bulk search from a CSV: upload a file of query/location pairs and queue up to 50 searches at once.
- AI enrichment: each business gets run through an LLM step that finds and verifies a real contact email from its website. Choose from Gemini, OpenAI, Anthropic, or OpenRouter.
- Real SMTP verification: on top of the AI's answer, a genuine mailbox check (MX lookup, then an SMTP handshake; nothing ever gets sent) confirms an email before it's marked verified.
- Optional Hunter.io lookup: add a Hunter.io key, and it's checked before the website-and-AI step runs.
- Cross-session matching: the same business found in two different searches gets merged, not duplicated.
- History: every past search is kept with its full config snapshot. Re-run one, reopen its results, or compare two sessions' yield side by side.
- Export and integrations: CSV, Excel, or JSON export, plus outbound webhooks and CRM connectors (HubSpot, Salesforce).
- Built for self-hosting: a real Docker Compose stack (app, worker, Postgres, Redis) that's actually been cold-started and verified end-to-end.
Stack
Next.js (App Router), Prisma and Postgres, NextAuth, BullMQ and Redis for the background worker.
Usage
- Add a search provider key (SerpApi, Serper.dev, or Google Places) and an AI key (Gemini, OpenAI, Anthropic, or OpenRouter) in Settings.
- Run a search on the Dashboard, or upload a CSV for several at once.
- Filter, sort, export, or retry failed enrichments from the leads table.
- Every search lands in History. Re-run it, reopen its results, or compare two searches side by side.
AGPL-3.0-or-later. Source at github.com/mabdullahb/Locus.
Comments
0Start the conversation
Share the first comment.