Google Maps Weak Profile Finder
Pricing
from $2.40 / 1,000 weak profile results
Google Maps Weak Profile Finder
Find local businesses on Google Maps with weak or incomplete profiles - missing websites, low reviews, low ratings, missing phones - ranked with transparent weakness scoring, reason tags, and a recommended pitch angle for SEO, GBP, web design, and reputation outreach.
Pricing
from $2.40 / 1,000 weak profile results
Rating
0.0
(0)
Developer
Delowar Munna
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share

Find local businesses on Google Maps with weak or incomplete profiles — missing websites, missing phones, low review counts, low ratings, missing categories or hours. Each row is ranked with a transparent weakness score, reason tags, and a recommended pitch angle for SEO, GBP, web design, and reputation outreach.
V1 deliberately avoids website crawling, email extraction, full review scraping, photos, menus, and AI enrichment so the run stays fast and cheap. You only pay for unique weak-profile rows that pass your filters and are successfully written to the dataset.
✨ Why this scraper
- Weakness-focused — returns only businesses with at least one visible weakness signal, with explainable scoring and reason tags.
- Pay-Per-Event — you pay per saved row. No subscription, no monthly fee, no hidden compute charges.
- No login, no cookies, no sessions — just keyword + location.
- CSV-friendly output — flat 27-field structure, no nested objects.
- Transparent scoring — rule-based (no AI), explained below.
- Five weakness modes — bias scoring towards
missingWebsite,lowReviews,lowRating,incompleteProfile, or runbalanced.
🚀 Quick start — sample inputs
Example 1 — single query, balanced
{"searchQueries": [{ "key": "plumbers", "value": "Canberra ACT" }],"maxResults": 100,"country": "AU","language": "en","minWeaknessScore": 40,"weaknessMode": "balanced","websiteFilter": "any","phoneFilter": "any","maxRating": 4.2,"maxReviewCount": 30,"categoryFilter": "","includeOpeningHours": true,"includeCoordinates": true,"deduplicateResults": true,"proxyConfiguration": { "useApifyProxy": true }}
Example 2 — multi-query, only businesses with no website (web-design lead list)
{"searchQueries": [{ "key": "electricians", "value": "Sydney NSW" },{ "key": "dentists", "value": "Melbourne VIC" },{ "key": "cafes", "value": "Brisbane QLD" }],"maxResults": 200,"country": "AU","language": "en","minWeaknessScore": 60,"weaknessMode": "missingWebsite","websiteFilter": "missingWebsite","phoneFilter": "any","maxRating": 4.2,"maxReviewCount": 30,"categoryFilter": "","includeOpeningHours": true,"includeCoordinates": true,"deduplicateResults": true,"proxyConfiguration": { "useApifyProxy": true }}
The
searchQueriesfield uses Apify's Key/Value form editor — the Key column is the business keyword (e.g.plumbers), the Value column is the location (e.g.Canberra ACT). Add one row per search.
📦 Output
The dataset has five views:
| Tab | Filter |
|---|---|
| Weak profile leads | All saved rows (full 27-column flat table). |
| High opportunity | weakness_score >= 75 |
| Missing website | has_website = false |
| Low reviews | Reviews < 30 (or missing) |
| Low rating | Rating < 3.8 (or missing) |
Weak profile leads — table view

