Google Maps Business Verification & Status Monitoring avatar

Google Maps Business Verification & Status Monitoring

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Google Maps Business Verification & Status Monitoring

Google Maps Business Verification & Status Monitoring

Find neglected Google Business Profiles in any area: unclaimed listings, businesses with no website or phone, thin profiles and closed locations - each scored as a GMB sales opportunity. Built for local SEO agencies prospecting claim and optimisation clients. JSON/CSV/Excel/NDJSON.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Faisal Ahdan naufal

Faisal Ahdan naufal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Find neglected Google Business Profiles in any area — unclaimed listings, businesses with no website or no phone, thin profiles, and closed locations — each scored as a Google Business Profile sales opportunity.

Built for local SEO agencies prospecting claim-and-optimise clients: instead of checking listings one at a time in Maps, sweep a whole category across a city and get a ranked call list.

No login, no Google API key, no browser.


What it tells you per business

FieldNotes
claimStatus / isUnclaimedunclaimed means nobody has taken the profile — your core pitch
businessStatusoperational, temporarily_closed, permanently_closed (see the limit below)
hasWebsite, hasPhone, hasOpeningHoursThe profile gaps you would fix
reviewsCount, ratingThin review counts signal a neglected listing
opportunityScore0–100, weighted for GMB sales value
opportunityIssuesThe specific problems, e.g. ["unclaimed","no_website","no_phone"]
name, primaryCategory, address, phone, websiteContact details for the outreach itself
latitude, longitude, placeId, googleMapsUrlLocation and stable identifiers

Plus one AREA_SUMMARY row per run — the market-level pitch: how many listings in this area are unclaimed, how many lack a website, and how many are both.


Quick start

{
"searchQueries": ["warung", "salon", "laundry"],
"areaName": "jakarta",
"maxResultsPerQuery": 200,
"onlyUnclaimed": true,
"exportFormats": ["csv"]
}

Real output from a 20-result sweep of warung in Jakarta: 15 unclaimed (75%), 17 without a website, 15 with both, top prospect scoring 75.

It actually discriminates

The same run against other categories, which is how you know the signal is real rather than a constant:

CategoryUnclaimed
warung (small local eateries)15/20
internet cafe7/20
salon1/20
dentist1/20

Professional practices are almost always claimed; informal micro-businesses are almost never. Point the actor at the second group.

Building a call list

onlyUnclaimed, onlyWithoutWebsite, onlyWithoutPhone and minOpportunityScore narrow the sweep to businesses worth a call. They combine, so onlyUnclaimed + onlyWithoutWebsite gives you the strongest prospects only — and legitimately returns nothing for a well-managed category.

minOpportunityScore: 65 is a good starting threshold.

Locations

areaName for a built-in city or country, or a centre point with radiusKm, or an exact boundingBox. Areas are tiled into multiple search points and then filtered against your exact area using each business's real coordinates.


How the score works

SignalPoints
Unclaimed listing40
No website25
No phone10
No opening hours10
Fewer than 5 reviews10
Rating below 4.05

A permanently closed listing is forced to 0 however neglected it looks — a dead business is not a prospect and should never sit at the top of your call list. It still appears with businessStatus: permanently_closed so you can see why.


Limits worth knowing

  1. Closed businesses are hard to discover. Google appears to exclude permanently closed listings from search results — across nine queries in two countries, including chains known to be defunct (7-Eleven Indonesia, Toys R Us, Blockbuster), not one closed listing came back. Closure is therefore reported reliably only for businesses you supply directly via placeUrls / placeIds, or when verifyWithPlaceDetails is on. Use this actor to monitor known businesses for closure, not to discover closed ones.
  2. verifyWithPlaceDetails costs one extra request per business. Leave it off for large sweeps; turn it on for a shortlist you are about to call.
  3. Claim status reflects what Google exposes publicly. It is derived from the presence of Google's own "Own this business?" action, which is the same signal a human sees in Maps.
  4. Category names follow language. Keep language: "en" unless you need local category names — the closure wording matched is English.

Cost and proxy

Every signal except closure rides in the search response, so a sweep costs one request per twenty businesses — the cheapest actor in this Maps family.

Proxy is off by default and that is correct here: the claim signal survives even the reduced record Google serves datacenter IPs, so the platform's own IP loses nothing. Residential is not recommended for Google — it draws consent and CAPTCHA interstitials.


Output shape

Portfolio envelope — _input, _source, _scrapedAt, recordType — with _error / _errorDetail on failures. recordType is BUSINESS, AREA_SUMMARY or ERROR. Three Console views ship with the actor: Overview, Sales prospects and Status & verification.


Development

pip install -r requirements.txt
python test_errors.py # offline: claim detection, closure logic, scoring, filters
python test_local.py # live end-to-end run

See CRAWLING_METHOD.md for the reconnaissance, the category-by-category validation of the claim signal, and the "every record contains the word closed" trap.