Google Maps leads

# Google Maps Scraper

Turn a Google Maps search like "roofing contractor in Dallas" into a lead list with phone, website, rating and emails from each business's own site. Switch on the website check and it also tells you which businesses need a new website, and why. $1 per 1,000 places.
[Run it on Apify](https://apify.com/scrape-lads/google-maps-scraper?utm_source=scrapelads&utm_medium=site&utm_campaign=google-maps-scraper&utm_content=google-maps-scraper) [See the website check](#website-check)

## A lead list, not just a place list

Most Google Maps scrapers stop at the listing: name, phone, address, rating. That is enough for a map, and not enough to decide who to call. A web designer or SEO agency wants the businesses with a problem they can fix.

This actor reads the listing, then opens each business's website and checks it. You get the place, its contacts, and a plain-language list of what is wrong with its site.

- Name, categories, phone, website, rating, review count, full address, hours and coordinates
- Emails and Facebook, Instagram, LinkedIn, X, YouTube and TikTok links from each business website
- Website check: down or suspended, 404, no mobile version, no HTTPS, an old copyright year
- One filter for the niche: only places that need website work
- Filters by rating and review count, and closed places skipped
- Plain HTTP, no browser: hundreds of places per minute
- No Google API key and no Google account

```
{
  "name": "Summit Roof & Gutter",
  "category": "Roofing contractor",
  "phone": "(214) 555-0187",
  "website": "http://www.summitroof.example/",
  "rating": 4.8,
  "reviewCount": 146,
  "city": "Dallas",
  "emails": ["office@summitroof.example"],
  "websiteStatus": "ok",
  "websiteIssues": [
    "no HTTPS",
    "copyright notice still says 2018",
    "no form on the homepage"
  ],
  "needsWebsiteWork": true,
  "mapsUrl": "https://www.google.com/maps?cid=..."
}
```

## Example: what you type and what you get

Made-up businesses, real shape. This is what a small run looks like.

You ask for

- Search: roofing contractor
- Location: Dallas, TX
- Website filter: only places that need website work

You get back

- **Lakeside Roofing** 4.9 stars · 212 reviews · no website on Google Maps · phone listed
- **Prairie Roof Co.** 4.7 stars · 88 reviews · website is down: domain does not resolve
- **Summit Roof & Gutter** 4.8 stars · 146 reviews · no HTTPS, copyright notice still says 2018 · email found

Use a different actor when

- [**Facebook Pages Email Scraper**](https://apify.com/scrape-lads/facebook-pages-scraper?utm_source=scrapelads&utm_medium=site&utm_campaign=related&utm_content=facebook-pages-scraper) Need a business's Facebook page details and contacts.
- [**Similarweb Scraper**](https://apify.com/scrape-lads/similarweb-scraper?utm_source=scrapelads&utm_medium=site&utm_campaign=related&utm_content=similarweb-scraper) Need to know how much traffic a business's website gets.

## The website check

Switch on **Check each website** and every place gets a `websiteStatus`, a list of `websiteIssues` and a `needsWebsiteWork` flag.

| websiteStatus | What it means |
| --- | --- |
| ok | The homepage loaded. The issues list says what we found: no HTTPS, not mobile-friendly, old copyright year, no page title or meta description, no contact form, no tap-to-call link, built with Wix, GoDaddy or Weebly. |
| down | The domain doesn't resolve, the server refuses connections, the homepage returns 404, 410 or a 5xx error twice, or the page shows a suspended-hosting or domain-for-sale notice. |
| no-website | No website on Google Maps, or only a Facebook or Instagram page. |
| unknown | The site blocks automated visitors or only shows its content with JavaScript. We say nothing about it, and the check is not charged. |

`needsWebsiteWork` is true only for the strong reasons: no website, down, no mobile version, no HTTPS, or a copyright notice five or more years old. Weak findings, such as a missing meta description, are listed but don't set it.

### What a real run found

In a 400-place test run (roofing and HVAC contractors in Dallas and Phoenix, November 2026), **57 places (14%) needed website work**: 34 had no website, 5 had a site that was down, and 18 had a working site with a strong problem, mostly an old copyright year or no HTTPS. We checked every "down" result by hand afterwards, and all 5 were real: four dead domains and one "Database Error" page.

### We don't guess

- A site counts as down only after two failed tries, and only when its homepage fails too. A broken deep link on a working site is `unknown`, not down.
- Bot walls and Cloudflare's 520 error are `unknown`. Cloudflare sends 520 to cloud servers for sites that load fine at home.
- Copyright years come from the visible page, never from code comments in a theme's CSS or JavaScript.
- Emails are kept only when they belong to the business. The web designer's address, font credits and template placeholders are removed.

## How to scrape Google Maps leads

1. **Add search terms and locations.** For example `plumber` and `roofing contractor` in `Dallas, TX`. Every term is searched in every location.
2. **Pick what to add.** Switch on emails, the website check, or both. Set **Website filter** to "Only places that need website work" for the niche list.
3. **Run and export.** Download CSV, Excel or JSON, or read the dataset from the API. The **Website check** view shows the issues next to each business.

### Input for web-design leads (paste into the JSON tab)

```
{
  "searchTerms": ["plumber", "roofing contractor"],
  "locations": ["75201", "75204", "75206"],
  "websiteFilter": "needsWork",
  "scrapeContacts": true,
  "minReviews": 10
}
```

### Call it from Python

```
# pip install apify-client
from apify_client import ApifyClient

client = ApifyClient("your-apify-token")
run = client.actor("scrape-lads/google-maps-scraper").call(run_input={
    "searchTerms": ["dentist"],
    "locations": ["Chicago, IL"],
    "scrapeContacts": True,
    "checkWebsite": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item.get("phone"), item.get("emails"), item.get("websiteIssues"))
```

### Getting more places

- **Split big cities.** Google Maps returns about 120 to 200 places per search. Use ZIP codes or neighborhoods as locations for more, and duplicates across searches are removed for you.
- **Expect fewer places with the needs-work filter.** Usually 5% to 15% of a search qualifies, so add more locations and related search terms.
- **Set a minimum review count** to skip brand-new listings and favor busy businesses that can pay for a site.

## Pricing

Pay per result. Places your filters remove, duplicates and websites we couldn't check are free.

| Event | When it is charged | Price |
| --- | --- | --- |
| Run start | Once per run | $0.003 |
| Place | Each place in your dataset | $0.001 |
| Place with email | Each place where an email was found on its website | $0.001 |
| Website check | Each website checked with a result (ok or down) | $0.001 |

In practice: 1,000 places cost **$1**. The same 1,000 with emails cost about **$1.40** when 40% have an email on their site. 1,000 businesses that need website work, with the reason, cost about **$2**. Prices are the Apify free-plan rates as of November 2026; paid Apify plans get up to 20% off. Check the listing for current pricing.

## How it compares

The most used Google Maps actor on the Apify Store is Apify's own [Google Maps Scraper](https://apify.com/compass/crawler-google-places) (`compass/crawler-google-places`). There are also several small actors that list businesses without a website. Everything below about them comes from their public Store listings as of November 2026, at the Starter plan's prices. We did not run them.

|  | compass (Apify) | "No website" actors | ScrapeLads (this actor) |
| --- | --- | --- | --- |
| Place | $3.00 per 1,000 | $2.60 to $7.90 per 1,000 | $0.90 per 1,000 |
| Emails from the website | Add-on, +$2.00 per 1,000 | Varies | +$0.90 per 1,000 places with an email |
| Checks the website itself | No | No, they only flag "no website" | Yes: down, suspended, mobile, HTTPS, copyright year |
| Reviews, images, popular times | Yes | No | No |
| Users in the last 30 days | 46,261 | 11 to 108 each | New in November 2026 |

### Where compass is the better pick

- **Depth.** Reviews, images, popular times, menus, Q&A and many detail add-ons.
- **Track record.** Hundreds of thousands of users, a 4.7 rating and years of maintenance.
- **Big areas.** It can scan a whole city on its own. Here you split a city into ZIP codes yourself.

### Where this actor is the better pick

- **Price for lead lists.** About a third of the per-place price, and emails cost less.
- **Selling websites or SEO.** The website check finds the businesses with a broken, outdated or missing site, with the reason you can open a conversation with.
- **Clean emails.** Addresses that belong to the web designer or a template are removed before you see them.

## Limits

- **About 120 to 200 places per search.** That is where Google Maps stops. Use more locations for more places.
- **Some websites can't be checked.** Sites behind bot protection, or that only render with JavaScript, come back `unknown` and are not charged for the check.
- **No reviews or photos.** You get the rating, the review count and a link to the reviews.
- **Emails only from the business's own site.** A business with no website usually has no email here, but it still has a phone.

## What people build with it

### Web design prospect lists

Plumbers, dentists or salons in your city with no website, a dead site or no mobile version, each with a phone and the reason to call.

### Local SEO outreach

Businesses with good reviews and weak sites: no HTTPS, no page title, a copyright notice from years ago.

### Sales and market lists

Every business of a type in a set of ZIP codes, with phone, email, rating and coordinates, ready for a CRM or a map.

## FAQ

**Do I need a Google API key?**

No. It reads public Google Maps search results. You only need an Apify account, and the free plan is enough to try it.

**How does it find businesses that need a new website?**

With the website check on, it opens each business's website and records whether it is down or suspended, mobile-friendly, on HTTPS, and how old its copyright notice is. The "Only places that need website work" filter keeps the businesses with no website or one of those strong problems.

**Am I charged for websites it couldn't check?**

No. Sites that block automated visitors come back as unknown and the check is free. Places removed by your filters are free too.

**Why do some businesses have no email?**

Emails come from the business's own website. Businesses without a website, or that don't publish an address, have none. Their phone number is still in the listing.

**How do I get more than 200 places for a city?**

Add the city's ZIP codes or neighborhoods as separate locations. Each one is its own search, and duplicates are removed.

**Is it legal to scrape Google Maps?**

It collects publicly visible business listing information. Business contact data can still fall under privacy laws such as GDPR, and marketing messages are regulated (for example CAN-SPAM in the US). Check the rules where you operate.

## Try one city

Pick a business type and a ZIP code you know, switch on the website check, and see the list and the cost in a couple of minutes.
[Open the actor](https://apify.com/scrape-lads/google-maps-scraper?utm_source=scrapelads&utm_medium=site&utm_campaign=google-maps-scraper&utm_content=google-maps-scraper)
