Business Search & AI Visibility Audit: NAP, Schema, AI Crawlers avatar

Business Search & AI Visibility Audit: NAP, Schema, AI Crawlers

Pricing

$40.00 / 1,000 site auditeds

Go to Apify Store
Business Search & AI Visibility Audit: NAP, Schema, AI Crawlers

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

Umair Saleem Mohammad Saleem

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

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 forLocal SEO audits, AI search visibility (AEO / GEO) checks, agency pitch audits, client onboarding baselines, multi-location QA
InputWebsite URLs, plus optional Google Business Profile URL, directory listing URLs and the owner-confirmed facts
OutputOne 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
NeedsNothing: no API keys, no proxies, no logins
Does not doChange anything on the site, invent a score, or claim a fix is approved. It collects evidence and flags

What it checks

AreaChecksExample finding (illustrative)
NAP & opening hoursName, 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 pageInvalid 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 accessrobots.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 basicsStatus 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)

LevelMeaningExamples
P0 act todayA wrong live fact or a block that removes the business from searchSchema phone differs from the confirmed phone, homepage noindex, robots.txt blocks Googlebot, robots.txt 5xx
P1 this weekConflicting facts or AI search access problemsHours in schema differ from the page, AI search bot blocked, price mismatch, invalid JSON-LD, no LocalBusiness schema on a local business
P2 this cycleHygiene that weakens trust or crawlingSitemap missing or with broken URLs, hreflang errors, hours not in schema
P3 backlogNice to have, or a policy choice to confirmNo llms.txt, training bots blocked (GPTBot, CCBot), missing canonical

Example output (from a real test run, business name removed)

SeverityFindingObservedExpected
P0Phone in structured data differs from the confirmed business phoneschema: +965 2296 xxxxconfirmed: +965 2228 xxxx
P1Opening hours in structured data differ from hours shown on the siteschema: Th 09:00-21:00, Sa 09:00-21:00contact page: Th 09:00-15:00, Sa 11:00-19:00
P1Address in structured data does not match the address shown on the siteschema street words not on any page: (old building name)the address on the contact page
P2Opening hours shown on the site but missing from structured dataMo-Fr 09:30-19:00, Sa 09:00-18:00, Su closedopeningHoursSpecification
P21 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

  1. 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.
  2. Optional: type the owner-confirmed (or Google Business Profile) name, phone, address and hours. Any website or schema value that differs is flagged.
  3. Run. Open the Findings tab (P0 first), or download FINDINGS.csv / REPORT.md from 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

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.