• Skip to primary navigation
  • Skip to main content
Steady Demand Google Business Profile and Local Services Ads management and Local SEO agency.

Steady Demand Google Business Profile and Local Services Ads management and Local SEO agency.

Google Business Profile and Local Services Ads management and Local SEO agency.

  • Services
    • AI Optimization Services – AEO – GEO – AIO. Prove to Help – Backed by Data
    • GBP Management
    • GBP Listing Reinstatement
    • GBP Listing Assurance
    • Local SEO Services
    • Google Business Profile (GBP) Fake Listing Spam Reporting
    • Social Media Services
    • Local Services Ads (LSA) Management
    • LocalPics
  • Whitelabel
  • Free AI and GBP Tools
    • Steady Demand Research Index
    • Free AI Optimization Audit Tool
    • Free GBP Audit Tool
    • Free AI Text Detection Tool – Improve Human Score
  • About
    • Where Ben and Steady Demand speak and write
    • Testimonials
    • Case Studies
  • Blog
  • Contact
  • 888-778-0401
  • Clients
  • Show Search
Hide Search

AI Search Local Search Citation Ledger – Methodology & Study Design – How Consistent ChatGPT and Gemini Are

Ben Fisher · August 6, 2026 ·

Citation Ledger methodology

How the citation data is collected, classified, compared, and audited. This page documents the decisions behind the numbers and the places where the data remains incomplete.

DashboardGrounding DriftRaw DataGemini vs. ChatGPTMethodologyWhat Changed

Current wave: 1,500 queries · 50 of 50 metros · September 2026

What the study measures

When Gemini answers a question such as “Who is a good plumber in Glendale, Arizona?” it can ground the response in web sources. The Citation Ledger records those sources and the businesses the answer recommends.

There is no published ranking formula for local-business citations in AI answers. This project measures the returned answers directly instead of trying to infer a formula from isolated examples.

Primary data source

The main study uses live calls to the Gemini API with Google Search grounding. It does not scrape a search-results page or rely on manually selected examples.

Field Implementation
Model gemini-flash-latest through client.models.generate_content
Grounding tool types.Tool(google_search=types.GoogleSearch())
July baseline July 27–28, 2026
Later waves The identical query design is rerun on the dates listed in the wave table
Location City and state appear in the query text; no separate API geolocation parameter
Captured fields grounding_chunks, grounding_supports, and web_search_queries

The URI inside grounding_chunks is a Google redirect rather than the source URL. The accompanying title field contains the cited domain, such as bbb.org or reddit.com. Domain-level analysis uses that title field. We checked it against live responses before collection.

Query design

Metros

The study uses the 50 largest US Metropolitan Statistical Areas by Census-estimated population. Each MSA is represented by its principal city and state so the queries read naturally. Phoenix–Mesa–Chandler, for example, becomes Phoenix, Arizona.

Verticals

The ten categories span emergency trades, professional services, and everyday local services:

Plumber · Roofer · HVAC contractor · Electrician · Locksmith · Pest control · House cleaning · Personal injury lawyer · Dentist · Auto repair shop

Query templates

Each metro-and-vertical combination uses three phrasings:

  • best {vertical} in {city}, {state}
  • top rated {vertical} near {city}, {state}
  • who is a good {vertical} in {city}

The complete matrix is 50 metros × 10 verticals × 3 phrasings: 1,500 queries per full pass.

The July baseline returned 1,487 usable Gemini queries. Thirteen calls failed every retry and were skipped as technical failures, not sampling choices. The published page’s separate claim that 498 of 500 groups had all three phrasings is mathematically incompatible with 1,487 successful queries, so that group count is not repeated here pending verification from the raw rows. The September wave completed all 1,500 queries.

Citation taxonomy

Each cited domain is assigned to one of nine current categories:

Category Definition
Business’s own site The local company’s website; also the fallback for unrecognized domains
Local-service directory Consumer-to-provider marketplaces such as Angi, Thumbtack, HomeAdvisor, Zocdoc, and Care.com
General business directory Industry-neutral ranking or vetting sites such as BBB and ConsumerAffairs
Social/community Reddit, Quora, YouTube, Nextdoor, and Facebook
Review platform Standalone review services such as Trustpilot and Checkbook.org
News/media Publishers and city magazines
Industry-vendor content B2B companies whose marketing content appears as a consumer source
Government/association Licensing boards, trade associations, and .gov domains
Google Maps Google Maps and local-listing destinations

The original July taxonomy had eight categories; Google Maps was added for cross-engine work and historical waves were restated under the audited current taxonomy.

