Local Business Leads Scraper - Phones, Emails, Websites avatar

Local Business Leads Scraper - Phones, Emails, Websites

Pricing

from $0.50 / 1,000 business leads

Go to Apify Store
Local Business Leads Scraper - Phones, Emails, Websites

Local Business Leads Scraper - Phones, Emails, Websites

Local business leads by category and city: business leads from Overture Maps open data (88 million places, 2,000+ categories) - a Google Maps scraper alternative with no scraping. Name, address, phone, website, socials; optional email and tech-stack enrichment. $0.50 per 1,000 leads.

Pricing

from $0.50 / 1,000 business leads

Rating

0.0

(0)

Developer

OFFGRID LABS

OFFGRID LABS

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Local business leads scraper: businesses by category and city, with phones, websites and emails

TL;DR: Local Business Leads Scraper returns businesses of any type in any city or radius - dentists in Austin, plumbers in Manchester, restaurants in Lyon - with name, category, full address, coordinates, phone, website, email and social links in one CSV-friendly row. Data comes from Overture Maps open data (88 million places, 2,000+ categories, monthly releases), so there is no Google Maps scraping, no browser and no proxy. Optional website enrichment visits each business's own site and adds business emails, social profiles, CMS/tech stack, SEO basics and a list of website gaps for outreach. You pay $0.50 per 1,000 leads and $1.00 per 1,000 enriched websites.

Built for lead-generation agencies, local SEO and web-design agencies, B2B sales teams, franchise and market researchers, and AI agents that need a "find businesses of type X in place Y" tool.

What data you get

One dataset row per business. Fields the source does not have are null, never guessed.

FieldWhat it isExample
name, brandBusiness name, chain/brand if anySmile 360
category, categoriesPrimary category and hierarchy (Overture taxonomy)dental clinic; health care > outpatient care facility > dental clinic
address, city, postcode, region, country, fullAddressPostal address, split and single-line1509 S Lamar Blvd #675, Austin, TX 78704, US
latitude, longitude, distanceKmCoordinates; distance from your centre point (radius searches)30.25198, -97.763924, 2.14
phone, phonesMain phone in E.164 where the country is known, plus all numbers+1512...
website, websitesWebsite(s) listed for the placehttp://www.smile360atx.com/
email, emailsRole/business mailboxes only (listing; plus website when enrichment is on) - personal addresses are never returnedinfo@smile360atx.com
facebook, instagram, linkedin, twitter, youtube, tiktokSocial profile URLshttps://www.instagram.com/smile360atx
operatingStatus, confidenceOpen/closed and Overture's 0-1 existence confidenceopen, 0.92
overtureIdStable place ID (GERS) for dedupe across runs and CRM synca7537c99-172a-...
searchLocation, searchCategoryWhich of your inputs found itAustin, TX, dentist

With website enrichment (enrichWebsites: true), each lead whose site can be read also gets:

FieldWhat it is
emails, phones, social fieldsExtra contacts found on the homepage and contact/about pages (robots.txt respected)
cms, ecommercePlatform, technologies, hostingWebsite builder / CMS (WordPress, Wix, Squarespace...), shop platform, detected technologies
analytics, adPixels, marketingTools, bookingPlatformGoogle Analytics, Meta Pixel, HubSpot, live chat, Calendly / Zocdoc / OpenTable...
websiteTitle, websiteDescription, hasStructuredData, hasMobileViewportSEO basics
hasHttps, missingSecurityHeaders, websiteResponseMsSecurity and speed basics
websiteGapsOutreach-ready list: No HTTPS, No meta description, No analytics, No online booking widget, Not mobile-friendly...
enrichedAt, websiteStatusWhen it was analysed, or why not (HTTP 403, disallowed by robots.txt, no website listed)

Use cases

  • Lead generation agencies: build prospect lists for any niche and city in seconds and export CSV to your CRM or email tool.
  • Web design and local SEO agencies: requireWebsite + enrichment shows which businesses have no HTTPS, no analytics, no booking widget or no meta description (websiteGaps) - the pitch is in the data.
  • B2B sales (software for dentists, salons, restaurants, contractors): territory lists with phone, website and the tools they already use (technologies, bookingPlatform).
  • Market and location research: count competitors per area, map chains (brand), find white spots by radius.
  • AI agents: one tool call answers "list 50 HVAC companies within 10 km of Denver with a website".

