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:

  1. The domain is a normalized hostname, such as shop.example.com.
  2. Domain ownership is verified in SuggestAPI.
  3. 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

  1. Confirm the feed URL loads in a browser or with curl and returns XML.
  2. In Google Merchant Center, add a scheduled product feed.
  3. Choose the RSS/XML feed type and paste https://feed.suggestapi.com/{domain}/.
  4. Set a fetch schedule that matches how often your catalog changes.
  5. 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.