[{"data":1,"prerenderedAt":335},["ShallowReactive",2],{"learn-geo-/en/learn/geo/pricing-visibility-en":3},{"id":4,"title":5,"body":6,"description":293,"extension":294,"meta":295,"navigation":328,"path":329,"seo":330,"stem":333,"__hash__":334},"content_en/5.learn/geo/pricing-visibility.md","Pricing Visibility",{"type":7,"value":8,"toc":287},"minimark",[9,17,22,25,43,46,49,53,66,221,236,240,262,266,283],[10,11,12,16],"p",{},[13,14,15],"strong",{},"TL;DR"," — AI assistants answering \"how much does X cost?\" need machine-readable price data. Pages without visible pricing, or pricing loaded via JavaScript after render, are invisible to AI shopping queries.",[18,19,21],"h2",{"id":20},"why-pricing-visibility-matters-for-ai-engines","Why Pricing Visibility Matters for AI Engines",[10,23,24],{},"AI shopping assistants answering pricing queries — \"how much does TrustData cost?\", \"what is the cheapest analytics tool under €50/month?\" — need price data that is:",[26,27,28,32,40],"ol",{},[29,30,31],"li",{},"Present in the page HTML (not hidden or loaded post-render via JavaScript)",[29,33,34,35,39],{},"Machine-readable (ideally in ",[36,37,38],"code",{},"schema.org/Offer"," markup)",[29,41,42],{},"Unambiguous (specific numbers, not \"contact us for pricing\")",[10,44,45],{},"Pages that hide pricing behind a \"contact us for a quote\" form are effectively invisible to AI shopping queries. The model cannot fabricate a price — it will skip the page and cite a competitor that publishes pricing openly.",[10,47,48],{},"JavaScript-rendered pricing is also a problem. Many modern e-commerce and SaaS pricing pages load prices dynamically after the initial page render. AI crawlers that don't execute JavaScript will see no pricing data in the HTML, even if users see it in their browser. The fix is to either server-side render pricing or ensure the price is in the initial HTML payload.",[18,50,52],{"id":51},"how-to-implement","How to Implement",[54,55,56,59],"ul",{},[29,57,58],{},"Ensure pricing is in the initial server-rendered HTML (not loaded via JavaScript)",[29,60,61,62,65],{},"Add ",[36,63,64],{},"Offer"," schema for each price point:",[67,68,73],"pre",{"className":69,"code":70,"language":71,"meta":72,"style":72},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"@type\": \"Offer\",\n  \"name\": \"Pro Plan\",\n  \"price\": \"99.00\",\n  \"priceCurrency\": \"EUR\",\n  \"availability\": \"https://schema.org/InStock\",\n  \"priceValidUntil\": \"2026-12-31\"\n}\n","json","",[36,74,75,84,111,132,153,174,195,215],{"__ignoreMap":72},[76,77,80],"span",{"class":78,"line":79},"line",1,[76,81,83],{"class":82},"sMK4o","{\n",[76,85,87,90,94,97,100,103,106,108],{"class":78,"line":86},2,[76,88,89],{"class":82},"  \"",[76,91,93],{"class":92},"spNyl","@type",[76,95,96],{"class":82},"\"",[76,98,99],{"class":82},":",[76,101,102],{"class":82}," \"",[76,104,64],{"class":105},"sfazB",[76,107,96],{"class":82},[76,109,110],{"class":82},",\n",[76,112,114,116,119,121,123,125,128,130],{"class":78,"line":113},3,[76,115,89],{"class":82},[76,117,118],{"class":92},"name",[76,120,96],{"class":82},[76,122,99],{"class":82},[76,124,102],{"class":82},[76,126,127],{"class":105},"Pro Plan",[76,129,96],{"class":82},[76,131,110],{"class":82},[76,133,135,137,140,142,144,146,149,151],{"class":78,"line":134},4,[76,136,89],{"class":82},[76,138,139],{"class":92},"price",[76,141,96],{"class":82},[76,143,99],{"class":82},[76,145,102],{"class":82},[76,147,148],{"class":105},"99.00",[76,150,96],{"class":82},[76,152,110],{"class":82},[76,154,156,158,161,163,165,167,170,172],{"class":78,"line":155},5,[76,157,89],{"class":82},[76,159,160],{"class":92},"priceCurrency",[76,162,96],{"class":82},[76,164,99],{"class":82},[76,166,102],{"class":82},[76,168,169],{"class":105},"EUR",[76,171,96],{"class":82},[76,173,110],{"class":82},[76,175,177,179,182,184,186,188,191,193],{"class":78,"line":176},6,[76,178,89],{"class":82},[76,180,181],{"class":92},"availability",[76,183,96],{"class":82},[76,185,99],{"class":82},[76,187,102],{"class":82},[76,189,190],{"class":105},"https://schema.org/InStock",[76,192,96],{"class":82},[76,194,110],{"class":82},[76,196,198,200,203,205,207,209,212],{"class":78,"line":197},7,[76,199,89],{"class":82},[76,201,202],{"class":92},"priceValidUntil",[76,204,96],{"class":82},[76,206,99],{"class":82},[76,208,102],{"class":82},[76,210,211],{"class":105},"2026-12-31",[76,213,214],{"class":82},"\"\n",[76,216,218],{"class":78,"line":217},8,[76,219,220],{"class":82},"}\n",[54,222,223,229],{},[29,224,225,226,228],{},"For tiered pricing, create one ",[36,227,64],{}," per tier",[29,230,231,232,235],{},"If you have regional pricing, use ",[36,233,234],{},"eligibleRegion"," in the Offer schema",[18,237,239],{"id":238},"common-mistakes","Common Mistakes",[54,241,242,248,254],{},[29,243,244,247],{},[13,245,246],{},"Pricing only in a JavaScript-rendered component"," — AI crawlers see an empty price slot; server-side render your pricing",[29,249,250,253],{},[13,251,252],{},"\"Starting from\" pricing without a specific number"," — vague price floors are not machine-readable; provide the specific entry price",[29,255,256,261],{},[13,257,258,259],{},"No ",[36,260,202],{}," — without an expiry date, stale pricing in AI engines' knowledge cache can cause user confusion",[18,263,265],{"id":264},"sources","Sources",[54,267,268,276],{},[29,269,270],{},[271,272,38],"a",{"href":273,"rel":274},"https://schema.org/Offer",[275],"nofollow",[29,277,278],{},[271,279,282],{"href":280,"rel":281},"https://developers.google.com/search/docs/appearance/structured-data/product#price",[275],"Google — Price structured data",[284,285,286],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":72,"searchDepth":86,"depth":86,"links":288},[289,290,291,292],{"id":20,"depth":86,"text":21},{"id":51,"depth":86,"text":52},{"id":238,"depth":86,"text":239},{"id":264,"depth":86,"text":265},"Clear, machine-readable pricing on the page that AI shopping assistants can extract.","md",{"publishedAt":296,"badge":297,"type":299,"faq":300,"related":310,"cta":323},"2026-03-31",{"label":298},"E-commerce","guide",[301,304,307],{"question":302,"answer":303},"What if we have custom or negotiated pricing?","For enterprise or custom pricing, include the base/list price in schema with a note that enterprise pricing varies. This gives AI engines something to cite for base pricing queries while making clear that custom pricing exists. Completely hiding pricing is worse than showing a starting price.",{"question":305,"answer":306},"How do I handle multi-currency pricing for international sites?","Create separate Offer blocks for each currency, using the eligibleRegion field to specify which geographic region each price applies to. For example, one Offer for EUR targeting FR/DE/IT and another for USD targeting US/CA. This allows AI engines to cite the correct price for each user's location.",{"question":308,"answer":309},"Does pricing visibility affect Google Shopping eligibility?","Yes. Google requires valid Product + Offer schema with a specific price and currency for Shopping feature eligibility. Pages without price data in schema are ineligible for Google Shopping and Google AI Overview shopping carousels.",[311,315,319],{"title":312,"url":313,"description":314},"Product Schema","/learn/geo/product-schema","The parent Product schema that contains your Offer pricing blocks.",{"title":316,"url":317,"description":318},"On-Page Reviews & Ratings","/learn/geo/on-page-reviews","AggregateRating alongside pricing creates a complete purchase decision context.",{"title":320,"url":321,"description":322},"Structured Comparison Tables","/learn/geo/structured-comparison","Pricing tier comparison tables that AI engines extract for \"plan comparison\" queries.",{"title":324,"description":325,"label":326,"url":327},"Is your pricing visible to AI shopping assistants?","TrustData checks for JavaScript-rendered pricing, missing Offer schema, and vague price descriptions that AI engines cannot extract.","Audit my pages","https://app.trustdata.tech",true,"/learn/geo/pricing-visibility",{"title":331,"description":332},"Pricing Visibility for AI Shopping Assistants — GEO Optimisation Guide","AI assistants answering pricing queries need machine-readable price data. Pages with JS-rendered pricing or no prices are invisible to AI shopping queries.","5.learn/geo/pricing-visibility","89fUJv6GxJr04a-YRcolWLVsUSuZ4pX5jvlmHLHQ4bc",1777026714195]