Google Merchant Feed Validation
Pricing
from $50.00 / 1,000 feed validateds
Google Merchant Feed Validation
Ecommerce operators and agencies get products disapproved in Google Merchant Center because of feed errors (missing required attributes, invalid GTINs, bad price/availability formats, over-length titles). They find out only after upload. They need every problem listed per item, with a fix, and a...
Pricing
from $50.00 / 1,000 feed validateds
Rating
0.0
(0)
Developer
Jordan Nabbe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Google Merchant Feed Validation is built for ecommerce store owners, feed managers and PPC/Shopping agencies who need to catch product feed errors before Google Merchant Center disapproves their products. Give it a CSV, TSV, Google XML (RSS/Atom) or XLSX feed and it returns one import-ready row per issue, with a suggested fix, a health score per feed, an auto-corrected CSV and an optional new/recurring/fixed comparison with your previous run.
What it does
- Parses real feed files: CSV, TSV, Google Shopping XML (RSS 2.0 and Atom,
g:prefixes stripped) and.xlsxworkbooks (first sheet, header in row 1). Input can be inline text, a base64 string or a public https URL. - Runs a deterministic rule table: missing required attributes (id, title, description, link, image_link, price, availability), duplicate ids, price format (
19.90 USD), sale price not lower than price, availability and condition values, title over 150 characters, description over 5000 characters, invalid links (http is accepted by Google and only flagged as info), GTIN length and mod-10 check digit (ISBN-10 accepted), missing GTIN/MPN, brand required for new products except media (placeholder brands such as N/A or Generic are rejected), and missing apparel attributes when the product category contains "Apparel". - Applies only safe automatic fixes to a corrected CSV (price format — both
1.234,56 EURand1,234.56 USDbecome1234.56 …; an ambiguous value such as1.234 EURis flaggedPRICE_AMBIGUOUSand never changed, availability and condition values, truncation of over-long title/description). GTIN problems and missing values are flagged, never guessed. - Scores every feed (0-100) and reports per-feed summary rows, so agencies can compare clients.
- Optional run-over-run diff (
compareToPrevious): each issue is markednew,recurringorfixedagainst the previous run's baseline. Baselines are kept in a named key-value store in your own account (baselineStoreName, defaultmerchant-feed-baselines), one per feedbaselineId(default: the feed name), so they survive between runs and never mix feeds or clients. - Every failed feed produces a
feed_errorrow; other feeds still complete.
How to use it
- Paste your feed(s) into the
feedsinput, or use the prefilled example and click Start. - Read the dataset (one row per issue, plus one
feed_summaryrow per feed) or theOUTPUTrecord. - Download the corrected feed from the key-value store record named in
correctedFeedKey.
{"feeds": [{"name": "demo-shop","format": "csv","content": "id,title,description,link,image_link,price,availability,condition,gtin,brand\nSKU1,Blue Shirt,Soft cotton shirt,https://shop.example/p/1,https://shop.example/i/1.jpg,19.9 USD,in stock,new,4006381333931,Acme"}],"targetCountry": "US","generateCorrectedFeed": true}
For XLSX use "contentBase64": "<base64 of the .xlsx file>". For a hosted feed use "url": "https://example.com/feed.xml".
Output example
| recordType | feed | itemId | severity | ruleCode | attribute | currentValue | suggestedFix | autoFixed |
|---|---|---|---|---|---|---|---|---|
| issue | demo-shop | SKU1 | error | PRICE_FORMAT | price | 19.9 USD | 19.90 USD | true |
| issue | demo-shop | SKU1 | error | AVAILABILITY_ENUM | availability | in stock | in_stock | true |
| feed_summary | demo-shop |
Every row has the same 19 columns (unused ones are null), so it imports cleanly into spreadsheets and databases. Summary rows carry itemsTotal, itemsWithErrors, errorCount, warningCount, healthScore and correctedFeedKey.
Pricing
Pay per event. The main charge is per validated feed; everything else listed below is free.
| Event | Price (USD) | Charged when |
|---|---|---|
Run start (apify-actor-start) | $0.005 | once per run; the default 512 MB memory is one event |
Feed validated (feed-validated) | $0.05 | per feed that was parsed and validated |
Not charged:
- every issue row and feed summary in the dataset
- the corrected CSV feed
- feeds that could not be read
Examples (default 512 MB memory, one start event):
- One daily feed check: $0.005 start + 1 × $0.05 = $0.055
- Five country feeds every day for 30 days: $0.005 start + 150 × $0.05 = $7.505
Spending limit: when you set a maximum cost per run, the Actor stops before it would exceed it, keeps every validated feed it already delivered and reports limitReached in the OUTPUT record. It never delivers results beyond the limit.
The Store's Pricing tab shows the prices in force. If this section and the Pricing tab ever differ, the Pricing tab applies.
Use cases
- Pre-upload check of a product feed export before sending it to Merchant Center.
- Agency batch check of up to 50 client feeds in one run with per-feed health scores.
- Scheduled monitoring: enable
compareToPreviousand see which issues are new, recurring or fixed. - Producing a cleaned CSV with the mechanical errors already repaired.
Limits
- Up to 50 feeds per run and 200,000 items per feed (default 50,000); extra items are ignored and reported with an info issue.
- Remote feeds: https only, default port, public hosts only (private and loopback addresses and redirects to them are blocked), 3 redirects, 60 s timeout, 100 MB cap. Base64 content is also capped at 100 MB and the whole input at 25 MB.
- Image checks (
checkImageUrls) apply only to feeds supplied by URL, use HEAD requests with 10 in parallel, a 5 s timeout and at most 5,000 checks per run. - The rules cover a practical subset of the Google product data specification; they do not replace Merchant Center's own review, and category-specific or country-specific rules beyond those listed are not checked.
- The
OUTPUTrecord holds the first 1,000 rows; the dataset holds all rows. - The Actor uses no Merchant Center credentials and does not scrape third-party sites.
FAQ
Does it connect to my Merchant Center account? No. It only reads the feed you supply.
Will it change my original feed? No. Fixes are written to a separate corrected CSV.
Why is a GTIN not auto-fixed? A wrong check digit usually means a wrong number. The suggestion shows the digit that would make it valid, but you should verify it.
How does the diff work? Issues are matched by item id, rule and attribute against the baseline saved for the same feed name in the default key-value store of the run's storage, so use the same feed name and a persistent store for scheduled runs.
What happens if one feed is broken? It gets a feed_error row and the rest continue. The run fails only if every feed fails.