Domains are checked rather than classified from their names alone. For example, serviceagent.ai is vendor marketing content, not a directory. gaf.com is a roofing-material manufacturer and certified-installer finder, not an individual roofer’s website.

How the fallback category is audited

Any domain without a specific taxonomy rule defaults to “business’s own site.” That works for much of the local-service long tail, but it can also hide aggregators and publishers.

An early audit checked the 15 highest-frequency unrecognized domains and four randomly selected low-frequency domains.

  • Nine of the 15 high-frequency defaults—60%—were misclassified.
  • All four low-frequency checks were genuine individual businesses.

The nine corrections were phillymag.com, washingtonian.com, repairpal.com, opencare.com, roofpitch.net, pestcontrolcalifornia.us, birdeye.com, aaa.com, and eloa.org. They included city magazines, lead-generation marketplaces, vendor content, and membership directories. At that point, the headline business-site share moved from 61.1% to 58.7%.

The current process prints every unrecognized domain responsible for more than 0.5% of a wave’s citations. Each is visited and classified manually. The September audit reclassified roughly three dozen domains, including reviews.birdeye.com, bestprosintown.com, avvo.com, and attorneys.superlawyers.com.

After that refresh, the audit list was empty for every wave. This does not prove that every low-frequency domain is correct; it limits the largest known source of aggregate error.

Extracting recommended business names

Business names are parsed from bold text at the beginning of numbered or bulleted answer items. Pattern filters and a short stoplist remove subheadings such as “Highlights” and generic labels such as “Top Local Companies.” Both were checked against sample answers before full collection.

The extractor recognizes business names in roughly 70–75% of queries. The remaining answers use prose structures it does not recognize.

September added a filter for imperative advice bullets such as “Get multiple quotes,” which the earlier extractor could mistake for company names. Disabling that filter still leaves September’s no-recognizable-business rate at 45.3%, compared with 25.8% in July. The filter explains about 31 of 328 additional unmatched queries; it does not explain the overall change.

Google Places cross-reference

Extracted business names are matched to Google Places Text Search using the business name and metro. The lookup supplies star rating, review count, and address. Results are cached by business name and metro.

Control group for ratings

For the same 50 metros and 10 verticals, the control group uses a plain Google Places category query such as “plumbers in Phoenix, Arizona.” It contains no “best” or ranking language. Every returned result—up to 20 per cell—is retained whether or not Gemini cited it.

This is not a random sample of every local business. Google’s category search already favors businesses its system surfaces. The appropriate description is “businesses returned by a plain Google Places search,” not “all businesses.”

Measuring phrasing volatility

For every metro-and-vertical group, the cited-domain sets from the three phrasings are compared pairwise with Jaccard similarity:

intersection ÷ union

The three pair scores are then averaged. A score of 1 means the phrasings cited identical domain sets. A score near zero means little overlap.

Confidence intervals and significance tests

Headline citation shares are bootstrapped at the query level with 2,000 resamples. Each resample draws queries with replacement and recomputes the share.

Queries—not individual citations—are the sampling unit because the eight to ten citations returned inside one answer are not independent observations.

The 0.08–0.10-star rating-gap interval uses a separate business-level bootstrap. Recommended and control businesses are resampled independently because the comparison is between two business sets.

Vertical differences in phrasing volatility use a two-sided permutation test with 2,000 shuffles. The test compares group-level Jaccard scores and counts shuffled differences at least as extreme as the observed one.

The published extreme-vertical comparison was selected after seeing which of the ten verticals were highest and lowest. That introduces selection bias. A strict correction across every possible pair would require a substantially smaller p-value. Treat the ordering as a pattern, not a precisely established ranking of all ten verticals.

Local-pack control test

The control test asks whether Grounding Drift is specific to AI answers or merely reflects ordinary local-search movement.

It uses the same 500 metro-and-vertical combinations as the main study, one fixed phrasing per combination, and five completed rounds spaced five minutes apart.

One arm uses Gemini. The other uses Google’s classic local pack for the identical query through DataForSEO’s Live Google Organic Advanced endpoint. A commercial provider was used because automated direct scraping of Google results would violate Google’s terms.

Business names come from DataForSEO’s standalone local_pack result items. Consistency is measured in two ways:

  • Strict: whether the top-listed business matches between rounds
  • Loose: Jaccard overlap across the complete business lists
Surface Pairwise comparisons Top-business match Mean list overlap
Google local pack 4,940 83.3% 0.839
Gemini 4,996 5.1% 0.383

The complete five-round control retains the pattern seen after the first two rounds: Gemini’s returned businesses move far more than the local pack’s.

Gemini versus ChatGPT

