Authenticate using a service account (for server-to-server) or OAuth 2.0 user flow with the `https://www.googleapis.com/auth/content` scope.
Insert or update a product by calling the `products.insert` method (or `products.update` for partial updates) with a product resource body; the `offerId` combined with `targetCountry` and `contentLanguage` forms the product ID.
For large catalogs, use `products.custombatch` to batch up to 1,000 product inserts/updates in a single HTTP request.
After insertion, call `products.get` or `products.list` and inspect the `destinations[].status` and `issues` array on each product to identify disapprovals and warnings.
Resolve disapprovals by correcting the specific attribute cited in the `issue.servability` and `issue.attributeName` fields, then resubmit the product.
Set up a data feed via the `datafeeds` resource as an alternative to the API for large catalogs that are already structured as delimited files.
Known gotchas
Product IDs in Content API are composite keys (`{merchantId}:{channel}:{contentLanguage}:{targetCountry}:{offerId}`) — ensure `offerId` values are stable and do not change, as a changed offerId creates a new product rather than updating the existing one.
Disapproval reasons such as 'missing required attribute' may reference Google-specific requirements (e.g., `gtin`, `brand`, `condition`) that differ from your internal catalog schema — maintain a mapping layer.
The Content API has per-method and per-day quota limits; batch methods are strongly recommended for catalogs exceeding a few hundred products to avoid hitting per-method quotas.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp