SuggestAPI can publish a Google Merchant Center–compatible product feed from any ownership-verified storefront domain that is linked to a search index.
Use this when you want Google Shopping to pull products from the same catalog SuggestAPI already indexes for search.
Feed URL
Each verified domain gets a public feed at:
https://feed.suggestapi.com/{domain}/
Example:
https://feed.suggestapi.com/shop.example.com/
Use the bare hostname only—no scheme, path, query, or port. Point Google Merchant Center at that URL as a scheduled product feed (RSS/XML).
Prerequisites
A feed is available only when all of the following are true:
- The domain is a normalized hostname, such as
shop.example.com. - Domain ownership is verified in SuggestAPI.
- The domain is linked to a search index that contains your catalog.
If those conditions are not met, the feed URL returns “Feed not found.” Unverified domains never expose a public feed.
Shopify and other commerce integrations that verify ownership and link a domain to an index are usually enough for the URL to become available. Which products appear still depends on catalog completeness.
Connect Google Merchant Center
- Confirm the feed URL loads in a browser or with
curland returns XML. - In Google Merchant Center, add a scheduled product feed.
- Choose the RSS/XML feed type and paste
https://feed.suggestapi.com/{domain}/. - Set a fetch schedule that matches how often your catalog changes.
- Review Google’s diagnostics for missing attributes or disapproved items.
Feeds are cached for up to 24 hours, with longer stale-while-revalidate windows, so newly indexed products may take a short time to appear after Google’s next fetch.
Required product attributes
Each product in the linked index is mapped into Google Shopping fields. Items missing any required attribute are omitted from the feed rather than published incomplete.
| Google attribute | Common source fields | Notes |
|---|---|---|
g:id |
id, external_id |
Stable product identifier |
title |
title |
|
description |
description, desc |
|
link |
link, url, product_url |
Must be an http:// or https:// URL |
g:image_link |
image_link, image_url, featured_image, image, thumbnail |
Must be an http:// or https:// URL |
g:availability |
availability, stock_status, or boolean in_stock |
Normalized to in_stock, out_of_stock, preorder, or backorder |
g:price |
price, plus currency / currency_code when needed |
Formatted as amount and ISO currency, for example 89.99 USD |
When multiple source fields are present, the first non-empty value is used.
Additional attributes
These are included when present on the product. g:condition defaults to new when omitted.
| Google attribute | Common source fields |
|---|---|
g:condition |
condition |
g:brand |
brand, manufacturer |
g:gtin |
gtin |
g:mpn |
mpn |
g:identifier_exists |
identifier_exists |
Optional attributes are also emitted when available, including:
sale_price, sale_price_effective_date, google_product_category, product_type, item_group_id, color, size, size_type, size_system, gender, age_group, material, pattern, shipping_weight, shipping_label, and custom_label_0 through custom_label_4.
sale_price follows the same currency formatting rules as price.
Availability values
Accepted inputs include variants such as in stock, in-stock, instock, out of stock, preorder, and backorder, as well as a boolean in_stock field. SuggestAPI normalizes these to the Google Shopping values listed above.
Keep the catalog complete
Documents must land in the domain’s linked index with the required fields above. Typical ways to load them:
- Inline document ingestion:
POST /v1/indexes/{index_id}/documents - Google Shopping CSV import:
POST /v1/indexes/{index_id}/import/google-shopping - File upload and other bulk ingestion paths described in Bulk Imports and Ingestion Jobs
Put product attributes in the document raw payload (or top-level id, title, desc / description, and manufacturer where applicable). Keep product IDs stable so updates overwrite cleanly and Google sees consistent g:id values.
An empty or incomplete catalog still produces a valid feed channel; it simply contains fewer—or no—<item> elements.