CatalogScan

SEO Guide · 2026

Ecommerce Price Comparison and AI Agents: How Bots Compare Your Prices

AI shopping agents don't just recommend products — they compare prices across dozens of sellers in real time. Understanding how ChatGPT Shopping, Google AI Mode, and Perplexity Commerce source and verify price data is the difference between appearing in price comparison results and being invisible to them.

TL;DR AI agents source prices from three places: Google Shopping Graph (Merchant Center feed, updated daily), Bing Shopping Grid (Bingbot crawl), and direct page crawls (PerplexityBot, ClaudeBot). The fastest, most accurate price feed is a verified Merchant Center account. On-page, ensure offers.price is a plain number, priceCurrency is an ISO 4217 code, and priceValidUntil is either a future date or omitted. Stale or expired price data loses placement in AI price comparison results.

Where AI shopping agents get price data

There are three main price data pipelines that AI shopping agents use, each with different freshness and accuracy characteristics:

Price data sourceUsed byUpdate frequencyHow to optimize
Google Shopping Graph (Merchant Center) Google AI Mode, Google Shopping Hourly to daily (feed-based) Submit a verified Product feed; enable automatic item updates
Bing Shopping Grid ChatGPT Shopping, Bing Shopping Daily to weekly (Bingbot crawl) Verify in Bing Webmaster Tools; keep Product JSON-LD accurate
Direct page crawl PerplexityBot, ClaudeBot, GPTBot Days to weeks (crawl-rate dependent) Accurate JSON-LD; fast TTFB; no bot-blocking
Affiliate / data aggregators Perplexity Commerce, some ChatGPT Varies (aggregator refresh rate) Ensure affiliate feed data matches live prices

PriceSpecification JSON-LD: the correct way to express price

The standard Offer type with price and priceCurrency is sufficient for most products. For products with complex pricing (sale price + original price, price ranges, quantity discounts), use the full PriceSpecification type:

Standard Offer (most Shopify products)

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trailblazer Boot Mid",
  "offers": {
    "@type": "Offer",
    "price": "89.99",
    "priceCurrency": "USD",
    "priceValidUntil": "2027-01-01",
    "availability": "https://schema.org/InStock",
    "url": "https://yourstore.com/products/trailblazer-boot-mid",
    "seller": { "@type": "Organization", "name": "YourStore" }
  }
}

Sale price with original price

"offers": {
  "@type": "Offer",
  "price": "59.99",
  "priceCurrency": "USD",
  "priceValidUntil": "2026-07-31",
  "availability": "https://schema.org/InStock",
  "priceSpecification": [
    {
      "@type": "PriceSpecification",
      "price": "59.99",
      "priceCurrency": "USD",
      "description": "Sale price"
    },
    {
      "@type": "UnitPriceSpecification",
      "referenceQuantity": { "@type": "QuantitativeValue", "value": "1" },
      "price": "89.99",
      "priceCurrency": "USD",
      "description": "Original price"
    }
  ]
}

Common price JSON-LD errors that break AI price comparison

ErrorIncorrectCorrectAI impact
Currency symbol in price "price": "$89.99" "price": "89.99" Price rejected as non-numeric; product excluded from price index
Currency name instead of ISO code "priceCurrency": "US Dollar" "priceCurrency": "USD" Currency not recognized; price not indexed
Expired priceValidUntil "priceValidUntil": "2025-01-01" "priceValidUntil": "2027-01-01" or omit Price treated as stale; may be excluded from price comparison
Price with comma thousands separator "price": "1,299.00" "price": "1299.00" Parser treats 1 as the price; incorrect price in AI index
Missing priceCurrency "price": "89.99" only Always include "priceCurrency" Price cannot be compared cross-market; excluded from comparison
Price range as text "price": "89-149" Use ProductGroup with per-variant Offer items Non-numeric price; excluded from price index entirely

AI price comparison ranking: what else matters