How to scrape local business leads

  1. Locations: one per line - a city or area (Austin, TX, Camden, London), a centre point lat,lon, or a bounding box minLon,minLat,maxLon,maxLat.
  2. Business categories: plain words such as dentist, plumber, restaurant, lawyer, hair salon, roofing, real estate agent. Leave empty for every business in the area.
  3. Optional: Radius (km) around the location centre, Name contains, Only leads with a phone / website, Minimum place confidence.
  4. Optional: turn on Enrich from the business website for emails, socials, tech stack and website gaps.
  5. Set Max leads per run and click Start. Download CSV, Excel or JSON, or read the dataset via API.

Input example

{
"locations": ["Austin, TX", "Denver, CO"],
"categories": ["dentist", "orthodontist"],
"radiusKm": 15,
"maxResults": 500,
"requireWebsite": true,
"enrichWebsites": true,
"maxPagesPerWebsite": 2
}

Output example

A real row from our test run (phone shortened; some enrichment fields omitted for length):

{
"name": "Smile 360",
"category": "dental clinic",
"categories": [
"health care",
"outpatient care facility",
"dental clinic"
],
"brand": null,
"address": "1509 S Lamar Blvd #675",
"city": "Austin",
"postcode": "78704",
"region": "TX",
"country": "US",
"fullAddress": "1509 S Lamar Blvd #675, Austin, TX 78704, US",
"latitude": 30.25198,
"longitude": -97.763924,
"distanceKm": 2.14,
"phone": "+1512xxxxxxx",
"website": "http://www.smile360atx.com/",
"email": "info@smile360atx.com",
"facebook": "https://www.facebook.com/473581829321616",
"instagram": "https://www.instagram.com/smile360atx",
"operatingStatus": "open",
"confidence": 0.92,
"overtureId": "a7537c99-172a-45ef-9b19-95aed739fb9b",
"searchLocation": "Austin, TX",
"searchCategory": "dentist",
"enrichedAt": "2026-11-03T08:09:43.086Z",
"websiteStatus": "HTTP 200",
"websiteResponseMs": 238,
"cms": null,
"analytics": [],
"adPixels": [],
"bookingPlatform": null,
"technologies": [
"Nginx",
"Adobe Fonts",
"core-js"
],
"websiteTitle": "Smile 360: Dentist Austin, TX - Zilker",
"hasHttps": true,
"missingSecurityHeaders": [
"CSP",
"Referrer-Policy"
],
"websiteGaps": [
"No analytics",
"No ad/retargeting pixel",
"No online booking widget",
"No chat, forms or marketing automation tool",
"No email address on site"
],
"overtureRelease": "2026-10-21.0",
"scrapedAt": "2026-11-03T08:09:43.431Z"
}

A per-location summary (leads, enriched sites, places scanned, seconds, retries, charged events) is saved in the key-value store record RUN_SUMMARY. The dataset has three views: Leads, Website enrichment and All fields.

How much does it cost to scrape local business leads?

Pay per event. Filters (category, radius, phone/website required, confidence) run before saving, so you only pay for leads you keep. Compute is included; the price is the same on every Apify plan.

