Google Merchant Center Feed Checker: Price, Stock & Image Audit avatar

Google Merchant Center Feed Checker: Price, Stock & Image Audit

Pricing

Pay per usage

Go to Apify Store
Google Merchant Center Feed Checker: Price, Stock & Image Audit

Google Merchant Center Feed Checker: Price, Stock & Image Audit

Pre-check a Google Merchant Center feed (XML, CSV/TSV or Shopify products.json) against live product pages. Flags price and stock mismatches, 404s and redirects, missing GTIN/brand/MPN, bad images, title limits, shipping/returns. Independent tool, not affiliated with Google.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Code54

Code54

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

FeedGuard: Google Merchant Center Feed Checker pre-checks your product feed against your live product pages, so you can fix the mismatches that cause Merchant Center disapprovals before Google finds them. Point it at a Merchant Center feed (XML/RSS, CSV/TSV) or a Shopify store's /products.json, and it fetches every product page and flags price and availability mismatches, 404s and redirects, missing GTIN/brand/MPN, broken or too-small images, title and description problems, currency mismatches and missing shipping/return info. You get one row per item, a summary of your top issues, and a shareable HTML report. It is an independent pre-check by Code54, not affiliated with Google, and not a guarantee of approval.

What does the Merchant Center feed checker detect?

For each feed item FeedGuard compares feed values vs the live page and reports:

CheckIssue codes
Price mismatch, including sale_price, read from JSON-LD Product/Offer, microdata, og:price / product:price, with a visible-price fallbackPRICE_MISMATCH, SALE_PRICE_MISMATCH, SALE_PRICE_INVALID, PRICE_NOT_FOUND_ON_PAGE
Availability mismatch (in stock / out of stock / pre-order)AVAILABILITY_MISMATCH
Landing page problems: 404/410, other non-200, redirects, redirect to homepage, blocked or unreachablePAGE_NOT_FOUND, PAGE_HTTP_ERROR, PAGE_REDIRECT, PAGE_REDIRECT_TO_HOMEPAGE, PAGE_BLOCKED, PAGE_FETCH_FAILED
Missing or invalid identifiers: GTIN (with check-digit validation), brand, MPNGTIN_MISSING, GTIN_INVALID, GTIN_MISMATCH, BRAND_MISSING, MPN_MISSING, IDENTIFIERS_MISSING
Image problems: broken URL, not an image, under 100×100 px (error) or 250×250 px (apparel warning)IMAGE_MISSING, IMAGE_BROKEN, IMAGE_TOO_SMALL, IMAGE_SMALL_FOR_APPAREL
Title and description: missing, over 150 / 5,000 characters, ALL CAPS, too shortTITLE_TOO_LONG, TITLE_ALL_CAPS, DESCRIPTION_MISSING, DESCRIPTION_TOO_LONG, …
Currency mismatch between feed, page and your expected currencyCURRENCY_MISMATCH
Shipping and return info not found in the feed or on the page (heuristic)SHIPPING_INFO_MISSING, RETURN_INFO_NOT_DETECTED

Every issue has a severity: error (likely disapproval), warning (likely problem or limited performance) or info (worth knowing). Each item gets the highest severity of its issues.

What feeds and inputs does it accept?

  • Merchant Center XML/RSS or Atom feeds (g: attributes)
  • CSV / TSV feeds (comma, tab, semicolon or pipe; Google Sheets exports work)
  • Shopify stores: a /products.json URL, or just the store's home page URL
  • A plain list of product page URLs (page-level checks only)
  • Options: maxItems (default 100), concurrency, target country and currency, price tolerance, and sample-only mode to check a random sample of a big feed quickly.

If you run it with empty input, FeedGuard checks 10 items of a public demo store so you can see the output format.

Example input

{"feedUrl": "https://example-store.com/products.json", "maxItems": 100, "concurrency": 5, "currency": "USD", "country": "US"}