Sample record — Weak profile leads
{"search_keyword": "plumbers","search_location": "Canberra ACT","business_name": "MTA Plumbing & Gas","category": "Plumber","rating": 5,"review_count": 17,"phone": "+61 439 451 555","website": "","website_domain": "","address": "Canberra ACT","city": "Canberra","state": "ACT","postcode": "","country": "Australia","google_maps_url": "https://www.google.com/maps/place/MTA+Plumbing+%26+Gas/","place_id": "0x6b164d85a3f912bd:0x8a2c3d4e5f6a7b8c","latitude": -35.2809,"longitude": 149.13,"opening_hours": "","is_open_now": null,"has_website": false,"has_phone": true,"weakness_score": 60,"weakness_label": "Medium Opportunity","weakness_tags": ["missing_website","low_review_count","missing_opening_hours","website_design_opportunity","review_generation_opportunity","local_seo_opportunity"],"recommended_pitch_angle": "Website design opportunity","scraped_at": "2026-05-06T13:55:53.315Z"}
Sample record — High opportunity (score ≥ 75)
{"search_keyword": "plumbers","search_location": "Canberra ACT","business_name": "Example Local Plumbing","category": "Plumber","rating": 3.6,"review_count": 4,"phone": "","website": "","website_domain": "","address": "Canberra ACT, Australia","city": "Canberra","state": "ACT","postcode": "","country": "Australia","google_maps_url": "https://www.google.com/maps/place/example-local-plumbing/","place_id": "0x6b164d0fe0a3a3ad:0x1234567890abcdef","latitude": -35.2809,"longitude": 149.13,"opening_hours": "","is_open_now": null,"has_website": false,"has_phone": false,"weakness_score": 90,"weakness_label": "High Opportunity","weakness_tags": ["missing_website","missing_phone","very_low_review_count","low_rating","missing_opening_hours","incomplete_profile","website_design_opportunity","reputation_opportunity","review_generation_opportunity","gbp_optimization_opportunity","local_seo_opportunity"],"recommended_pitch_angle": "Website design opportunity","scraped_at": "2026-05-06T14:00:00.000Z"}
Sample record — Missing website
{"search_keyword": "plumbers","search_location": "Canberra ACT","business_name": "MTA Plumbing & Gas","category": "Plumber","rating": 5,"review_count": 17,"phone": "+61 439 451 555","website": "","website_domain": "","address": "Canberra ACT","city": "Canberra","state": "ACT","postcode": "","country": "Australia","google_maps_url": "https://www.google.com/maps/place/MTA+Plumbing+%26+Gas/","place_id": "0x6b164d85a3f912bd:0x8a2c3d4e5f6a7b8c","latitude": -35.2809,"longitude": 149.13,"has_website": false,"has_phone": true,"weakness_score": 60,"weakness_label": "Medium Opportunity","weakness_tags": ["missing_website", "low_review_count", "website_design_opportunity"],"recommended_pitch_angle": "Website design opportunity"}
Sample record — Low reviews
{"search_keyword": "electricians","search_location": "Sydney NSW","business_name": "The Local Electrician Sydney Level 2 & Emergency Specialists","category": "Electrician","rating": 4.9,"review_count": null,"phone": "+61 439 823 190","website": "https://www.thelocalelectrician.com.au/","website_domain": "thelocalelectrician.com.au","address": "","google_maps_url": "https://www.google.com/maps/place/The+Local+Electrician+Sydney/","place_id": "0x6b12bb6df74fac53:0xb207cd5a2b9b9258","has_website": true,"has_phone": true,"weakness_score": 40,"weakness_label": "Low Opportunity","weakness_tags": ["very_low_review_count","missing_address","missing_opening_hours","review_generation_opportunity"],"recommended_pitch_angle": "Review generation opportunity"}
Sample record — Low rating
{"search_keyword": "cafes","search_location": "Brisbane QLD","business_name": "Example Cafe","category": "Cafe","rating": 3.4,"review_count": 87,"phone": "+61 7 0000 0000","website": "https://example-cafe.com.au/","website_domain": "example-cafe.com.au","address": "100 Example Rd, Brisbane QLD 4000, Australia","city": "Brisbane","state": "QLD","postcode": "4000","country": "Australia","google_maps_url": "https://www.google.com/maps/place/example-cafe/","place_id": "0x6b915a0fe0a3a3ad:0xabcdef1234567890","has_website": true,"has_phone": true,"weakness_score": 30,"weakness_label": "Low Opportunity","weakness_tags": ["low_rating", "reputation_opportunity"],"recommended_pitch_angle": "Reputation improvement opportunity"}
Output fields (27)
search_keyword, search_location, business_name, category, rating, review_count, phone, website, website_domain, address, city, state, postcode, country, google_maps_url, place_id, latitude, longitude, opening_hours, is_open_now, has_website, has_phone, weakness_score, weakness_label, weakness_tags, recommended_pitch_angle, scraped_at.
🎯 Weakness scoring
Transparent rule-based score (0–100) computed from visible fields — no AI, no website crawling, no enrichment.
Base formula
| Signal | Points |
|---|---|
| Missing website | +30 |
| Missing phone | +20 |
Reviews missing or < 10 | +20 |
Reviews 10–29 | +10 |
| Rating missing | +10 |
Rating < 3.8 | +20 |
Rating 3.8–4.2 | +10 |
| Missing address | +10 |
| Missing opening hours | +10 |
| Missing category | +10 |
Score is capped at 100.
Weakness mode bias (stacks on top)
| Mode | Bonus |
|---|---|
balanced | (default formula only) |
missingWebsite | +15 if no website |
lowReviews | +15 if review count < 30 |
lowRating | +15 if rating < maxRating |
incompleteProfile | +10 each for missing website, phone, address, category, opening hours |
Labels
| Score | Label |
|---|---|
75–100 | High Opportunity |
50–74 | Medium Opportunity |
25–49 | Low Opportunity |
0–24 | Weakness Not Clear |
Recommended pitch angle
Derived from the highest-priority weakness tag — non-AI rule mapping.
| Top weakness | Pitch angle |
|---|---|
missing_website | Website design opportunity |
low_rating | Reputation improvement opportunity |
low_review_count | Review generation opportunity |
missing_phone | Profile completion opportunity |
incomplete_profile | GBP optimization opportunity |
⚙️ Filters
| Filter | Effect |
|---|---|
minWeaknessScore | Save only rows with weakness score ≥ this value (default 40, range 0–100). |
weaknessMode | Bias scoring towards a specific kind of weakness (balanced keeps everything broad). |
websiteFilter | any / missingWebsite / hasWebsite. |
phoneFilter | any / missingPhone / hasPhone. |
maxRating | When weaknessMode = lowRating, drop businesses rated above this value. |
maxReviewCount | When weaknessMode = lowReviews, drop businesses with more reviews than this value. |
categoryFilter | Case-insensitive contains match against the business category. |
deduplicateResults | Drop duplicates across queries (recommended ON). |
Filters are applied after extraction and weakness scoring, before dataset push or event charge.
💰 Pricing
Pay-Per-Event with a single event:
| Event | When charged | Frequency |
|---|---|---|
weak-profile-result | Each unique, filtered, weak-profile row successfully written to the dataset. | Per row |
🚦 Proxy policy
Use Apify Datacenter proxy or no proxy for normal runs — both work reliably for Google Maps search at this actor's conservative concurrency (max=3).
Apify Residential proxy is not supported. The actor will fail at startup if apifyProxyGroups includes RESIDENTIAL. Reason: in pay-per-event actors, residential bandwidth (~proxy/GB) is billed to the developer, not the run user, so a single bandwidth-heavy run could exceed the per-result event revenue.
If you genuinely need residential routing, supply your own residential provider via the proxy editor's Custom proxy URLs field — that traffic goes through your provider, not Apify, and is unaffected:
http://user:pass@proxy.iproyal.com:12321http://user:pass@proxy.brightdata.com:22225http://user:pass@proxy.oxylabs.io:7777
Spending-cap behavior
The actor honors the user-configured per-run spending cap (Apify eventChargeLimitReached) and stops cleanly when reached.
Not charged for weak-profile-result
- Duplicates (de-duplicated by
place_id, listing URL, name+address, name+phone, or name+location). - Rows filtered out by
minWeaknessScore,websiteFilter,phoneFilter,maxRating,maxReviewCount, orcategoryFilter. - Rows missing a
business_name. - Rows with no meaningful weakness signal.
- Failed dataset pushes.
- Anything after the per-run spending cap is reached.
📊 Run summary
After each run, a RUN_SUMMARY entry is written to the key-value store:
{"inputs_total": 3,"successful_inputs": 3,"failed_inputs": 0,"raw_results_found": 240,"results_saved": 100,"duplicates_removed": 20,"filtered_out": 120,"charged_events": 100,"blocked_requests": 0,"retry_count": 0,"runtime_seconds": 180,"scraped_at": "2026-05-07T00:00:00.000Z"}
charged_events always equals results_saved for the weak-profile-result event.
🚧 Limitations (V1)
- Cards-only extraction: V1 reads each business row directly from the search results panel and does not click into individual place detail panels. Phone, website, full opening hours, and
place_idonly appear when Google surfaces them on the card itself; otherwise these fields are empty/null. - No website crawling, email extraction, or social link extraction.
- No full review text or sentiment.
- No photos, menus, prices, or popular times.
- No login/cookie/session-based scraping.
- Address parsing into city/state/postcode is best-effort; the full
addressfield is the source of truth. - Per-query hard cap is 500 results; per-run hard cap is 5,000 results.
🛠️ Technical notes
- Stack: Node.js 22 · Apify SDK 3 · Crawlee · Puppeteer.
- Concurrency:
min=1,max=3(conservative to reduce blocking). - Memory: 1 GB min · 2 GB default · 4 GB max.
- Proxy: Apify Proxy enabled by default (datacenter). Apify Residential is rejected at startup — use Custom proxy URLs (IPRoyal / BrightData / Oxylabs) if you need residential routing. See the Proxy policy section above.
- Diagnostics: On the first failed render (no feed, or feed but zero cards), the actor saves the page HTML and URL to the key-value store as
debug-no-feed-html/debug-zero-cards-html.