Price alone does not determine AI recommendation order. The full ranking model for price comparison results includes:

  1. Price accuracy: Does the price in structured data match the live page price? Mismatches (even by $0.01) can trigger a compliance flag in Google Merchant Center. AI agents doing live crawl cross-checks will down-rank or exclude mismatched prices.
  2. Availability accuracy: Is the product actually in stock? AI agents increasingly cross-check availability signals with add-to-cart page behavior. A product marked InStock that produces an error on checkout gets a trust penalty.
  3. Seller reputation: Merchants with a Google Merchant Center account, verified return policy schema, and AggregateRating signal higher trust to AI ranking models.
  4. Shipping cost clarity: AI agents that show "free shipping" vs. "$8.99 shipping" use shippingDetails JSON-LD (or Merchant Center shipping rules). Missing shipping schema means the AI shows "shipping: unknown" which reduces click-through versus competitors who show "$0 shipping".
  5. GTIN match: For exact-match queries (user searching for a specific product by model number or UPC), having the correct GTIN is a prerequisite for appearing in results at all.

ShippingDetails: the price comparison trust signal most stores miss

"shippingDetails": {
  "@type": "OfferShippingDetails",
  "shippingRate": {
    "@type": "MonetaryAmount",
    "value": "0",
    "currency": "USD"
  },
  "shippingDestination": {
    "@type": "DefinedRegion",
    "addressCountry": "US"
  },
  "deliveryTime": {
    "@type": "ShippingDeliveryTime",
    "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
    "transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "DAY" }
  }
}

Add shippingDetails inside your Offer block. This tells AI price comparison tools your shipping cost (including $0 for free shipping) and estimated delivery window — two factors that influence buyer decisions and AI recommendation confidence.

Multi-currency stores: the price data mismatch trap

Shopify Markets lets you sell in multiple currencies with localized pricing. AI agents indexing your store will crawl the URL as served — which means they may see different prices depending on their IP geolocation and the Shopify Markets redirect logic.

ScenarioAI agent impact
US-based crawler (GPTBot, Googlebot) hits GBP-priced market URL Sees GBP price, indexes in GBP — may mismatch with USD Merchant Center feed
JSON-LD outputs USD but priceCurrency says GBP Currency mismatch detected; price excluded from comparison
Shopify Markets serves different prices per region, no hreflang AI agents may index only one market's price; other markets get no price signal

Fix: Ensure your JSON-LD currency matches the currency displayed on the page. For international stores, implement hreflang tags so AI agents understand which URL serves which market, and add explicit eligibleRegion to each Offer.

Check your price structured data

CatalogScan scans your product page's price JSON-LD and flags common errors in 30 seconds.

Scan my store →

FAQ

How do AI shopping agents compare prices across ecommerce stores?

AI agents use three mechanisms: Google Shopping Graph (Merchant Center feed, updated hourly to daily), Bing Shopping Grid (Bingbot crawl, updated daily to weekly), and direct crawls by AI bots like PerplexityBot and ClaudeBot. The fastest and most accurate price data comes from a verified Merchant Center feed. Crawl-based prices can lag by days to weeks.

What is priceValidUntil and how does it affect AI price comparison?

priceValidUntil declares when a price expires. AI agents encountering an expired date treat the price as potentially stale. Google Merchant Center excludes products with past priceValidUntil dates. Best practice: set it 1–2 years in the future for stable prices, or omit it entirely to signal "valid indefinitely."

How should Shopify multi-currency stores handle price structured data for AI agents?

Each market's URL should output prices in that market's local currency with the correct ISO 4217 currency code in priceCurrency. Add eligibleRegion to each Offer and implement hreflang so AI agents understand which URL serves which market. Mismatched currency codes between JSON-LD and displayed price cause exclusion from price comparison results.

Does having a lower price help with AI shopping recommendations?

Price is a factor, but not the only one. Structured data completeness (GTIN, AggregateRating, shippingDetails), availability accuracy, and seller reputation all influence AI recommendation ranking. A higher-priced competitor with complete, accurate structured data often outranks a lower-priced store with poor data quality.