What do I get back?

  1. Dataset: one row per item with id, url, severity, issues[] (code, severity, message, feed value, page value), the feed and page values side by side, HTTP status, final URL after redirects, and image size.
  2. SUMMARY record (key-value store): items checked, counts by severity, counts by issue type and a top-issues list.
  3. REPORT.html (key-value store): a clean report you can open in a browser or send to a client.

Example output (one item)

{"id":"7340901859408-42146889","url":"https://example-store.com/products/tee","httpStatus":200,"severity":"error",
"issueCodes":["PRICE_MISMATCH"],
"issues":[{"code":"PRICE_MISMATCH","severity":"error","message":"Feed price 24.99 does not match the page price 29.99.","feedValue":24.99,"pageValue":29.99}],
"feed":{"price":24.99,"availability":"in_stock","currency":"USD"},
"page":{"price":29.99,"priceSource":"json-ld","availability":"in_stock","currency":"USD"},
"image":{"status":200,"width":1200,"height":1200}}

Who is this for?

  • Ecommerce owners and Shopify merchants fixing Merchant Center disapprovals
  • Google Shopping and PMax agencies auditing client feeds before launch
  • Feed managers who want a repeatable weekly check (schedule the Actor)
  • AI agents, via Apify MCP (call-actor)

How do I fix "price mismatch" and "availability mismatch" disapprovals?

  1. Run FeedGuard on your feed with maxItems set to your catalog size, or start with a 25-item sample.
  2. Open REPORT.html and fix the error items first: the feed price (or sale price) must match the price a shopper sees on the landing page, and in-stock status must match too.
  3. Re-run until the error count is zero, then check the Diagnostics tab in Merchant Center. Google's own check is the final word.

How does FeedGuard behave on your site? (politeness)

  • Identifies itself clearly: FeedGuardBot/0.1 (independent product-feed pre-check; +https://code54.dev; support@code54.dev).
  • Respects robots.txt: pages disallowed for bots are skipped and reported as ROBOTS_BLOCKED, and any Crawl-delay is honored.
  • Rate limited: a pause between requests to the same site (default 0.5 s) and low default concurrency.
  • It never tries to get around bot protection. If a store shows a CAPTCHA or challenge, the item is reported as PAGE_BLOCKED instead.
  • Images are checked by downloading only the first 128 KB.

FAQ

Is FeedGuard affiliated with Google?

No. FeedGuard is an independent tool by Code54 LLC. It is not affiliated with, endorsed by or sponsored by Google. "Google Merchant Center" is used only to describe the feed format it checks.

Does a clean report guarantee Merchant Center approval?

No. FeedGuard is a pre-check. Google applies its own policies, crawls from its own locations and may find issues FeedGuard does not (and the reverse). Treat the report as a fast way to catch the common, mechanical errors.

Why did FeedGuard flag a price mismatch when my page looks right?

Common causes: a multi-currency store showing another currency to our server's location (set currency, or use a proxy for your country), a variant price shown only after JavaScript runs, or taxes shown on the page but not in the feed. Visible-text matches are lower confidence and are reported as warning, not error.

Does it run JavaScript?

Not in this version. FeedGuard reads server-rendered HTML and structured data (JSON-LD, microdata, Open Graph), which is what most stores and Google's first pass rely on. If a price only appears after JavaScript runs, you will see PRICE_NOT_FOUND_ON_PAGE.

What does it cost?

FeedGuard is free to use. You only pay normal Apify platform usage for the run, which is typically a fraction of a cent per 20 items, and Apify plans include monthly free credit. Use sampleOnly to try it on a handful of items first.

Can I check just a sample of a large feed?

Yes. Turn on sampleOnly and set sampleSize (for example 50). FeedGuard picks random items from the first 2,000 in the feed.


Need a custom feed audit or data tool? Code54 builds them: https://code54.dev

Product of Code54 LLC, 2108 N St, Suite #18005, Sacramento, CA 95816. FeedGuard is an independent pre-check and is not affiliated with or endorsed by Google. Results are best-effort and are not a guarantee of Merchant Center approval. Questions: support@code54.dev