Business Search & AI Visibility Audit: NAP, Schema, AI Crawlers
Pricing
$40.00 / 1,000 site auditeds
Business Search & AI Visibility Audit: NAP, Schema, AI Crawlers
Local SEO + AI search audit per business site: NAP and opening-hours consistency (site, schema, Google Business Profile, directories), schema vs visible prices, AI crawler access (GPTBot, OAI-SearchBot, PerplexityBot, ClaudeBot) and indexing. P0-P3 findings with fixes. $0.04/site.
Pricing
$40.00 / 1,000 site auditeds
Rating
0.0
(0)
Developer
Umair Saleem Mohammad Saleem
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Security
Limited permissionsShare
Business Search & AI Visibility Audit - NAP, Schema, AI Crawlers
Answer first: give this actor a business website (clinic, salon, restaurant, shop, agency client) and it checks whether Google, maps apps and AI assistants (ChatGPT, Perplexity, Gemini, Copilot) get the right facts: name, phone, address and opening hours, prices in structured data, AI crawler access and indexing basics. Every problem becomes one row with a P0-P3 severity, the URL, what was observed, what was expected and a plain-English fix. $0.04 per audited site. Unreachable or bot-blocked sites are free.
| Quick facts | |
|---|---|
| Best for | Local SEO audits, AI search visibility (AEO / GEO) checks, agency pitch audits, client onboarding baselines, multi-location QA |
| Input | Website URLs, plus optional Google Business Profile URL, directory listing URLs and the owner-confirmed facts |
| Output | One row per finding (P0-P3, evidence, fix) + one summary row per site, a findings CSV and a client-ready Markdown report |
| Price | $0.04 per audited site (homepage + up to 25 key pages + sitemap sample). Findings rows are free. No start fee |
| Needs | Nothing: no API keys, no proxies, no logins |
| Does not do | Change anything on the site, invent a score, or claim a fix is approved. It collects evidence and flags |
What it checks
| Area | Checks | Example finding (illustrative) |
|---|---|---|
| NAP & opening hours | Name, phone, address and day-by-day opening hours across the site's pages, its LocalBusiness / Organization schema, the Google Business Profile, directory listings and the facts you confirm | "Schema says Thu 09:00-21:00, contact page says Thu 09:00-15:00" (P1) |
| Structured data vs the page | Invalid JSON-LD, missing LocalBusiness schema, schema phone/address not shown on the page, Product/Offer price not equal to the visible price, offers without currency, FAQ markup for questions nobody can see | "Schema price 43.00 USD, page shows 39.00" (P1) |
| AI crawler access | robots.txt rules for Googlebot, Bingbot, OAI-SearchBot, ChatGPT-User, PerplexityBot, GPTBot, ClaudeBot, Google-Extended, CCBot; meta robots / X-Robots-Tag noindex, nosnippet, max-snippet:0; firewall test with AI bot user agents; JavaScript-only content; /llms.txt | "robots.txt blocks OAI-SearchBot: no ChatGPT search citations" (P1) |
| Indexing basics | Status codes, http→https, redirect chains, canonical (missing, conflicting, cross-domain, broken target), noindex on money pages, XML sitemap (exists, valid, in robots.txt, sampled URLs return 200 and are indexable), hreflang (codes, absolute URLs, return links, live targets) | "Homepage canonical points to a 404" (P1) |
Severity model (no vanity scores)
| Level | Meaning | Examples |
|---|---|---|
| P0 act today | A wrong live fact or a block that removes the business from search | Schema phone differs from the confirmed phone, homepage noindex, robots.txt blocks Googlebot, robots.txt 5xx |
| P1 this week | Conflicting facts or AI search access problems | Hours in schema differ from the page, AI search bot blocked, price mismatch, invalid JSON-LD, no LocalBusiness schema on a local business |
| P2 this cycle | Hygiene that weakens trust or crawling | Sitemap missing or with broken URLs, hreflang errors, hours not in schema |
| P3 backlog | Nice to have, or a policy choice to confirm | No llms.txt, training bots blocked (GPTBot, CCBot), missing canonical |
Example output (from a real test run, business name removed)
| Severity | Finding | Observed | Expected |
|---|---|---|---|
| P0 | Phone in structured data differs from the confirmed business phone | schema: +965 2296 xxxx | confirmed: +965 2228 xxxx |
| P1 | Opening hours in structured data differ from hours shown on the site | schema: Th 09:00-21:00, Sa 09:00-21:00 | contact page: Th 09:00-15:00, Sa 11:00-19:00 |
| P1 | Address in structured data does not match the address shown on the site | schema street words not on any page: (old building name) | the address on the contact page |
| P2 | Opening hours shown on the site but missing from structured data | Mo-Fr 09:30-19:00, Sa 09:00-18:00, Su closed | openingHoursSpecification |
| P2 | 1 of 10 sampled sitemap URLs return errors | /2020/05/31/reopening/ (500) | every sitemap URL returns 200 |
Each row also has fix (what to change, in plain English), evidence, url, code, category, source (website, Google Business Profile, a directory, or your confirmed facts) and status: FLAGGED - needs human review.
The summary row per site lists the facts found (schema phones vs visible phones, addresses, hours), the AI crawler table (allowed / blocked per bot, HTTP status with each bot's user agent), llms.txt, sitemap stats, structured data types and what each profile/directory says.
How to use
- Paste one website per line in Business websites. To compare with listings, add the Google Maps / Business Profile URL and directory URLs on the same line, separated by spaces.
- Optional: type the owner-confirmed (or Google Business Profile) name, phone, address and hours. Any website or schema value that differs is flagged.
- Run. Open the Findings tab (P0 first), or download
FINDINGS.csv/REPORT.mdfrom the key-value store.
{"sites": ["https://example-dental.com https://www.yelp.com/biz/example-dental"],"knownPhone": "+1 555 010 0000","knownHours": "Mon-Fri 9am-6pm, Sat 10am-2pm, Sun closed","maxPagesPerSite": 8}
Bulk with different profiles per business: use businesses, e.g. [{"url": "https://clinic-a.com", "gbpUrl": "...", "directoryUrls": ["..."], "phone": "...", "hours": "..."}].
Google Business Profile: honest note
Google Maps pages load their details with JavaScript, and this actor does not log in or scrape Google. When a profile cannot be read you get a P3 row saying so (never a guess). Type the profile's phone, address and hours into the Confirmed fields and they are compared with the website and schema. Directory pages (Yelp, Fresha, Yell, TripAdvisor, Zomato and others) are read from their structured data or page text when the site allows it.
Pricing
$0.04 per audited site, charged once when the site's summary row is written. A site includes the homepage, up to 25 key pages (contact, about, locations, prices, services, products), robots.txt, llms.txt, the sitemap with up to 100 sampled URLs, hreflang alternates, canonical targets and the profile/directory URLs you give.
- Free: sites that do not resolve, time out or are blocked by bot protection, invalid input lines and all finding rows.
- 100 sites = $4. Set "Max sites per run" or Apify's maximum cost per run to cap spend.
Who uses it
- SEO and marketing agencies: a fact-based audit for a sales call or client onboarding in minutes, with evidence a client can verify.
- Local businesses (clinics, salons, restaurants, cleaners, shops): find out why Google or ChatGPT shows the wrong hours or phone.
- AEO / GEO specialists: check that AI search bots can read the site and that the facts they will quote are consistent.
- Multi-location brands: catch branch pages with old hours, phones or addresses.
FAQ
Is blocking GPTBot a problem? Not necessarily. GPTBot, ClaudeBot, CCBot and Google-Extended are training crawlers; blocking them is a business choice, so it is a P3 "confirm this is intended". Blocking OAI-SearchBot, ChatGPT-User or PerplexityBot removes you from those AI search answers (P1). Blocking Googlebot or Bingbot is P0.
Does llms.txt matter? It is a proposed standard and no major AI search engine has confirmed using it, so a missing file is only P3.
Why no overall score? Scores hide what to do. A P0 wrong phone matters more than ten P3 items, so you get a prioritised list with evidence instead.
Does it fix anything? No. It reads public pages and flags. A person decides what to change.
Is it polite to sites? About 30-60 requests per site, at most 3 at a time, with an identifying user agent. Private and internal addresses are never fetched.
Done-for-you audit
Want this turned into a prioritised fix plan for your client or your own business, checked by a person, with Google Business Profile and AI answer checks included? Cygnix Labs runs a $99 agency audit. Email info@cygnixlabs.com with the website.
More Cygnix Labs actors
- AEO & AI Visibility Audit: page-level AI answer readiness
- Redirect Checker: redirect chains, loops and status codes in bulk
- Broken Backlink Finder: reclaim links pointing at 404 pages
- Traffic Drop Checker: Google update or technical break?
Changelog
- 0.1 (2026-11-01): First release. NAP and day-by-day hours consistency (site, schema, profile, directories, confirmed facts), schema vs visible price/FAQ, AI crawler robots + firewall test, llms.txt, indexing basics, P0-P3 findings with fixes.