Google Merchant Center Feed Checker: Price, Stock & Image Audit
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
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:
| Check | Issue codes |
|---|---|
Price mismatch, including sale_price, read from JSON-LD Product/Offer, microdata, og:price / product:price, with a visible-price fallback | PRICE_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 unreachable | PAGE_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, MPN | GTIN_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 short | TITLE_TOO_LONG, TITLE_ALL_CAPS, DESCRIPTION_MISSING, DESCRIPTION_TOO_LONG, … |
| Currency mismatch between feed, page and your expected currency | CURRENCY_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.jsonURL, or just the store's home page URL - A plain list of product page URLs (page-level checks only)
- Options:
maxItems(default 100),concurrency, targetcountryandcurrency, 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?
- 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. SUMMARYrecord (key-value store): items checked, counts by severity, counts by issue type and a top-issues list.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?
- Run FeedGuard on your feed with
maxItemsset to your catalog size, or start with a 25-item sample. - Open
REPORT.htmland fix theerroritems 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. - 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 asROBOTS_BLOCKED, and anyCrawl-delayis 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_BLOCKEDinstead. - 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.
Related Code54 Actors
- USAspending Expiring Contracts & Recompete Scraper: federal contracts ending in the next 3–18 months, with incumbent, ceiling, options and a recompete signal.
- Federal Contractor / Incumbent Lookup by UEI: a 5-year USAspending profile of any contractor by UEI or company name.
- Grants.gov Scraper: Nonprofit Grant Deadlines: open and forecasted federal grants with deadlines, award amounts and eligibility.
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