Merchant Feed Mismatch Checker avatar

Merchant Feed Mismatch Checker

Pricing

Pay per usage

Go to Apify Store
Merchant Feed Mismatch Checker

Merchant Feed Mismatch Checker

Finds product pages where the schema.org price does not match the price shown on the page. Google reads the page and overrides your Merchant Center feed with it, so the store ends up advertising the wrong price or getting the product disapproved.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Gabriel Barreto

Gabriel Barreto

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Finds product pages where the schema.org price does not match the price shown on the page.

This matters because of how Google actually behaves. Google's automatic item updates read price, availability and condition from the schema.org markup on your product page. When the page disagrees with your Merchant Center feed, Google overrides the feed with the page — so the store advertises the wrong price. When Google cannot determine the price at all, the product is disapproved.

Source: Google Merchant Center — automatic item updates

Give it a store homepage. It finds the product pages itself through the sitemap declared in robots.txt, samples them, and returns a count you can verify: "31 of 120 product pages checked". Not a percentage, not a promise — a number and three example URLs you can open right now.

Who this is for

  • Google Ads and Shopping agencies auditing a prospect or a new account before the first call.
  • Store owners who keep getting disapprovals in Merchant Center and cannot see why.
  • Anyone who changed theme, currency, or pricing app and wants to know what broke.

What it refuses to report

A scanner that overreports costs more than it is worth: the person opens the page, sees nothing wrong, and concludes you do not know what you are talking about. Every guard below exists because the naive version got it wrong on a real store.

  • Recommended-product carousels. On one store the scanner reported 8 of 8 pages as "price mismatch". The first JSON-LD block on the page belonged to a power socket in the recommendations; the page was a curtain. Now the right Product is the one whose url/@id matches the requested URL — and if several candidates exist and none match, nothing is claimed.
  • Schema injected by JavaScript. If the <script type="application/ld+json"> tags are present but empty, Google executes JS and sees the schema; we do not. Reporting a gap there would be a lie.
  • Struck-through, "compare-at", "from" and unit prices, which produced false mismatches.
  • $21 $30 read as 2130 when the element text was joined instead of taking the first price.
  • Bundles, sets and gift cards, where the schema legitimately sums several items while the page shows one.
  • "InStock but sold out" is not checked at all. In static HTML that phrase belongs to a size ("Select A Size … Out of stock"), not the product. Tested on a real store: 9 of 14 accusations were false. Precision beats coverage.
  • Variants. In a ProductGroup every variant carries its own price; the page shows one of them. All variant prices are collected before comparing, so showing variant #3 is not a mismatch.

Input

FieldTypeDescription
urlsstring listStore homepages, one per line. Not product URLs.
maxProductsintegerProduct pages to sample per store. Default 25.
onlyTargetsbooleanReturn only stores with findings.
maxConcurrencyintegerStores crawled in parallel. Default 5.
{
"urls": ["allbirds.com", "books.toscrape.com"],
"maxProducts": 25,
"onlyTargets": false
}

Output

FieldMeaning
findinge.g. "31 of 120 product pages checked would be overridden or disapproved by Google".
seriousPages with a price mismatch, no Product schema, or no price in the schema.
minorPages missing GTIN/MPN or brand — these cost you Shopping and PMax reach, not approval.
cleanPages with nothing to report.
indeterminatePages we could not read from the outside. Counted, never claimed.
examplesUp to three URLs with the specific problem, so you can check before you speak.
sourceThe Google documentation page the finding rests on.

Pricing

Pay per store with findings. Clean stores, indeterminate stores and failures are all returned in the dataset free of charge.

Notes

The sitemap is read from robots.txt first — trying only /sitemap.xml failed on 4 out of 5 real stores. Gzipped sitemaps are decompressed, which matters because the largest catalogues are exactly the ones served compressed. TLS certificates are verified.