Small Business Website Opportunity Finder
Pricing
Pay per usage
Small Business Website Opportunity Finder
Find small business websites with visible opportunity gaps using geography and category searches, then score their website quality and improvement potential.
Pricing
Pay per usage
Rating
5.0
(2)
Developer
Jesper Frilund
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
3
Monthly active users
11 days ago
Last modified
Categories
Share
Find country-safe small-business website leads with visible improvement opportunities — useful for freelance web developers, small agencies, SEO consultants, and lead-generation teams.
This Actor discovers businesses from a place + category, validates the requested country before a lead is scored, visits each business website, and surfaces practical gaps such as weak booking paths, thin content, missing trust signals, and unclear contact information.
What it does
- Searches for businesses by geography and category.
- Finds each business website when available.
- Fetches the homepage and priority pages.
- Extracts website signals.
- Returns opportunity and trust scores with outreach-friendly summaries.
Hosted Google Places discovery — no API key required
Discovery mode (searching by places + categories) uses a managed Google Places API (New) integration. You do not need a Google Cloud account, billing setup, or API key for normal runs. The Actor keeps the provider credential private and never exposes it in input, output, or logs.
Discovery is bounded to keep the service predictable: searches use capped Google Places requests and the Actor only analyzes the number of websites you request. If Google Places is temporarily unavailable or rate-limited, the Actor writes one friendly discovery-error row to the dataset explaining what happened and what to do next; the run still finishes normally.
Manual domains mode skips Google Places discovery entirely and does not use the managed integration.
Good use cases
- Find local businesses that may need a website refresh.
- Build prospect lists for web design, SEO, CRO, or conversion work.
- Prioritize outreach based on visible website gaps.
- Compare businesses in the same category and city.
Example inputs
{"places": ["Nyköping, Sweden"],"categories": ["pizza restaurant"],"maxResults": 20,"maxPagesPerSite": 2,"googleMapsMaxCrawledPlacesPerSearch": 20}
{"places": ["Norrköping, Sweden"],"categories": ["pet groomer"],"maxResults": 20,"maxPagesPerSite": 2,"googleMapsMaxCrawledPlacesPerSearch": 20}
{"places": ["Manchester, UK"],"categories": ["hair salon", "barbershop"],"maxResults": 20,"maxPagesPerSite": 2,"googleMapsMaxCrawledPlacesPerSearch": 20}
Input fields
| Field | Type | Description |
|---|---|---|
places | array | Cities, regions, or geographies to search in. |
categories | array | Business categories to search for, e.g. pizza restaurant, pet groomer, hair salon. |
maxResults | integer | Maximum number of websites to analyze. Default is 20 for beta/normal prospecting. |
maxPagesPerSite | integer | Maximum number of pages to fetch per website. Default is 2 for beta/normal prospecting. |
googleMapsMaxCrawledPlacesPerSearch | integer | How many Google Maps places to inspect per query before filtering. Default is 50 and maximum is 100. Use 20 for a cost-safe smoke test; use 50 when you need broader coverage. |
domains | array | Optional manual domain list for direct audit mode. Leave empty for discovery mode. |
country | string | Optional explicit country, e.g. Sweden; recommended when a city name is ambiguous. |
city / region | string | Optional explicit location fields for disambiguation. |
forceCountryMatch | boolean | Default true: discard results outside the requested country. |
How to use the results
Use the Lead overview as an outreach queue: sort by leadPriority and leadScore, read mainReason, topFixesText, outreachAngle, and nextAction, then contact high-priority independent businesses first. Check locationWarning before outreach when you search an ambiguous place name.
Category examples
Use plain business categories — the kind of thing you would search for on Google Maps. Google Maps is usually forgiving, so free-form local-language terms can work well too, for example skoaffär, frisör, or pizzeria. English is still a good fallback if a local term gives weak results.
Good input:
"categories": ["hair salon", "pet groomer", "pizza restaurant"]
Avoid vague inputs like small business, good leads, companies, or websites. Combine one clear category with one place instead, for example dentist + Manchester, UK.
Quick starter list
If you are unsure what to enter, start with one of these:
pizza restaurantrestaurantcafebakeryhotelbed and breakfasthair salonbarbershopnail salonbeauty salonpet groomerdog daycareveterinariancar repairdentistcleaning companypaintercarpenterplumberelectricianlandscapergymyoga studiophysiotherapistchiropractor
Food, drink, and hospitality
| What you want | Try these category inputs |
|---|---|
| Pizza restaurants | pizza restaurant, pizzeria, pizza, pizzerior |
| Restaurants | restaurant, restaurang |
| Cafés | cafe, café, kafé, coffee shop |
| Bakeries / pastry shops | bakery, bageri, konditori |
| Bars / pubs | bar, pub |
| Hotels / guest houses | hotel, bed and breakfast, guest house, bnb |
| Shoe stores | shoe store, shoe shop, skoaffär, skobutik |
Beauty and personal services
| What you want | Try these category inputs |
|---|---|
| Hair salons | hair salon, frisör, frisörsalong |
| Barbers | barber, barbershop, herrfrisör |
| Nail salons | nail salon, nagelsalong |
| Beauty salons | beauty salon, skönhetssalong |
| Massage / spa | massage, spa |
| Tattoo studios | tattoo studio, tatuerare |
Pets and animals
| What you want | Try these category inputs |
|---|---|
| Pet groomers | pet groomer, dog grooming, hundfrisör, hundsalong, hundtrim |
| Dog daycare / boarding | dog daycare, dog boarding, hunddagis, hundpensionat |
| Veterinarians | veterinarian, veterinary clinic, veterinär |
Home, trades, and local services
| What you want | Try these category inputs |
|---|---|
| Car repair | car repair, auto repair, bilverkstad, verkstad |
| Dentists | dentist, dental clinic, tandläkare |
| Cleaning companies | cleaning company, cleaning service, städfirma, städbolag |
| Painters | painter, painting contractor, målare, målerifirma |
| Carpenters / builders | carpenter, construction company, snickare, byggfirma |
| Plumbers | plumber, plumbing service, rörmokare, vvs |
| Electricians | electrician, elektriker, elinstallation |
| Landscapers / gardeners | landscaper, gardener, trädgårdsservice |
| Locksmiths | locksmith, låssmed |
Health, fitness, and activities
| What you want | Try these category inputs |
|---|---|
| Gyms | gym, fitness center, träningscenter |
| Yoga studios | yoga studio, yoga |
| Physiotherapy | physiotherapist, physical therapy, fysioterapeut |
| Chiropractors | chiropractor, kiropraktor |
| Clinics | clinic, private clinic, vårdcentral |
Tips for better results
- Start with one city and one category, for example
Malmö, Sweden+frisör. - If a Swedish category gives weak results, try the English equivalent too.
- Use
maxResults: 20andgoogleMapsMaxCrawledPlacesPerSearch: 20for beta testing and normal prospecting. This gives useful coverage while keeping Google Places costs bounded. - Use
maxResults: 10-30depending on city/category size. - For larger cities, run multiple focused category/place combinations instead of one huge Google Maps pull. The current default intentionally caps discovery to keep usage predictable.
- Some businesses only list Facebook, Foodora, booking platforms, or no website. These may be filtered out or ranked lower.
Output fields
Each result is written as one flat lead row in the Apify dataset. The important fields are visible directly in the table so you can judge leads without reading logs.
Key fields:
| Field | Meaning |
|---|---|
businessName | Business name when found. |
domain / websiteUrl | Website being analyzed. |
leadPriority / leadQuality | Human-readable outreach priority. Start here before reading numeric scores. |
opportunityLevel | Text description of improvement potential, e.g. High improvement potential. |
trustLevel | Text description of trust hygiene, e.g. Weak trust hygiene. |
scoreExplanation | Plain-English explanation of what drove the score. |
leadScore | Numeric prospect score for sorting, based on opportunity, fit, and contactability. |
displayScore / opportunityScore | Legacy numeric opportunity score. Higher means more visible improvement potential, not “better design”. |
trustScore | Numeric trust/hygiene score. Higher means stronger trust signals. |
smallBusinessFitScore | Helps separate independent-business leads from chains/platforms. |
mainReason | Main reason the lead looks interesting. |
topFixesText | Practical website fixes to mention or sell. |
outreachAngle | Outreach-ready pitch angle. |
nextAction | Concrete next step for the lead, ready for an outreach queue. |
requestedLocation / requestedCountry | The location scope the run was asked to use. |
resolvedLocation / resolvedCountry | Location returned by the discovery provider for a retained lead. |
locationWarning | Explains ambiguous or filtered geography; check this before outreach. |
runStatus / runWarning | Run-level completion state and any partial-result warning. |
phone / email / address | Contact details when found. |
summary | Concise lead summary. |
details | Full nested diagnostics for debugging/audit. |
See docs/output-field-register.md for the full output register and field meanings.
Example output shape:
{"businessName": "Pizzeria Mamma Mia","domain": "mammamiapizza.se","websiteUrl": "https://mammamiapizza.se","leadScore": 76,"leadPriority": "high","leadQuality": "Strong outreach lead","verdict": "Strong outreach lead","opportunityLevel": "High improvement potential","trustLevel": "Weak trust hygiene","scoreExplanation": "Opportunity is high improvement potential and trust is weak trust hygiene. Main drivers: trust hygiene gap, booking/conversion gap.","displayScore": 72,"opportunityScore": 72,"trustScore": 41,"smallBusinessFitScore": 83,"mainReason": "trust hygiene gap, booking/conversion gap","topFixesText": "add privacy policy; add clearer booking CTA","outreachAngle": "Lead with booking and conversion...","phone": "...","email": null,"summary": "Visible website improvement potential with weak trust hygiene."}
How to interpret scores
Start with the text fields first:
- Lead quality / priority: the practical outreach verdict.
- Opportunity level: how much visible website improvement potential the site appears to have.
- Trust level: how strong or weak the trust/hygiene signals appear.
- Score explanation: the main reasons behind the labels.
Numeric scores are mainly for sorting and filtering:
- Opportunity score /
displayScore: higher means more visible improvement potential. It does not mean the website is visually better. - Trust score: higher means stronger trust and hygiene signals.
- Small business fit: helps separate realistic independent-business prospects from larger chains or platforms.
Scores are directional heuristics, not a human design review. Spot-check websites before outreach.
Managed discovery limits
Discovery uses the Actor's managed Google Places integration. Each query is bounded and the Actor caps the number of Google Places candidates it inspects before website analysis. Google Places may make a bounded follow-up lookup when a candidate is missing a website; candidates are deduplicated first to avoid paying twice for the same business.
Recommended normal beta input:
{"maxResults": 20,"maxPagesPerSite": 2,"googleMapsMaxCrawledPlacesPerSearch": 20}
For a quick smoke test:
{"maxResults": 5,"maxPagesPerSite": 1,"googleMapsMaxCrawledPlacesPerSearch": 5}
You do not need to configure Google Cloud billing or a provider key. The Actor returns a clear discovery-error dataset row if the managed discovery provider cannot serve a request.
Notes and limitations
This is a beta tool. Results are heuristic and should be spot-checked before outreach.
Discovery depends on search/map data availability. Some businesses may only list Facebook, Foodora, booking platforms, or no website at all. The Actor prioritizes real business websites over directories and weak platform pages when possible.
Scores are website-quality signals, not a judgment of the business itself.
Best workflow
- Start with one city and one category.
- Use
maxResults: 20,maxPagesPerSite: 2, andgoogleMapsMaxCrawledPlacesPerSearch: 20for a realistic cost-safe beta/prospecting pass. - Spot-check the top results.
- Export usable leads into your CRM or outreach sheet.
- Refine category/place and rerun.