# Category and collection pages AI agents can browse

> What category pages need for AI agents: product cards with name, price and link in the HTML, sort and filter URLs, counts, pagination and a description.

By Ghost Agent Lab · Navigability · https://ghostagentlab.com/articles/category-pages-ai-agents/

## Key takeaways

- A category page is the shortlist an AI agent compares, so a product it can't read there is easy to skip.
- Each product card needs its name, price, image and one main link in the HTML the server sends, with stock and ratings in words.
- Sorted and filtered views and every page of results need their own URLs, linked with real links.
- AgentScore finds product pages from home page product cards with a price, a picture and one main link, so the same markup helps it and agents.
- This week, view the source of your best-selling category and check that the last product's name and price are there.

When someone asks an AI agent for "a burr grinder under $200", the agent may well start on a category page, not a product page. That page decides which of your products it sees, compares and opens. Here's what a category page needs for agents: product cards with the facts in the HTML, sorting and filtering as links, counts and pagination, and a description that says what the category is for.

## How agents use a category page

A category or collection page is a shortlist that you wrote. An agent shopping for someone uses it the way a person would, only faster and more literally:

1. **Opens the category:** From your menu, a search result or a breadcrumb
2. **Reads every card:** Name, price, stock and rating
3. **Narrows the list:** Sorts by price or filters by feature
4. **Opens two or three products:** To check details before recommending

**The category is the shortlist.** What the agent can read on this page decides which products it ever looks at closely.

An assistant such as ChatGPT, Claude or Perplexity fetching the page for someone may read only the HTML your server sends. A browser agent sees the rendered page but still has to find each product's name, price and link in it. Either way, a product the agent can't read on the category page is easy to skip.

Google's guidance for online stores makes the same point for its crawler: link from menus to category pages, from categories to subcategories and from there to every product, because products only reachable through a search box may never be found by crawling. Agents that browse by following links take the same paths. For the top of that tree, see [link your key pages from the home page](https://ghostagentlab.com/articles/link-key-pages-home-page/), and for the trail back up, see [breadcrumbs and site structure](https://ghostagentlab.com/articles/breadcrumbs-site-structure-ai-agents/).

## Product cards with the facts in the HTML

Each product card is a summary an agent can compare. Make sure every card carries, in the server-sent HTML:

