---
title: "A price without a date is not a citation."
description: "Search for price-comparison and deals sites: dated product and price-history pages, and shopping queries. SEO, AEO, GEO, and AIO."
canonical: https://shoutrank.com/industries/price-comparison
markdown: https://shoutrank.com/industries/price-comparison.md
---

# A price without a date is not a citation.

Search for price-comparison and deals sites: dated product and price-history pages, and shopping queries. SEO, AEO, GEO, and AIO.
Shoppers ask what this item costs, and when that cost was true.

An undated cell gets repeated. The history page can keep the quote.

## A deals site is a record, or it is thin.

Price comparison lives on programmatic URLs: one product, a history, a merchant table. Shipped as a swapped template, those URLs are doorway pages and they should stay out of the index. Shipped with the spec, the history, and the day the figure was checked, they are the honest answer to a shopping query.

Freshness is the offer. A frozen low from a holiday week still ranks, still gets cited, and still shows up in the extension and the app store listing that repeats the same undated number. A model will quote a price when the check time sits on the page. It will also quote a stale one if that is the only figure you left up.

## A product, a history, and a store.

We would build shopping pages and price-history pages that are not thin, then align the extension and the app store listing to the same dated figure.

### Shopping

current price of a 65-inch OLED across tracked retailers

The product, the merchant set, and the check time. A head term like “cheap TV” is not a template we would scale.

### History

price history for this laptop over the last year

The series has a start, an end, and a note when a merchant drops out. A sparkline with no axis is decoration.

### Window

is this headphone at its lowest tracked price

Lowest against your own history, with the window named. Not a market-wide low borrowed from a blog.

### Store listing

price tracker app that shows when a price was checked

The extension and the app store listing use the same product name as the site, and they do not promise a savings figure the page cannot date.

## Templates, check times, then the stores.

The first pass is index bloat and undated cells. The extension and the app store are aligned after the page can defend the number.

### Templates that carry a record

Each product URL has a spec, a merchant table, and a history. Pages that only swap a name and a price are rewritten or kept out of the index before the template is scaled.

### A check time on every figure

The time is visible. When the feed goes quiet, the cell is marked stale or removed. A flattering merchant price is not frozen in place to make the table look steep.

### Shopping queries with a boundary

The page states which merchants are tracked and which are absent. Implying full-market coverage is a claim the template does not get to make.

### Extension and app store in one voice

Listing title, screenshot claims, and the site use one product name. Savings language in the store matches a dated page, or it comes off the listing.

## Cited domains

reddit.com is the most cited domain in Price comparison in this snapshot.

Source for this chart: [US retailers](https://shoutrank.com/data-studies/us-retailers.md).
This data is accumulated from multiple sources and internal training data, which helps us get the client cited.

| Domain | AI Overview | ChatGPT | Gemini | AI Mode | Perplexity |
| --- | ---: | ---: | ---: | ---: | ---: |
| reddit.com | 0 | 945 | — | — | — |
| google.com | 1 | 150 | — | — | — |
| en.wikipedia.org | 0 | 389 | — | — | — |
| forbes.com | 0 | 301 | — | — | — |
| nerdwallet.com | 0 | 265 | — | — | — |
| avasam.com | 1 | 0 | — | — | — |
| camelcamelcamel.com | 1 | 0 | — | — | — |
| flipp.com | 1 | 0 | — | — | — |
| groceriestracker.com | 1 | 0 | — | — | — |
| herm.io | 1 | 0 | — | — | — |
| price.com | 1 | 0 | — | — | — |
| pricerunner.com | 1 | 0 | — | — | — |

A dash means this snapshot has no count for that engine. A zero means the domain was not cited in the measured sample.

## What is at stake

- **What gets quoted.** A price with a check time, or an undated low.
- **URL that should own it.** A product page with a spec, merchants, and a history.
- **Where the number leaks.** The extension and the app store, repeating a figure the page dropped.

## The reply repeats a holiday price in June.

A shopper asks what the laptop costs and whether that cost is low for the window you track. The indexed page still shows December. The extension badge uses the same cell. A chat reply cites it because no check time was there to bound the figure.

## Price history for a laptop we track

Spec, window, and a check time. A model can repeat the figure because the date is in the sentence.

- The spec that makes this URL a product, not a name poured into a template.
- Merchants in the table, the ones absent, and the time each cell was checked.
- The low is against this history and this window. It is not a claim about every store.

## Sequence

1. **Cut the thin URLs.** Name-swap pages leave the index. The template earns a spec and a history before it scales.
2. **Date the feed.** Every cell shows when it was checked. Quiet merchants are labeled or dropped.
3. **Match the stores.** Extension copy and the app listing repeat the product name and only the figures the site still shows.
4. **Watch the four logs.** Rankings, citations, share of answer, and clicks, installs, or referrals. A named result is published when that client clears the figure.

We will not ship an undated “lowest price,” a thin programmatic doorway, or a merchant cell kept because it flatters the table.

## What we watch

We would measure rankings on product and history URLs, citations that repeat a price only when its check time is on the page, share of answer on shopping prompts, and pipeline as tracked clicks, extension installs, or merchant referrals analytics can see. A named result is published when that client clears the figure. No revenue figure is published in its place.

A named result is published when that client clears the figure. A client figure is added here only after that client clears it.

## Price comparison questions

### How do programmatic pages avoid thin content?

Each URL carries a spec, a history, and a check time that differ for that product. A template that only interpolates the name is not scaled, and it is kept out of the index.

### What happens to a price that has gone stale?

It is labeled with the last check, or it is taken down. An evergreen “lowest price” title comes off. The extension should not keep showing a number the page has already retired.

### When would an AI answer cite our price?

When the figure and the check time are in HTML on the product or history URL. We would not mark up a price the feed cannot support, and we would not claim a model is obliged to prefer the page.

### What do you measure when no client figure is cleared?

Rankings, citations, share of answer, and the pipeline events analytics already records: tracked clicks, extension installs, or merchant referrals. A named result is published when that client clears the figure.

### How should the app store listing relate to the site?

Same product name, and the same honesty about which merchants are tracked. Store screenshots do not invent a percent saved. When the listing and the site diverge, we correct the listing before we chase more store traffic.

## Audit the product URL that should carry the date.

Book an audit of the template, or score one product URL free. We read whether the figure, the history, and the check time are on the page.

Book a visibility audit: [Contact](https://shoutrank.com/contact.md).
