free tool

Does AI see your product data?

Enter a product page URL. We fetch the page the way a crawler does, pull out every JSON-LD block, and check the Product fields that AI answers quote: name, price, currency, availability and the rest. Missing fields get a skeleton filled with what the page already says about itself.

See who AI recommends in your category

Clean product data is what an answer can quote. Hypercitations shows which brands ChatGPT, Claude, Google AI Overviews and Perplexity name for a category, which sources those answers cite, and what to change.

Start now

No credit card to sign up.

what the check reads

Why product JSON-LD matters to AI answers

When an assistant recommends a product, the facts it states come from somewhere. A price, a currency, whether it is in stock, a rating and a review count: these are the details that make an answer concrete, and JSON-LD is the one place on a page where each of them is labelled rather than guessed from layout. A crawler that finds a Product object with offers.price and offers.availability does not have to decide which of the numbers on the page is the price. One that finds no structured data reads the visible text and infers, and inference is where products get misdescribed or dropped.

This check looks for nine fields: name, image, description, sku, brand, offers.price, offers.priceCurrency, offers.availability and aggregateRating. They are the ones that show up in answers as stated facts. The table marks each as present or missing, with one line on what an answer does with it. None of this is a guarantee of being cited; it is the difference between data an answer can quote and data it has to guess.

Shopify stores: the theme usually does this, but check

Shopify themes emit product JSON-LD by default, and since 2026 the shape is a ProductGroup with one Product per variant, each carrying its own sku, price and availability. The check reads that layout: when a field is missing on the group but present on a variant, it is counted as present and marked as coming from a variant. Two things go wrong often enough to be worth a look. A theme or app rewrites the block and drops fields, most often brand and description. And ratings apps add aggregateRating in a separate block with no @type, which is not attached to the product and so does not count as the product’s rating. The result says so when it sees that.

Shopify store? The llms.txt generator maps your collections and products too.

The skeleton is a template, not a guess

When fields are missing, or there is no JSON-LD at all, the result includes a Product block ready to paste into the page head. Values are filled in only where the page already states them unambiguously: the product name from the page title, the image from the og:image tag, the description from the meta description, the price and currency from product meta tags where they exist, and anything the existing JSON-LD already declares. Everything else is a [YOUR VALUE] placeholder. The tool never writes a rating, a review count, a sku or a brand it did not find, because a wrong fact in structured data is worse than a missing one.

Structured data only helps if the crawler can reach the page

A perfect Product block behind a robots.txt Disallow, a firewall challenge or a client-rendered shell is invisible. The crawler checker tests those layers for a whole site, and the robots.txt generator writes the rules that let the search and answer bots in while keeping training crawlers out if you want.

Is ChatGPT blocked from your site? Run the AI crawler checker.

The nine fields, and what an answer does with each

FieldWhy AI answers want it
nameThe name is what an answer calls the product. Without it the page is a URL.
imageAssistants show or link a product image when they have a source URL for one.
descriptionThe sentence an answer can quote when it explains what the product is.
skuLets an assistant tell variants and listings apart across stores.
brandAnswers group products by brand. A missing brand gets attributed to the store, or to nothing.
offers.pricePrice is a fact assistants quote. Without it they say the price is not listed, or skip the product.
offers.priceCurrencyA number without a currency is ambiguous. Assistants need the pair.
offers.availabilityIn stock or not is a fact assistants quote when they recommend something to buy now.
aggregateRatingRating value and review count are what "best" answers lean on when they compare options.
faq

Questions

My page has JSON-LD but the check says no Product. Why?

The blocks it found declare other types, such as Organization, BreadcrumbList or FAQPage. Those are fine, but none of them carries a price or availability. A product page needs a Product (or ProductGroup) object as well. If the URL is not a product page, run the check on one.

A block failed to parse. Does that matter?

Yes. A crawler that cannot parse a block skips it, so every field in it is missing as far as an answer is concerned. The error names the block and the JSON problem; a trailing comma or an unescaped quote is the usual cause.

Does the tool read fields from the variant Products in a ProductGroup?

Yes. When the group lacks a field and a variant has it, the field counts as present and the table marks it as coming from a variant. That is how Shopify structures its data.

Why is my rating missing when the page shows stars?

Usually because the review app writes aggregateRating into its own JSON-LD block with no @type and no link to the product. A rating has to sit inside the Product object to be the product’s rating. The result flags a detached rating block when it sees one.

Will fixing this get my product into AI answers?

It removes one reason to be skipped or misquoted. Which products an answer names depends on the sources the assistant found and what they say, which is what Hypercitations measures. Structured data makes your page quotable; it does not decide whether it is chosen.