curl -X POST https://api.tryprofound.com/v2/reports/shopping/products \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"include_merchants": true,
"metrics": ["visibility_score", "product_rating", "product_num_reviews"],
"limit": 10
}'
{
"info": {
"total_results": 128,
"count": 10,
"next_cursor": "eyJvZmZzZXQiOjEwfQ==",
"models": ["ChatGPT"],
"include_merchants": true,
"metrics": ["visibility_score", "product_rating", "product_num_reviews"],
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"filter": null
},
"data": [
{
"product": { "name": "Example Running Shoe", "brand": "Example Brand" },
"merchants": [
{ "name": "Example Retailer", "price": "$120.00" },
{ "name": "Example Brand", "price": "$110.00" }
],
"product_url": "https://www.example.com/p/example-running-shoe",
"product_image_urls": ["https://images.example.com/products/example-running-shoe.jpg"],
"product_rating": 4.5,
"product_num_reviews": 1200,
"visibility_score": 0.30
}
]
}
Shopping
Products
POST
/
v2
/
reports
/
shopping
/
products
curl -X POST https://api.tryprofound.com/v2/reports/shopping/products \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"include_merchants": true,
"metrics": ["visibility_score", "product_rating", "product_num_reviews"],
"limit": 10
}'
{
"info": {
"total_results": 128,
"count": 10,
"next_cursor": "eyJvZmZzZXQiOjEwfQ==",
"models": ["ChatGPT"],
"include_merchants": true,
"metrics": ["visibility_score", "product_rating", "product_num_reviews"],
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"filter": null
},
"data": [
{
"product": { "name": "Example Running Shoe", "brand": "Example Brand" },
"merchants": [
{ "name": "Example Retailer", "price": "$120.00" },
{ "name": "Example Brand", "price": "$110.00" }
],
"product_url": "https://www.example.com/p/example-running-shoe",
"product_image_urls": ["https://images.example.com/products/example-running-shoe.jpg"],
"product_rating": 4.5,
"product_num_reviews": 1200,
"visibility_score": 0.30
}
]
}
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 metricsposition1_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, orprompt.- Filter fields:
topic,region,persona,prompt,tag,brand,merchant.
Merchant offers
To attach the merchant offers to each product, setinclude_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, settarget_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.
Streaming (SSE) variant (same body, /stream)
Streaming (SSE) variant (same body, /stream)
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).curl -X POST https://api.tryprofound.com/v2/reports/shopping/products \
-H "X-API-Key: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"category_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"include_merchants": true,
"metrics": ["visibility_score", "product_rating", "product_num_reviews"],
"limit": 10
}'
{
"info": {
"total_results": 128,
"count": 10,
"next_cursor": "eyJvZmZzZXQiOjEwfQ==",
"models": ["ChatGPT"],
"include_merchants": true,
"metrics": ["visibility_score", "product_rating", "product_num_reviews"],
"start_date": "2026-06-01",
"end_date": "2026-06-30",
"filter": null
},
"data": [
{
"product": { "name": "Example Running Shoe", "brand": "Example Brand" },
"merchants": [
{ "name": "Example Retailer", "price": "$120.00" },
{ "name": "Example Brand", "price": "$110.00" }
],
"product_url": "https://www.example.com/p/example-running-shoe",
"product_image_urls": ["https://images.example.com/products/example-running-shoe.jpg"],
"product_rating": 4.5,
"product_num_reviews": 1200,
"visibility_score": 0.30
}
]
}
Authorizations
APIKeyHeaderBearerAuth
Body
application/json
YYYY-MM-DD, ET, inclusive
YYYY-MM-DD, ET, inclusive
Available options:
date, topic, prompt Available options:
visibility_score, average_position, visibility_rank, position1_percentage, position2_percentage, position3_percentage, position_above3_percentage, product_rating, product_num_reviews Available options:
day, week, month Include per-product merchant offers (names, prices, urls, images).
Return this product plus its top competitors (item view only).
Minimum string length:
1Competitors returned when target_product is set.
Required range:
x >= 1A leaf (field/op/value) or an and/or/not group.
Show child attributes
Show child attributes
Page size; default 10, max 50.
Required range:
0 < x <= 50Stream endpoint only: cap streamed rows.
Required range:
0 < x <= 50000Was this page helpful?