Skip to main content
POST
This report shows product visibility in ChatGPT shopping results. It can also give the merchant offers for each product. The report returns each product as { name, brand } with its metrics as named fields.
  • Metrics: visibility_score; average_position (a lower number is better); visibility_rank; the position-frequency metrics position1_percentage, position2_percentage, position3_percentage, position_above3_percentage; product_rating; product_num_reviews.
  • Position-frequency metrics: Each one is the share of the product’s appearances at that slot (position1 = top; position_above3 = below rank 3). The values are 0–1 fractions, not 0–100. The four values sum to about 1.
  • group_by: date, topic, or prompt.
  • Filter fields: topic, region, persona, prompt, tag, brand, merchant.

Merchant offers

To attach the merchant offers to each product, set include_merchants: true. The report then adds merchants (a list of { name, price }), product_url, and product_image_urls. This mode does not accept group_by or target_product. The position-frequency metrics are not available in this mode.

Competitor mode

To return one product and its top competitors, set target_product to a product name. To set the number of competitors, use competitor_limit (the default is 5). Competitor mode is available in the item view only. Do not use it with include_merchants.
Shopping data comes from ChatGPT only. No shopping report has a model group_by or a model filter.
The v2 reports share one request shape. For the filter tree, grouping, and pagination, see Filtering & concepts.
POST /v2/reports/shopping/products/stream uses the same request body. It returns Server-Sent Events: one summary event (the info block), then one result event for each row. The stream rejects limit and cursor. It returns all rows by default. To set a maximum, use max_results (maximum 50000).

Authorizations

X-API-Key
string
header
required

Body

application/json
category_id
string<uuid>
required
start_date
string
required

YYYY-MM-DD, ET, inclusive

end_date
string
required

YYYY-MM-DD, ET, inclusive

group_by
enum<string>[]
Available options:
date,
topic,
prompt
metrics
enum<string>[] | null
Available options:
visibility_score,
average_position,
visibility_rank,
position1_percentage,
position2_percentage,
position3_percentage,
position_above3_percentage,
product_rating,
product_num_reviews
interval
enum<string>
default:day
Available options:
day,
week,
month
include_merchants
boolean
default:false

Include per-product merchant offers (names, prices, urls, images).

target_product
string | null

Return this product plus its top competitors (item view only).

Minimum string length: 1
competitor_limit
integer
default:5

Competitors returned when target_product is set.

Required range: x >= 1
filter
FilterNode · object | null

A leaf (field/op/value) or an and/or/not group.

limit
integer | null

Page size; default 10, max 50.

Required range: 0 < x <= 50
max_results
integer | null

Stream endpoint only: cap streamed rows.

Required range: 0 < x <= 50000
cursor
string | null

Response

Successful Response

info
ShoppingProductsV2Info · object
required
data
ShoppingProductRow · object[]
required