Product Structured Data for Small Catalogs: Google and AI
What Product structured data a small catalog site needs, which properties Google requires for merchant listings, how variants are marked up, and what AI assistants read from it.

A small catalog site gets into Google's product results and into AI answers the same way a large store does: one product per page, Product structured data on that page with a name, an image and an offer that states price and currency, and markup that matches what the visitor sees. What changes with a catalog site is which kind of result you can get, because that depends on whether the shopper can buy on your page. This post covers both cases, the few properties worth your time, and what AI shopping takes from your pages.
This post is part of our guide to Catalog-First E-commerce.
What you actually need to do
If you only read one section, read this one.
- Every product needs its own page. A grid of products with a pop-up per item is not a set of product pages.
- Each page needs Product markup with a name, photos, and, if you show a price, the price and currency.
- The markup must match the page. Same price, same availability, same name.
- Set your shipping and returns policy once for the whole site.
- Test one product page in Google's Rich Results Test after any template change.
Many website builders, Beste among them, write the markup for you from the catalog. If yours does, your job is to keep the catalog accurate. If it does not, this post tells you what to ask a developer for.
What structured data does
Structured data is a block of JSON-LD on the page that repeats the product facts in a form machines read without guessing: this is a product, its name is X, it costs Y in currency Z, it is in stock. People never see it. Search engines and AI assistants read it to decide what your page is about and how to show it.
Product snippets or merchant listings
Google uses Product markup for two kinds of results, per its introduction to product structured data. Merchant listings, with price, availability and shipping across Search, Images and Shopping, are for pages where shoppers can buy the product. Product snippets, with name, image, price and reviews in regular results, are for pages about a product that cannot be bought directly there.
Your exit decides which you can get:
| How the product page sells | What to expect |
|---|---|
| Checkout embedded on the page (for example a Shopify Buy Button) | Merchant listings and product snippets |
| A button to a payment link | Possibly merchant listings; Google decides, so check Search Console |
| WhatsApp, phone or quote form | Product snippets |
| A link to the product on a marketplace or another store | Product snippets; the other site may get the merchant listing |
Two examples, both sites built with Beste. British Academy shows a price on each online lesson and the buyer pays on the site, so its pages can carry a full offer with price and currency. Unika Plastik sells bottles by quote with no prices, so its pages carry the product, the photos and the specifications, and are eligible for product snippets. Both are right for how they sell. This is not a reason to change your exit, only a reason to know what to expect from search.
The properties that matter
Google requires these for merchant listings, per its merchant listing documentation:
| Property | What it is |
|---|---|
name | The product name |
image | One or more product photos |
offers | The offer, with the next two inside it |
offers.price | The current price, above zero |
offers.priceCurrency | A three-letter currency code such as USD, EUR or TRY |
A page with no price can still carry Product markup and search engines still read it; it just will not show a price in results. That is the trade-off for trade catalogs that hide prices; see B2B catalog websites.
Of Google's long list of recommended properties, these are worth adding:
availability: in stock, out of stock, preorder. Assistants use it to answer "is it available".sku,gtinormpn: identifiers that match your product to the same item elsewhere. Needed per variant.brand: your brand, or the maker's if you resell.description: the product description.aggregateRatingandreview: only with real reviews shown on the page. Fake or hidden ratings break Google's policies and can cost the whole site its rich results, per its structured data policies.
Shipping and returns, once for the whole site
You no longer need to repeat shipping and returns on every product. Google supports a site-wide return policy and, since November 2025, a site-wide shipping policy, both nested under your Organization markup, per Google's return policy docs and the Search Central blog. You can also enter both in Search Console without a Merchant Center account. Product-level policies are then only for exceptions.
One product per page

Google's documentation says product results support pages about a single product or the variants of one product, and that category and list pages are not a fit, per the merchant listing docs. So every sellable item needs its own URL.
Variants
If a table comes in two sizes, Google's variant documentation describes a ProductGroup that names what the variants differ by and lists each variant as a Product with its own identifier, per Google's product variants docs. The attributes Google recognises for that are color, size, material, pattern, suggested age and suggested gender.
You can show all variants on one page, or give each variant its own page. For a small catalog, one page per product with the variants selectable on it is easier to maintain. Keep each variant's identifier unique and the same as your own SKU.
Merchant Center: optional, but useful
Google's free product listings show products at no cost across Shopping, Search, Images and Maps. They need a Merchant Center account with your product data, though Google can also show products crawled from your pages, per Merchant Center Help.
Do you need it? If your pages show a price and the buyer can pay on them, yes: it is free and gives you more places to appear. If you sell only by quote or chat, the structured data on your pages is enough to start with. Either way, the data you submit must match the page.
What AI shopping takes from your pages
When someone asks an assistant for "a walnut side table under 300 dollars from a small maker", the assistant needs the name, price, availability and who sells it. That reaches it in two ways.
From the page. Assistants that browse read product pages and their markup. Google says the same basics apply to its AI features as to Search, and that structured data helps systems understand a page, per its AI features documentation. Organization or LocalBusiness markup ties the product to your brand; see entity schema for small sites.
From a feed. Shopping inside assistants increasingly uses product feeds sent by merchants. OpenAI's commerce program for ChatGPT takes a product feed, and is open to approved partners who apply, per OpenAI's commerce docs. Shopify offers a route into several AI channels, per Shopify. For most small catalogs today, well-marked pages are the part you control; feeds are worth watching.
No markup or feed guarantees a listing or a citation. What it does is remove the guessing, so when your page is a good answer, nothing stands in the way.
Validate before you rely on it
Two free tools: the Rich Results Test shows what Google reads and which results the page can get, and the Schema Markup Validator checks the markup itself. Run one product page through both after any template change.
The most common mistake: a price in the markup that differs from the price on the page, usually after someone changed the price by hand in one place. Change prices in the catalog, not on the page.
A checklist for a small catalog
- One URL per product, with variants selectable on it.
- Product markup with name, image, and price and currency where you show a price.
- Availability, SKU, brand and description on every product.
- Shipping and returns set once, in Organization markup or Search Console.
- Markup that matches the page, checked in the Rich Results Test.
- You know which result your exit allows: merchant listing or product snippet.
- A Merchant Center account if buyers can pay on your pages.
- Organization markup, so the product has a seller.
How this works in Beste
Beste writes the structured data for you on every publish. Every product gets its own page from a template, and each product page includes Product structured data built from the catalog, so the price and availability in the markup always match the page. Variants come from the options you define, each with its own price, stock and photo. The site also publishes an entity graph in JSON-LD (Organization, Person or LocalBusiness), an /llms.txt index, and a sitemap with every product page, regenerated on publish. You write the name, description, price and photos; there is no separate markup to maintain and no plugin to install. This is on every plan. Beste does not send a feed to Merchant Center; that account is yours to set up if you want the free listings. See SEO-Friendly Structure and Products Catalog.
Sources
Checked in October 2026.