EventCharged whenPrice
leadOne business saved to the dataset$0.50 per 1,000 ($0.0005 each)
website-enrichmentOpt-in; the lead's website was read and analysed$1.00 per 1,000 ($0.001 each)
apify-actor-startOnce per run (Apify's standard start fee)$0.00005

Worked examples

  • 1,000 leads without enrichment = 1,000 × $0.0005 = $0.50.
  • 1,000 leads with website enrichment where 700 sites are readable = $0.50 + 700 × $0.001 = $1.20. Sites that are down, blocked by robots.txt or missing are not charged.
  • Every restaurant inside the Chicago city box (12,064 leads in our test) = $6.03.

Speed

Measured on our test runs (2026-11-03): 10 dentists within 3 km of Austin with website enrichment in 12 s; 12,064 restaurants inside the Chicago city box in 29 s without enrichment. The actor reads only the parts of the Overture GeoParquet files that overlap your area (HTTP range requests on the official AWS Open Data bucket, retried with backoff), so run time grows with the number of places in your area, not with the size of the world dataset. Enrichment adds about 1-3 s per website, 10 sites in parallel.

How it compares

This actorScraping Google MapsRaw Overture / OSM filesLead-data subscriptions
SourceOverture Maps open data (Meta, Microsoft, Foursquare, AllThePlaces and more)Google's consumer siteSame open dataMixed, often undisclosed
TermsOpen licenses (CDLA-Permissive-2.0, Apache-2.0, CC0)Against Google's terms of serviceOpen licensesVendor contract
SetupType a city and a categoryProxies, browsers, retriesDuckDB/Spark + GIS skillsSales call
SpeedSeconds per cityMinutes per search, rate-limitedFast once set upInstant
Website emails, tech stack, gapsOptional add-on in the same runUsually separate toolsNoSometimes
Ratings and reviewsNoYesNoSometimes
Cost$0.50 per 1,000 leadsVariesFree + your timeSubscription

FAQ

How do I get a list of businesses in a city by category?

Put the city in Locations and the business type in Business categories (for example Austin, TX + plumber), then run. Each row is one business with address, phone, website and socials; export as CSV.

Is this a Google Maps scraper alternative?

Yes, for business listings: it covers the same core fields (name, category, address, coordinates, phone, website) for 88 million places worldwide, from open data instead of Google. It does not return Google ratings or reviews.

From the official Overture Maps Foundation monthly release on AWS Open Data, located through Overture's STAC catalog. The places theme combines data from Meta and Microsoft (CDLA Permissive 2.0), Foursquare (Apache 2.0), AllThePlaces (CC0) and others; all allow commercial reuse with attribution ("© Overture Maps Foundation and contributors"). City names are geocoded with OpenStreetMap Nominatim (one request per location, within its usage policy). Website enrichment fetches only the business's own public pages and respects robots.txt.

How do I find emails for local businesses?

Turn on Enrich from the business website. The actor reads the homepage and up to N contact/about pages and returns business mailboxes (info@, office@, bookings@ or addresses named after the business). Personal-looking addresses (firstname.lastname@...) are never returned - they are only counted in personalEmailsHidden. Business contact data is still subject to GDPR, CAN-SPAM and PECR when you use it.

Which countries and categories are covered?

Worldwide - Overture has places in every country, densest in North America and Europe. Categories follow the Overture taxonomy (2,000+ types). Plain words work (dentist, hvac, lawyer, gym, real estate agent); common synonyms are mapped for you.

How fresh is the data?

Overture publishes a new release every month; the actor auto-detects the latest one (field overtureRelease). Pin a release with Overture release for reproducible exports.

Why does a business have no phone or website?

Not every place has them in the open data. Use Only leads with a phone / Only leads with a website to skip those (skipped places are not charged), or raise Minimum place confidence.

How do I avoid duplicates across runs?

Rows are de-duplicated within a run (same name + phone/address). Across runs, use overtureId, which is stable between Overture releases.

Can an AI agent use this local business API?

Yes. Through the Apify MCP server an agent can find it with search-actors, read the input schema and call it, for example "50 roofing companies within 20 km of Tampa with a website, enriched". See Integrations.

Something wrong?

Open an issue on the Issues tab; we aim to respond within 24 hours.

Integrations

  • API: POST https://api.apify.com/v2/acts/offgrid-labs~local-business-leads/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN> with the input JSON returns the leads directly (runs under 5 minutes; otherwise start a run and read its dataset).
  • Python / JavaScript: pip install apify-client / npm install apify-client, then client.actor("offgrid-labs/local-business-leads").call(run_input={...}).
  • No-code: Apify integrations for Make, Zapier and n8n, Google Sheets, CRM webhooks, Slack, and Schedules (for example a weekly list for your territory).
  • MCP / AI agents: add https://mcp.apify.com?tools=offgrid-labs/local-business-leads to your MCP client.

Changelog

  • 2026-11-03 · Policy: the role/business-mailbox filter now also applies to emails from the Overture listing itself. Removed the personal-email opt-in. Only role/business mailboxes are ever returned; personal-looking addresses are counted in personalEmailsHidden only.
  • 2026-11-03 · First release: Overture Maps places (latest release auto-detected), city / coordinate / bounding-box / radius search, 2,000+ categories with synonyms, phone / website / confidence filters, dedupe, optional website enrichment (business emails, socials, tech stack, SEO and security basics, website gaps), RUN_SUMMARY.
ActorWhat it does
Contact Details ScraperEmails, phones and social links from a list of websites you already have
Tech Stack DetectorFull technology profile (CMS, ecommerce, analytics, pixels, CDN) of any website
US Building Permits ScraperNew construction projects and contractors from 12 US cities

Attribution: places data © Overture Maps Foundation and contributors (Meta, Microsoft, Foursquare, AllThePlaces and others; licenses listed at docs.overturemaps.org/attribution); geocoding © OpenStreetMap contributors (ODbL).


// OFFGRID LABS ─────────────────────────────────────────────
// status: monitored 24/7 by a self-hosted agent swarm
// health checks: every 6h · auto-repair + rollback on failure
// sources: official public APIs and open data only
// support: open an issue — human-reviewed response within 24h
// ───────────────────────────────────────────────────────────