ChatGPT Shopping API: the products and merchants AI engines recommend
The ChatGPT Shopping API extracts the products that ChatGPT and five other AI engines recommend in shopping answers, with the merchant credited, the prices quoted and the ratings shown. Each product joins your catalogue on its external id or SKU, so every recommendation maps to something you sell.
Updated
- ChatGPT
- Perplexity
- Google AI Mode
- Claude
- Microsoft Copilot
- Grok
Playground
A reseller earns 62 citations to the brand store's 24 on its top product
The Shopping API returns each product an engine recommended, with the merchants credited for it. In this sample, the Ridgeline Scree 3 Wide shows up in 41.8% of shopping answers, and a reseller earns 62 citations at $129 while the brand's own store earns 24 at $148. That gap is a pricing and merchandising decision, visible only at merchant level.
POST /v1/shopping/products
- First product
- Ridgeline Scree 3 Wide
- Its top merchant
- trailoutfitter.com, 62 citations at $129
curl -X POST https://api.apiforgeo.com/v1/shopping/products \ -H "Authorization: Bearer $API_FOR_GEO_KEY" \ -H "x-project-id: $PROJECT_ID" \ -H "Content-Type: application/json" \ -d '{}'
import os, requests API = "https://api.apiforgeo.com/v1" H = {"Authorization": f"Bearer {os.environ['API_FOR_GEO_KEY']}", "x-project-id": os.environ["PROJECT_ID"]} r = requests.post(f"{API}/shopping/products", headers=H, json={}, timeout=30) print(r.json())
const API = "https://api.apiforgeo.com/v1"; const headers = { Authorization: `Bearer ${process.env.API_FOR_GEO_KEY}`, "x-project-id": process.env.PROJECT_ID, "Content-Type": "application/json", }; const post = (path, body) => fetch(API + path, { method: "POST", headers, body: JSON.stringify(body) }).then((r) => r.json()); console.log(await post("/shopping/products", {}));
| Product | Visibility | Avg price | Rating | Top merchant |
|---|---|---|---|---|
| Ridgeline Scree 3 Wide | 41.8% | $148 | 4.6 | trailoutfitter.com |
| Ridgeline Talus Wide GTX | 27.3% | $172 | 4.4 | ridgeline.com |
| Ridgeline Cirque Trail Wide | 15.6% | $119 | 4.2 | trailoutfitter.com |
{
"results": [
{
"product": "Ridgeline Scree 3 Wide",
"externalId": "SKU-4471",
"visibility": 41.8,
"avgPrice": 148,
"priceRange": [
129,
165
],
"avgRating": 4.6,
"topMerchants": [
{
"merchant": "trailoutfitter.com",
"citations": 62,
"price": 129
},
{
"merchant": "ridgeline.com",
"citations": 24,
"price": 148
}
],
"shareOfVoice": 17.4
},
{
"product": "Ridgeline Talus Wide GTX",
"externalId": "SKU-4520",
"visibility": 27.3,
"avgPrice": 172,
"priceRange": [
159,
185
],
"avgRating": 4.4,
"topMerchants": [
{
"merchant": "ridgeline.com",
"citations": 31,
"price": 175
},
{
"merchant": "summitgear.shop",
"citations": 19,
"price": 159
}
],
"shareOfVoice": 11.2
},
{
"product": "Ridgeline Cirque Trail Wide",
"externalId": "SKU-4388",
"visibility": 15.6,
"avgPrice": 119,
"priceRange": [
99,
129
],
"avgRating": 4.2,
"topMerchants": [
{
"merchant": "trailoutfitter.com",
"citations": 18,
"price": 99
},
{
"merchant": "ridgeline.com",
"citations": 9,
"price": 129
}
],
"shareOfVoice": 6.5
}
]
} | Field | Type | Description |
|---|---|---|
product | string | The product as the engine named it. |
externalId | string | Your catalogue id or SKU, to join results to your own data. |
visibility | float | Percentage of in-scope shopping answers that show the product. |
avgPrice | float | Mean price quoted next to the product. |
priceRange | array | Lowest and highest price quoted. |
avgRating | float | Mean rating shown with the product. |
topMerchants[] | array | The merchants credited for the product, with citations and the price each one shows. |
shareOfVoice | float | The product's mentions ÷ all product mentions in scope. |
Get started
Four setup steps lead to the first product list
The Shopping API reads the shopping blocks captured during normal runs, so the first product list arrives after four steps: create the project, generate a key in the app, import the buying questions as prompts and run them. Reading the products back is not billed.
-
Step 1
Create a project
Create an organisation and a project, one project per brand or per client.
-
Step 2
Generate a key
Generate an API key in the app; keys are managed there, never through the API.
-
Step 3
Import your prompts
Import your prompts and tags with a single POST /v1/queries.
-
Step 4
Run and read
Trigger an execution, poll the job, then read any analytics endpoint.
Comparison
Only 1 of 4 approaches returns products, merchants and prices as data
The Shopping API returns products, merchants, prices and ratings as fields you can join to a catalogue. An AI scraping API hands back the raw shopping block, GEO dashboard tools rarely cover shopping answers, and an in-house build has to parse each engine's product format and keep up when it changes.
| Capability | API for GEO | AI scraping API | GEO dashboard tool | In-house build |
|---|---|---|---|---|
| Shopping products, merchants, prices | Yes | Raw block | Rare | Build it |
| Entity resolution across aliases | Yes | No | Yes, closed | Build it |
| Programmatic access to everything | Yes | Yes | Export only | Yes |
Use cases
Shopping data feeds 3 decisions, one per audience
The Shopping API answers a different question for each audience: platforms add a product visibility module, agencies show retail clients which merchants win their products, and brands compare the price an engine quotes with their own. The e-commerce pattern, with its endpoints, is on the use cases page.
A product visibility module
Show each retail customer which of their products the engines recommend and how often. Results join the catalogue on external id, so the module reads like part of their own data.
AgenciesMerchant reports for retail clients
Rank the merchants credited for a client's products and the prices they show. Resellers that outrank the brand store become a line in the monthly report.
E-commerce & brandsThe price the engine quotes
Watch the price shown next to your product in AI answers: it is not always yours. Track which merchant gets the citation, resellers included.
Pricing
ChatGPT Shopping API pricing runs from $0.013 to $0.007 per credit
The Shopping API reads shopping data captured during normal runs, so the product list itself is not billed. Credits pay for the executions, one per prompt, per model, per locale, and the shopping layer comes with that credit like every other enrichment. The tier follows the month's total volume.
Price per credit, set by the month's total volume.
FAQ
AI shopping data, answered
What does one call return?
The Shopping API returns one object per product in scope: the product as the engine named it, your external id, its visibility, the average price and price range quoted, the average rating, the top merchants with their citations and prices, and the product's share of voice.
How do results join my catalogue?
The Shopping API carries an externalId on each product, your catalogue id or SKU, so a result maps to a product record without fuzzy name matching. Visibility, merchants and prices then sit next to your own margins and stock in the warehouse, where pricing decisions are made.
Which merchant gets credited?
The Shopping API lists the top merchants for each product with the citations each one earned and the price it showed. Resellers appear next to the brand's own store, which shows when the store is not the most cited merchant for its own product.
Is shopping data billed separately?
The Shopping API adds no charge to the runs. Shopping products, merchants and prices are one of the enrichment layers every credit includes, and reading them afterwards is unmetered, so a weekly merchant report costs only the executions behind it.
Can I resell shopping data?
The Shopping API allows resale and white-label use like every family. The payload carries no branding and each retail client can sit in an isolated project, so an agency can ship merchant reports under its own name and a platform can sell product visibility as its own module.