Local Business Leads Without Scraping Google Maps: An OpenStreetMap + Overpass Guide
Description and use
Using OpenStreetMap and Overpass API to build local business lead lists without violating Google Maps ToS. An Apify Actor automates queries, enriches with website data, and delivers a licensed, updatable contact list.
Problem
Need contactable lists of local businesses (e.g., every roofer in Denver) without violating Google Maps ToS or relying on paid scraping services.
Outcome
The Actor produced 32 trade leads in Denver with 46% phone coverage, 43% website coverage, and 25% email coverage, doubling email reach via website enrichment. Coverage is strong for food, shops, healthcare in large cities but thin for US trades.
Workflow
- 1. Identify target city boundary in OSM and convert to area.
- 2. Query Overpass API for nodes/ways/relations with desired tags (e.g., craft=plumber) within that area.
- 3. Handle ambiguous names, server limits, policy checks, tag inconsistencies, and deduplication.
- 4. Optionally enrich leads by crawling each business’s website for emails.
- 5. Export results to CSV/Excel/JSON or push to integration platforms.
- 6. Schedule periodic runs and dedupe by osmId to keep list up to date.
Evidence
OpenStreetMap (OSM) is the community-built world map behind thousands of apps. Its data is licensed under the Open Database License (ODbL).
The Actor reads the homepage plus up to 4 contact/about/impressum pages. It stays on the business's own domain, respects robots.txt, sends at most 1 request per second per site and uses an identifiable User-Agent.
In a real pipeline you'll quickly hit the annoying parts: Ambiguous names, Busy public servers, Usage policies, Messy tags, Deduplication.
- Record date: 2026-10-25T20:11:28.057Z