Maps Location Website Health Audit avatar

Maps Location Website Health Audit

Pricing

from $20.00 / 1,000 location auditeds

Go to Apify Store
Maps Location Website Health Audit

Maps Location Website Health Audit

Offline audit of branch-directory website links: missing, malformed, off-brand and duplicated URLs.

Pricing

from $20.00 / 1,000 location auditeds

Rating

0.0

(0)

Developer

Practical AI Lab

Practical AI Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Security

Limited permissions

Share

Checks the website column of a branch or store directory that you already hold, for example an export of your own Google Maps business listings. It finds missing and malformed website links, domains that do not match your brand, and several locations that point to the same page. It works entirely offline on the data you provide.

What it does

  • Missing and malformed links: empty values, placeholders such as N/A, missing https prefix, typos like https//, whitespace, invalid host names, private or local addresses, non-web schemes.
  • Brand-domain consistency: compares each domain with the brand domains you list. If you list none and supply at least 3 sites, the dominant domain is inferred from your input and outliers are flagged.
  • Duplicate location URLs: normalizes links (case, www, trailing slash, fragments, tracking parameters, index.html) and groups locations sharing one URL.
  • Directory/social links: flags links to social, directory or maps pages used instead of an own website.

Each row gets a status (ok, warning, error) and issue codes. A SUMMARY record in the key-value store lists counts, duplicate groups and notes.

Privacy

Only locationId, name, city and websiteUrl are read. Phone, email and any other columns are ignored. Contact-like values placed in the website field (emails, tel: links) are flagged and shown as [redacted]. Credentials inside URLs are removed from output. Nothing is collected from any website or service.

Sample input

{
"locations": [
{"locationId": "S001", "name": "Acme Coffee Downtown", "city": "Springfield", "websiteUrl": "https://www.acmecoffee.example/locations/downtown"},
{"locationId": "S002", "name": "Acme Coffee Riverside", "city": "Springfield", "websiteUrl": "acmecoffee.example/locations/riverside?utm_source=maps"},
{"locationId": "S003", "name": "Acme Coffee Airport", "city": "Shelbyville", "websiteUrl": "http://acme-coffee-airport.example"},
{"locationId": "S004", "name": "Acme Coffee Mall", "city": "Shelbyville", "websiteUrl": ""},
{"locationId": "S005", "name": "Acme Coffee Harbor", "city": "Capital City", "websiteUrl": "https://acmecoffee.example/locations/downtown/"},
{"locationId": "S006", "name": "Acme Coffee Station", "city": "Capital City", "websiteUrl": "https//acmecoffee.example/station"}
],
"brandDomains": ["acmecoffee.example"],
"allowSubdomains": true,
"ignoreTrackingParameters": true,
"maxLocations": 1000
}

You can also paste CSV text with a header row (locationId,name,city,websiteUrl) into csvText.

Output fields

locationId, name, city, inputWebsite, domain, normalizedUrl, status, issueCodes, issues (code, severity, message), duplicateGroupSize, duplicateLocationIds.

Limitations

  • No live checks. Links are never opened, so dead pages, redirects, parked domains and wrong-business pages are not detected. A link marked ok is only well-formed and consistent.
  • Domain grouping is approximate. A small built-in list of multi-part suffixes (such as co.uk) is used, not the full public suffix list; unusual suffixes may be grouped wrongly.
  • Inferred brand domain is weak evidence, especially under 30 locations. Franchises and multi-brand groups legitimately use several domains; provide brandDomains for reliable results.
  • Shared pages are not always errors. Some brands intentionally use one store-locator page; review duplicate groups before changing data.
  • Input is capped at 5000 rows per run (default 1000). Results depend entirely on the quality of the data you supply.
  • This Actor does not scrape Google Maps or any other site and does not verify that a business exists.

Pricing

The code emits one location-audited event per audited row after its result is stored; invalid input fails before any event. No payable plan is configured in this project.

Local tests

python -m unittest discover -s tests (offline; the tests do not need the Apify SDK).