The same 1,500-query design was also collected from ChatGPT Search. The metros, verticals, and literal query text matched the Gemini dataset.

ChatGPT results came through DataForSEO’s AI Optimization/ChatGPT LLM Scraper endpoint: ai_optimization/chat_gpt/llm_scraper/live/advanced. It reads the consumer-facing Search product rather than the raw OpenAI API. A commercial provider was used instead of directly scraping the product.

The endpoint supports country-level location only. Every request used “United States,” with city and state included in the query text. Collection ran with ten concurrent requests; the endpoint averaged about 19 seconds per response. DataForSEO permits up to 30 simultaneous live requests per platform.

Before analysis, leading www. prefixes were removed from ChatGPT domains. Without that normalization, www.reddit.com and reddit.com would be treated as different sources, known domains would fall into the business-site fallback, and cross-engine matches would be missed.

All 1,500 ChatGPT queries completed, all 1,500 matched Gemini keys, and the logged cost was $6.00.

Citation categories

Category Gemini ChatGPT
Business’s own site 49.6% 10.5%
Social/community 3.9% 0.1%
General business directories 17.7% 46.0%

The mean Jaccard overlap between the engines’ cited-domain sets was 8.3% across 1,500 matched queries.

Gemini returns roughly eight to ten citations per query. ChatGPT averages about 1.9. The Jaccard comparison does not adjust for that difference in set size, so it is a description of the returned sets—not a size-normalized similarity score.

Recommended businesses

Both engines named at least one recognizable business on 783 queries. On those queries:

  • The top business matched 4.9% of the time.
  • Mean Jaccard overlap across the complete recommendation lists was 0.052.

Gemini names were extracted with the study’s regex process. ChatGPT names came from DataForSEO’s structured brand_entities field.

The number of queries where both engines named a recognizable business fell from 1,099 in July to 783 in September—about 29%.

Gemini named no recognizable business on 47.4% of September queries, up from 25.8% in July. ChatGPT changed from 0.4% to 0.9%. Even with the new Gemini advice-bullet filter disabled, September remained at 45.3%.

That is a measured change in returned answer structure. It coincided with fewer citations per query, a narrower source pool, more directories, and fewer named companies; the study does not establish a single cause.

Gemini fan-out queries versus People Also Ask

Gemini grounding records the internal search strings it generates in web_search_queries. We compared them with Google’s People Also Ask questions for the identical 1,500 seed queries.

Lexical overlap was scored from zero to one:

  • Average overlap: 15.2%
  • Gemini fan-out queries scoring below 0.2: 73%
  • Highest vertical: Pest control, 26.6%
  • Lowest vertical: Auto repair, 6.4%

This measures query wording inside the grounding process. It is not a citation-visibility result and does not support an optimization recommendation by itself.

Known limitations

Each wave is a snapshot

July is the frozen baseline. The identical design is rerun as separately dated waves; previous numbers are not overwritten.

Identical queries disagree on citations roughly 60% of the time. Small wave-to-wave changes should therefore be treated cautiously. The What Changed page reports movements large enough to stand above the observed repeat-run variability.

The main study is Gemini-centric

The recurring 1,500-query taxonomy and volatility measures use Gemini API grounding. ChatGPT appears in a separate single-pass comparison. Perplexity, Microsoft Copilot, and Google AI Overviews are outside this build.

API results may differ from consumer products

gemini-flash-latest with API grounding may retrieve and rank sources differently from the Gemini consumer app or Google’s AI Overviews surface.

The ChatGPT collection uses a third-party scraper of the consumer-facing Search mode, with country-level—not cit

See the stats/study in context: Steady Demand Research Index

AI

About Ben Fisher

As a specialist in local SEO, Ben has been helping businesses grow their online presence since 1994. Thanks to his contributions to the Google Business Profile Forum, Ben has been hand-picked by Google as a Google Business Profile Diamond Product Expert. Ben is also a contributor to the annual Moz Local Search Ranking Factors Study, and a regular contributor to BrightLocal.

Ben is the co-founder of Steady Demand, a local SEO company. The team at Steady Demand specializes in helping clients fight map spam, navigate the most complex Google My Business issues, and troubleshoot ranking issues on Google.

Contact Steady Demand

If you'd rather give us a call, or schedule an appointment we can be reached at (888) 778-0401.

Get the Latest Marketing Tips and Resources!

Get our weekly social media and content marketing advice, tips and resources sent straight to your inbox! No Spam, guaranteed!

On Social Media

  • Facebook
  • LinkedIn
  • Pinterest
  • Twitter
  • YouTube

© 2026 · Steady Demand, LLC

  • Home
  • Privacy
  • Terms
  • Contact