- **The product name as text,** not only in an image.
- **The price as text,** with the currency, and the sale price and original price clearly separated. See [prices AI agents can read](https://ghostagentlab.com/articles/machine-readable-prices/).
- **A real link to the product page,** an `<a href>` with the product's URL. Google notes it can generally only follow links that are `<a>` elements with an `href`. Many agents find links the same way.
- **An image with alt text** that names the product. See [alt text for AI agents](https://ghostagentlab.com/articles/image-alt-text-ai-agents/).
- **Stock and options, where you show them:** "Out of stock", "Only 3 left", "4 colors".
- **The rating and review count**, if the card shows stars, as text as well as stars.

```
<li class="product-card">
  <a href="/grinders/conical-burr-grinder">
    <img src="/img/conical-burr.jpg" alt="Conical burr grinder in matte black">
    <h3>Conical Burr Grinder</h3>
  </a>
  <p class="price">$179.00</p>
  <p>In stock · 4.6 out of 5 (88 reviews)</p>
</li>
```

Keep each card to one main link (the name and image can share it), plus perhaps a quick add-to-cart button. A card with a wishlist link, a compare link, a quick-view link and three swatch links makes it hard to tell which one leads to the product.

**Hard to read:**

- ✗ Cards drawn by JavaScript after load
- ✗ Price only in an image or a badge
- ✗ Card is a clickable \<div>, no link
- ✗ Six links per card, none obviously the product

**Easy to read:**

- ✓ Cards in the server-sent HTML
- ✓ Name and price as text
- ✓ One \<a href> to the product page
- ✓ Image with alt text, stock in words

**Same grid, different reach.** Agents compare what they can read; a card they can't read is a product they skip.

## Sort and filter as links

Agents narrow a category the same way people do: cheapest first, in stock only, a particular size or brand. That only works if the controls are real and the results can be reached directly.

- **Give sorted and filtered views a URL,** such as `/grinders/?sort=price-asc&burr=conical`. An agent can open it directly, without working the controls at all.
- **Make filters real controls**: links, checkboxes or buttons with names, not styled boxes that only respond to a click.
- **Update the product list in the page,** with the new count, so an agent can tell the filter worked.

We cover search and filters in depth, including which filter URLs to keep out of search indexes, in [site search and filters AI agents can use](https://ghostagentlab.com/articles/site-search-filters-ai-agents/).

## Counts and pagination

A visible count ("38 grinders") tells an agent how big the category is and whether it has seen everything. Put it near the top, as text, and update it when filters change.

When a category has more products than fit on one page, the agent needs to reach the rest. Infinite scroll and "load more" buttons can leave everything past the first screen out of reach. Google's advice for paginated lists is to give each page its own URL, such as `?page=2`, and link the pages with real links. We explain the options in [infinite scroll, "load more" and pagination for AI agents](https://ghostagentlab.com/articles/infinite-scroll-pagination-ai-agents/).

`northwind.example/grinders/`

- **Coffee grinders:** 38 products (✓ Count as text)
- [Price: low to high] [In stock] [Conical burr] (✓ Filters with URLs)
- Conical Burr Grinder, $179.00, In stock (✓ Name, price, link)
- [Next page] (✓ A real link to ?page=2)

**A category page agents can work.** The count, the filters, the cards and the next page are all in reach without guessing.

## Write a category description

Many category pages are a heading and a grid. A short description above or below the grid gives an agent the context the cards can't:

- **Who it's for and what's in it.** "Hand and electric grinders for espresso and filter coffee, from $45 to $420."
- **What differs between products.** "Conical burrs suit espresso; flat burrs are common in filter grinders." This is what helps an agent match a request to the right product.
- **Where to go next.** Links to subcategories, a buying guide or a comparison table. See [comparison tables and buying guides AI assistants can use](https://ghostagentlab.com/articles/comparison-tables-buying-guides-ai/).

Keep it short, factual and in the HTML. A few accurate sentences are worth more to an agent than several paragraphs written for keywords. Give the page a specific title and heading too; see [titles, descriptions and headings AI agents understand](https://ghostagentlab.com/articles/titles-descriptions-headings-ai/).

## How AgentScore uses product cards

AgentScore doesn't scan your category pages, but it does read product cards. It looks for them on your home page, which on many stores works like a category page of its own.

To test a store's product pages, AgentScore first has to find one. It looks at links in the home page's HTML and in your sitemap for URLs that look like product pages. When none do (common on stores whose product URLs are plain names, such as `/conical-burr-grinder`), it looks for product cards in the home page HTML as your server sends it, before any JavaScript runs:

1. It finds each piece of text that contains a price.
2. From there it looks outward, a few levels at most, for the smallest block that also holds a picture and a link to another page on your site. If a block has more than three such links, it gives up on that price. Otherwise the block is a card, and its link is the product.
3. With at least three different card links, it opens up to three of them, most frequent first, and uses the first that's a product page, for example one with Product structured data or an add-to-cart button.

A product found this way counts as linked from your home page for the "Key pages are linked from the home page" check. So cards built the way this guide describes (a price as text, an image and one main link, in the served HTML) help AgentScore find your products in the same way they help agents. Cards drawn by JavaScript, or with a price in an image, aren't seen. For the full story of how the scanner finds products, see [how AgentScore finds your product pages](https://ghostagentlab.com/blog/how-agentscore-finds-product-pages/).

That check passes when your home page links to a product page or the cart with ordinary links in its HTML. One more check covers the groundwork: "Content loads without JavaScript" compares the text in your home page's served HTML with the text a browser shows after scripts run.

## Where to start

**Category page checklist**

- ✓ **Cards in the served HTML:** with name, price, image and one main link
- ✓ **Stock and ratings:** in words, where the card shows them
- ✓ **Sorted and filtered views:** with their own URLs
- ✓ **A product count:** that updates with filters
- ✓ **Paginated pages:** linked with real links
- ✓ **A short description:** of what the category is for

**Six things to check on your biggest category.** Most are one template change that fixes every category at once.

> **Try it this week:** open your best-selling category, view the source and search for the name and price of the last product on the first page. If either is missing, the cards are drawn by JavaScript and many agents can't read them. Then check whether page 2 has its own URL.

## Sources and further reading

- [Help Google understand your ecommerce website structure](https://developers.google.com/search/docs/specialty/ecommerce/help-google-understand-your-ecommerce-site-structure) (Google Search Central)
- [SEO link best practices for Google](https://developers.google.com/search/docs/crawling-indexing/links-crawlable) (Google Search Central)
- [Pagination best practices for Google](https://developers.google.com/search/docs/specialty/ecommerce/pagination-and-incremental-page-loading) (Google Search Central)
