URL structure, schema markup, and local services in AI search
How URL structure and schema markup help local service brands get cited by ChatGPT, Gemini, and Perplexity. Real data, actionable steps, 140 chars.

TL;DR: AI assistants cite local service pages more when those pages have clean, descriptive URLs, complete structured data (especially LocalBusiness and Service schema), and entity-clear content. Studies on AI-cited pages show structured data presence tracks with higher citation rates. This guide covers what to change, in what order, and what's honestly a waste of your time.
Why does URL structure matter for AI search citation?
AI systems don't read URLs the way you read a street sign, but URL structure still matters. Language models train on web crawls where URL path segments are part of the document signal. A URL like /services/plumbing/drain-cleaning tells a crawling system something concrete about the page's topic before a single word of body copy loads. A URL like /p?id=4492 tells it nothing.
Researchers studying AI-cited pages have found that pages with descriptive, keyword-bearing URL paths appear in LLM citations at higher rates than structurally opaque ones. The BrightEdge 2024 Generative AI Search study found that AI overviews pulled from pages where the URL slug matched the query topic in 68% of sampled citations [1]. That doesn't prove causation. It fits the mechanism: retrieval-augmented generation (RAG) systems rank candidate passages partly by document metadata, and URL path is metadata.
For local services, the URL problem is often worse than for e-commerce or editorial sites. Many local businesses run on legacy CMS installs or franchise templates where the URL is auto-generated from a post ID or an internal category code. Fixing that is a one-time migration cost. It pays off across traditional SEO and AI citation at the same time.
The practical rule: every page you want an AI to cite should have a URL where a human can guess the topic from the path alone. No query strings. No numeric IDs. No stop words clogging the slug. /plano-tx/hvac-repair beats /plano/services/hvac/repair/residential/page1 for the same reason it beats a post ID. It's specific, short, and semantically clear.
One more thing. Canonical tags matter here. If you have duplicate or near-duplicate service pages (common in franchise networks with one-city-per-page templates), the retrieval layer may find multiple weak pages instead of one strong one. Canonical the thin duplicates to your best version.
What schema markup types actually get local service brands cited by AI?
Schema markup is the highest-leverage technical change a local service business can make for AI citation. The honest reason: language models trained partly on schema.org documentation and on pages that used it correctly, so they read structured data as a reliable machine-readable signal of what a page is about, who runs it, and what they offer.
Four schema types move the needle for local services.
-
LocalBusiness (and subtypes like Plumber, LegalService, MedicalBusiness). This is the non-negotiable baseline. It tells AI systems the business name, address, phone, geo-coordinates, hours, and service area. Without it, an AI has to infer all of that from body text, which adds noise.
-
Service. Most local businesses stop at LocalBusiness and skip this. Service schema describes individual offerings (name, description, provider, areaServed, price range) in a structured way that AI systems can extract and cite with confidence. A plumber who marks up each service page with Service schema hands an AI assistant a clean, citable description of "drain cleaning in Plano, TX" instead of forcing the model to guess.
-
Review / AggregateRating. Google's own documentation confirms review schema is eligible for rich results [2], and AI systems trained on those rich results learn to read aggregate ratings as a trust signal. A business with 4.8 stars across 340 reviews, marked up correctly, is a safer citation for an AI trying to recommend someone trustworthy.
-
FAQPage. Underused. When your service page has a properly marked-up FAQ section, AI systems can lift individual Q/A pairs as standalone citable passages. That's exactly how RAG works. It retrieves passages, not full pages. An FAQ marked up with FAQPage schema is pre-chunked for that process.
What doesn't matter much: breadcrumb schema has minimal AI citation impact for local services (it helps crawlers and traditional SERPs more). HowTo schema can help content-heavy pages but rarely fits a pure service page.
The schema.org specification says a LocalBusiness entity should include "address, geo, telephone, openingHours, and priceRange" at minimum [3]. Most local sites implement only name, address, and phone. Filling in geo-coordinates (latitude/longitude), openingHoursSpecification with day-by-day granularity, and areaServed with named city or region entities raises the completeness score and makes the entity easier for a model to anchor.
One implementation note. JSON-LD in the page head is the format Google and most AI crawlers prefer [2]. Microdata embedded in HTML is harder to maintain and easier to break. Use JSON-LD. Validate every page with Google's Rich Results Test before pushing to production.
How do AI search engines like ChatGPT, Perplexity, and Gemini actually retrieve local service pages?
Understanding the mechanics keeps you from chasing the wrong signals. ChatGPT Search, Perplexity, and Google Gemini all use some form of retrieval-augmented generation [4]. The model does not know your business from training data alone. It queries an index, retrieves candidate passages, scores them for relevance and trust, and uses the top ones to write its answer.
For local queries, the retrieval index is not Google's full web index. Perplexity uses Bing's index as a primary source, with its own crawler layered on top [5]. ChatGPT Search runs on Microsoft's Bing infrastructure. Google's AI Overviews pull from Google's own index, which means Google Business Profile data and local pack signals feed into AI citation decisions there in ways they don't for Perplexity or ChatGPT.
Here's the practical implication. If you're a local service business, your Google Business Profile is part of your AI citation stack for Gemini and Google AI Overviews, but it does almost nothing for Perplexity or ChatGPT. You need both: a complete GBP for Google's AI products, and well-structured, independently crawlable web pages for everything else.
Citation probability is shaped by factors the research can measure. A 2024 analysis by Authoritas of 10,000 AI Overview citations found that pages ranking in the top 10 organic results were cited in AI overviews 76.4% of the time, while pages ranked 11-20 were cited only 26.3% of the time [6]. Traditional ranking still matters enormously. Among pages at similar rank, those with structured data and clear entity signals get cited more often.
For local services, query fan-out matters. When someone asks "best HVAC company in Plano TX," the AI does more than run one retrieval query. It may fan out to sub-queries like "HVAC reviews Plano," "HVAC pricing Plano," and "licensed HVAC contractors Texas." Your pages need to answer those sub-questions in content, more than target the head query. The section below on content structure shows how.
You can read more about how these systems are evolving at AI search and AI-powered search features.
AI Overview citation rate by organic ranking position
| | | |---|---| | Rank 1-10 | 76.4% | | Rank 11-20 | 26.3% |
Source: Authoritas, AI Overview Citation Analysis, 2024
What does an AI-optimized URL structure actually look like for local service pages?
Here's a concrete pattern that works, based on what citation-winning local service pages have in common.
The ideal structure is /{service-category}/{specific-service}/{city-or-region}.
Examples:
- /plumbing/drain-cleaning/plano-tx
- /hvac/ac-repair/dallas-tx
- /legal/personal-injury/phoenix-az
That pattern encodes three things in the path: the service category (for topic classification), the specific service (for passage retrieval on specific queries), and the geography (for local intent matching). All three matter.
What to avoid:
| Bad pattern | Why it fails | |---|---| | /services/p?id=441 | No topic signal, no geography | | /dallas-plumbing-drain-cleaning-service-repair-tx | Keyword stuffing, hard to parse | | /plumbing/ (single flat page for all services) | Too broad, competes with itself | | /en-us/services/home/plumbing/drain/clean/plano | Too many segments, dilutes signal | | /drain-cleaning (no geo) | Misses local intent matching |
The city or region segment should use the real city name and state abbreviation, hyphenated, lowercase. Skip county names or DMA names as the primary geo signal ("dfw" or "metroplex") unless you're targeting regional intent. AI systems, and the training data behind them, tie city-state combos to places more reliably than marketing region names.
If your business serves multiple cities, you want separate pages per city, not one page with a dropdown. Each city page needs its own URL, its own LocalBusiness schema with the correct geo for that city, and enough unique content that it isn't a thin duplicate. A header image, a real local testimonial, and city-specific detail about licensing or service area is usually enough to tell them apart.
Redirects. If you're migrating from a bad URL structure, do the 301s correctly and give them three to six months to propagate before you expect AI citation gains. Don't run a migration and measure AI citation the next week.
How should local service pages be structured so AI can extract and cite them?
AI systems work at the passage level, not the page level. A 2,000-word service page isn't retrieved whole. The system extracts a 150-to-300-word chunk that best matches the user's query. So your page structure needs to make the right passages easy to grab.
The pattern that wins runs these sections, roughly in this order.
First, a clear entity statement in the opening paragraph. Something like: "[Business Name] provides licensed drain cleaning in Plano, TX, serving residential and commercial customers since [year]." That sentence answers who, what, where, and implicitly why-trust-us in one pass. AI systems love it because it's a complete, extractable fact cluster.
Second, a service description that matches your Service schema fields. The body copy for each service should include the service name, what it involves (in plain terms), who it's for, approximate price range or how pricing works, and the service area. This mirrors what goes in Service schema, and the alignment between structured data and body copy is itself a trust signal.
Third, a Q/A or FAQ section. This is where FAQPage schema pays off. Write 5-8 questions that match realistic follow-up queries: "How much does drain cleaning cost in Plano?" "Is [Business Name] licensed in Texas?" "How long does a drain cleaning appointment take?" Answer each in 50-80 words. These become citable passages for AI sub-queries.
Fourth, review signals. A block of real customer reviews, marked up with Review schema, gives AI systems social proof they can cite. The Authoritas study found review-bearing pages were cited at 1.4x the rate of equivalent pages without review content [6].
Fifth, structured contact and trust information. License number (Texas plumbers must hold a TSBPE license [7]), insurance verification statement, years in business, and service hours. AI assistants asked to recommend trustworthy local businesses weight this kind of verifiable, specific information heavily.
For more on the content strategy behind all this, the generative engine optimization guide covers the entity-building side in depth.
Does Google Business Profile affect AI citation for local services?
Yes, for Google's own AI products. For everyone else, less than you'd hope.
Google AI Overviews and Gemini pull from the Knowledge Graph, which is fed heavily by Google Business Profile data. A complete, active GBP (photos, hours, services listed, Q/A section filled in, regular posts) has a real effect on whether your business shows up in Google's AI-generated local recommendations. Google's own guidance states that businesses with complete profiles are "more likely to appear in relevant searches" [8].
The categories you pick in GBP matter more than most people realize. Google uses them to classify your business entity, and that classification feeds AI recommendation logic. If you're a plumbing company that also does HVAC, list both as separate services rather than picking one primary category and hoping the AI infers the rest.
For Perplexity and ChatGPT Search, GBP data doesn't flow directly into citations. Those systems rely on Bing's web index and their own crawlers. Your website is the primary surface. That said, GBP drives review aggregation on sites like Yelp and Angi, and those third-party review pages do get crawled and cited. So GBP shapes non-Google AI citation indirectly, through your review footprint.
One specific tactic. The GBP "Services" section lets you list individual services with descriptions. Write those descriptions with the same care you'd write a Service schema description, because Google's systems likely parse them the same way. "Emergency drain cleaning, available 24/7, serving Plano and surrounding cities" is more citable than "Drain cleaning."
Google Business Profile is free to maintain and has direct AI citation weight for the largest AI search surface. If you're only going to do one thing on this whole list, complete your GBP before you touch your schema.
What is the relationship between traditional SEO rankings and AI citation for local services?
They aren't the same thing, but they're more correlated than AI-native marketing would have you believe.
The Authoritas analysis of 10,000 AI Overview citations found that 76.4% of cited pages ranked in the top 10 organic results [6]. That's a very high correlation. Traditional SEO is still doing most of the heavy lifting for AI citation. Which means this: if your local service pages aren't ranking well organically, schema and URL work alone won't get you cited. Fix the fundamentals first.
Where AI citation splits from traditional ranking is in the kind of content that gets extracted. A page can rank first for "plumber Plano TX" on the strength of domain authority and backlinks, but if it has no extractable, passage-level answers to follow-up questions, it can rank first and still miss the AI answer. Traditional SEO gets you into the candidate pool. Structured content and schema get you into the citation.
Another split. AI systems can cite older, lower-traffic pages when those pages carry unusually specific, verifiable information that matches a niche sub-query. A three-year-old FAQ page about Texas plumbing license requirements, if it's accurate and still indexed, might get cited for "does a plumber in Plano need to be licensed" even without strong backlinks. Specificity beats authority for niche sub-queries.
For how AI search visibility metrics differ from traditional SEO KPIs, AI search visibility metrics and KPIs covers the measurement side.
If you want tooling to track where you are and aren't getting cited, AI visibility tool and AI SEO tools round up what's available.
How do you validate that your schema markup is being read by AI crawlers?
Validation is two steps: confirm the markup is technically correct, then confirm it's being indexed and read.
For technical correctness, Google's Rich Results Test (search.google.com/test/rich-results) is the most reliable free tool. It tells you whether your JSON-LD parses correctly, which schema types it detects, and which fields are missing. Schema.org's own validator at validator.schema.org catches a broader set of structural issues. Run both.
For LocalBusiness schema specifically, the fields most often missing or wrong are geo (latitude and longitude, more than address), openingHoursSpecification (structured hours, more than a text string), areaServed (list of city or region names), and priceRange (at least a rough indicator like "$$" or a range). Fill all of these.
For indexing confirmation, Google Search Console's Enhancement reports show whether your schema types are indexed and whether there are warnings or errors. Check the "Structured data" section. If you see a type listed with zero valid items, something's broken.
AI-specific crawl confirmation is where it gets harder. Perplexity's crawler shows up as PerplexityBot in server logs. OpenAI's crawlers are OAI-SearchBot and GPTBot. Check your server logs or CDN bot traffic reports to see if these crawlers visited your key service pages in the last 30 days. If they haven't, either your robots.txt is blocking them or the pages aren't well-linked enough to be found.
OpenAI's crawler documentation specifies that GPTBot respects robots.txt [9]. If you blocked all bots during a performance optimization pass and forgot to unblock AI crawlers, your pages are invisible to ChatGPT's retrieval pipeline. Check your robots.txt today.
One honest caveat. There's no API or console that tells you "Perplexity cited your page 47 times last month." The visibility infrastructure for AI citation is still primitive next to what Google Search Console gives you for traditional search. You can infer citation from branded query monitoring and AI answer spot-checks, but you can't measure it directly at scale without third-party tooling. That gap is part of why products like Spawned's AI visibility audit exist, as a workaround for a measurement problem the platforms haven't solved natively.
What common mistakes kill AI citation for local service businesses?
A handful of mistakes come up over and over, and they're all fixable.
First: blocking AI crawlers in robots.txt. This is the worst own-goal in AI search. Plenty of site owners added blanket bot-blocking rules to protect content or cut server load, not realizing they were shutting out GPTBot, PerplexityBot, and ClaudeBot. Open your robots.txt right now and check. The OpenAI documentation lists the exact user-agent strings to allow [9].
Second: schema that fights your body copy. If your LocalBusiness schema says you're open Monday through Saturday 8am-6pm, but your page says "24/7 emergency service," the conflict lowers trust in both signals. Keep them consistent.
Third: city pages that are thin duplicates. Fifty city pages that differ only in the city name aren't fifty strong pages. They're one weak page cloned 49 times. AI systems penalize thin content. Write genuinely useful, city-specific content on each page, or consolidate to a regional page and mark up areaServed correctly.
Fourth: missing or fake reviews in schema. Review schema with inflated ratings, or reviews that don't exist on the actual platforms, creates a consistency gap AI systems can detect. Only mark up reviews that exist publicly. Google's developer documentation explicitly warns against marking up reviews that aren't genuine [2].
Fifth: NAP inconsistency. Name, Address, Phone consistency across your website, GBP, and third-party directories (Yelp, Angi, BBB) is a classical local SEO factor, and it's also an AI entity resolution factor. If your business name appears differently across sources, the AI's entity resolution may create several weak entities instead of one strong one. Pick a canonical business name and enforce it everywhere.
Sixth: JavaScript-rendered content crawlers can't read. Many local service sites use React or Vue templates where service descriptions render client-side. AI crawlers, like older search crawlers, may see an empty shell. Use server-side rendering or static generation for anything you want cited. Check your pages with JavaScript disabled to see what AI crawlers actually get.
For a broader look at the AI SEO discipline and how it fits together, that guide covers entity-building and content strategy beyond the technical layer.
How do you prioritize these changes if you have a limited budget?
Not every fix returns the same. If you're running a small local service business without a dedicated web team, doing everything at once isn't realistic. Here's an honest priority order.
Priority 1: Fix robots.txt and confirm AI crawlers can reach your pages. Zero cost, 30 minutes, immediate effect. If crawlers are blocked, nothing else matters.
Priority 2: Complete your Google Business Profile. Free, high impact for Google AI products (the largest AI search surface). That means all categories filled, services listed with descriptions, photos uploaded, Q/A section answered, hours accurate.
Priority 3: Add or fix LocalBusiness JSON-LD on your homepage and each key service page. You can write this yourself using the schema.org specification [3] and Google's documentation [2]. Validate with the Rich Results Test before deploying. Budget 2-4 hours per page for a non-technical person working from a template.
Priority 4: Add Service schema to each individual service page. This is the biggest gap most local sites have. One page, one service, specific description, areaServed, priceRange.
Priority 5: Add FAQPage schema to each service page, with 5-8 real questions and answers. This is where you capture AI citation for sub-queries, more than the head query.
Priority 6: URL migration. This is the riskiest and most expensive intervention for an established site. Only do it if your current URLs are truly opaque (post IDs, query strings). If your URLs are merely imperfect but have keywords in them, leave them alone. The risk of losing existing ranking during a migration outweighs the AI citation gain for most sites.
Priority 7: City page content depth. If you already have city pages, improve each one: add a local testimonial, local license information, city-specific FAQ. Don't add new city pages until the existing ones are genuinely good.
For a tool-assisted way to audit where you stand before spending time on any of this, brandrank.ai visibility insights analysis covers how to benchmark your current AI citation footprint.
Spawned's AI visibility audit covers this stack end to end if you want a structured assessment rather than doing the prioritization by hand.
What does AI search citation look like differently for regulated local services like legal, medical, and financial?
AI assistants are more careful about citing specific businesses in regulated categories. That's intentional. OpenAI, Google, and Anthropic all apply extra caution to what they call YMYL (Your Money or Your Life) categories, and local legal, medical, and financial services sit right in that zone.
For these categories, AI citation leans toward credentialing signals (bar admission, board certification, license numbers), institutional affiliations (hospital systems, bar associations, CPA boards), and third-party validation (directories like Avvo for lawyers, Healthgrades for doctors, FINRA's BrokerCheck for financial advisors).
The practical implication: a personal injury attorney in Phoenix needs LegalService schema (the right LocalBusiness subtype), their state bar number as an identifier in the schema, and correct listings on Avvo and the state bar's public directory. The state bar directory page for your firm is often more citable by AI assistants than your own website, because it's an authoritative third-party source.
For medical practices, HealthcareProfessional and MedicalBusiness schema types are the right pick. Mark up board certifications, NPI numbers, and hospital affiliations. The NPI registry maintained by CMS is a source AI systems trust for medical provider verification [10].
For financial services, FINRA's BrokerCheck is the AI-trusted source for advisor verification. Your own site should point to your BrokerCheck profile explicitly, which builds a verifiable link between your entity and a trusted regulatory source.
The content rules for regulated services match the rules for unregulated ones, but the bar for specificity is higher. Vague claims like "we win cases" aren't citable. Specific, verifiable claims like "[Firm Name] is licensed in Arizona (State Bar No. XXXXX) and handles personal injury cases with no upfront fees" are.
One caution in regulated categories: don't pad your FAQ with claims that read like professional advice. AI systems may skip citing pages that look like they're giving legal, medical, or financial advice rather than describing a service.
Sources
- BrightEdge, 2024 Generative AI Search Study
- Google Developers, Structured Data Documentation
- Schema.org, LocalBusiness type specification
- Stanford HAI, Retrieval-Augmented Generation Overview
- Perplexity AI, About page and crawler documentation
- Authoritas, AI Overview Citation Analysis 2024
- Texas State Board of Plumbing Examiners, License Requirements
- Google Business Profile Help, Improve your local ranking
- OpenAI, GPTBot documentation
- CMS, National Plan and Provider Enumeration System (NPPES)
Frequently Asked Questions
Does schema markup directly cause ChatGPT to cite my local service business?
Not directly. Schema markup makes your pages easier for AI systems to parse and trust, but ChatGPT cites based on what appears in the indices it queries (primarily Bing's). Schema improves your visibility and entity clarity inside those indices. Think of it as removing noise rather than adding a citation trigger. Complete, correct schema is necessary but not sufficient.
How often should I update my schema markup?
Review it whenever something changes: hours, services offered, service area, pricing, or staff. AI systems can hit stale schema and stale body copy in the same crawl, and inconsistencies lower trust. A quarterly schema audit is a reasonable minimum for a local service business. Use Google Search Console's structured data reports to catch errors automatically.
Can I use schema markup on a page and still get penalized by Google?
Yes, if the schema misrepresents the page content. Google's guidelines prohibit marking up content that isn't visible on the page, inflating review counts, or claiming credentials you don't have. Violations can trigger manual actions that hit both traditional and AI search visibility. Only mark up what is true and visible on the page.
What is the minimum viable schema for a local service page?
LocalBusiness with name, address, telephone, geo (lat/long), openingHoursSpecification, and areaServed. Add Service schema for each specific service, and FAQPage for your Q/A section. That combination, done correctly in JSON-LD, covers the core of what AI systems look for. Everything else is incremental improvement on top of it.
Does Perplexity use schema markup when deciding what to cite?
Perplexity uses Bing's index and its own crawler. Bing indexes schema markup and uses it in ranking signals, so schema reaches Perplexity indirectly. Perplexity's crawler, PerplexityBot, also reads schema directly from pages it crawls. There's no public documentation from Perplexity on exactly how schema affects citation, but the indirect Bing channel alone makes it worth implementing.
How long does it take to see AI citation improvements after fixing URL structure and schema?
For schema fixes on existing URLs, expect two to eight weeks after Google and Bing re-crawl your pages, based on typical crawl frequency for local service sites. For URL migrations, allow three to six months after 301 redirects propagate before measuring AI citation changes. There are no guarantees, and current tools make it hard to attribute changes precisely.
Should every city page have its own schema or can I use one sitewide schema?
Every city page should have its own LocalBusiness schema with the correct address, geo-coordinates, and areaServed for that city. A single sitewide schema set to your headquarters city won't help city-specific pages rank or get cited for local queries elsewhere. The overhead is real, but so is the return, especially in competitive metro markets.
Does having more reviews in schema help AI citation?
Yes, in two ways. AggregateRating schema with a high rating and substantial review count (typically 50 or more) signals trustworthiness to AI systems. And pages with visible review content tend to carry extractable, specific social proof that AI assistants can cite when recommending a business. Don't fake reviews or use schema to inflate counts; the risks far outweigh any benefit.
What is the difference between GEO (generative engine optimization) and traditional local SEO for service businesses?
Traditional local SEO targets map pack placement and organic rankings through citations, backlinks, and GBP signals. GEO adds a layer focused on getting cited in AI-generated answers, which needs passage-level content clarity, entity disambiguation through schema, and AI crawler access. The two disciplines share about 70% of their tactics. The main differences are in content structure and schema completeness.
Are there specific URL length limits that affect AI citation?
No hard limit exists specifically for AI citation, but shorter, cleaner URLs get indexed and parsed more reliably. Most practitioners keep URLs under 100 characters including the domain. The bigger issue isn't length but structure: descriptive path segments matter more than brevity. A 90-character URL with clear topic signals beats a 50-character URL with a post ID.
Do AI search engines cite Google Business Profiles directly?
Google's AI Overviews and Gemini can surface GBP data directly in responses, especially for queries like 'HVAC repair near me.' Perplexity and ChatGPT don't pull from GBP directly, but GBP data feeds third-party directories those systems do cite. Maintaining an accurate, complete GBP affects AI citation on all platforms, just through different channels.
What schema type should a home services franchise use across multiple locations?
Each location page should have its own LocalBusiness schema instance with location-specific data: address, geo, phone, hours, and areaServed. The parent organization can be marked up with Organization schema and linked from each location page using the parentOrganization property. This structure helps AI systems understand both the individual location entity and its relationship to the brand.
Is there any evidence that AI search actually drives leads for local service businesses?
Direct, published data on AI-search-to-lead conversion for local services is sparse as of mid-2025. BrightEdge's 2024 research found that AI Overviews appear for roughly 30% of local intent queries, which is real exposure. The practitioner evidence is anecdotal: AI-cited businesses report increased branded search volume after AI answer appearances, suggesting awareness if not always direct conversion.
Related Articles
AI App Builders in 2026
What are AI app builders, who should use them, and how do you pick one? Here is what you need to know.
No-Code vs Low-Code vs AI
Three different ways to build without writing code from scratch. Here is how they compare and when to use each.
Write Better Prompts, Get Better Apps
The way you describe your idea matters. Tips for communicating clearly with AI builders.
Ready to try it?
Build your first app in a few minutes.
Start Building