Perplexity renders real commerce modules: shopping cards with price, merchant, rating, and per-merchant offers; hotel listings with coordinates and pricing signals; and place results for local prompts. All parsed to JSON, all included in the base request.
4.8 · 33 reviewsShopping cards are included in the base 3-credit request — hotels and places appear on travel and local-intent prompts respectively.
import requests
response = requests.post(
"https://api.cloro.dev/v1/monitor/perplexity",
headers={
"Authorization": "Bearer sk_live_your_api_key_here",
"Content-Type": "application/json"
},
json={
"prompt": "best espresso machine under 500",
"country": "US"
}
)
print(response.json()) {
"success": true,
"result": {
"text": "Under $500, the machines that consistently top reviews are...",
"shopping_cards": [
{
"tags": [
"Espresso machines"
],
"products": [
{
"title": "Breville Bambino Plus",
"id": "prod_2xk...",
"url": "https://example-store.com/breville-bambino-plus",
"price": "$499.95",
"merchant": "Example Store",
"available": true,
"imageUrls": [
"https://cdn.example-store.com/bambino.jpg"
],
"rating": 4.7,
"numReviews": 3182,
"position": 1,
"original_price": "$549.95"
}
]
}
]
}
} Three related surfaces: shopping_cards for products, hotels for travel prompts, places for local prompts.
| Field | Type | Description |
|---|---|---|
| shopping_cards[].tags | string[] | Optional category tags for the card group. |
| products[].title / url | string | Product name and product-page URL. |
| products[].price / original_price | string | Current price and pre-discount price (null when not on sale). |
| products[].merchant / available | string / boolean | Merchant name and current availability. |
| products[].rating / numReviews | number | Product rating (0–5) and review count. |
| products[].position / offers / variants | integer / object[] | 1-indexed rank across all products in the response, per-merchant offers, and product variants. |
| hotels[] | object[] | Hotel listings on travel prompts: name, url, rating, num_reviews, address, phone, lat/lng, price_level, images, categories. |
| places[] | object[] | Local place results: name, url, rating, address, lat/lng, categories, map_url, images. |
Pick a plan that fits your volume. Price per credit drops as you scale.
Increased concurrency, overages on credits and credit discounts for annual contracts.
Know moreCredit cost per request varies by provider. The rates below apply to async/batch requests; sync requests add a +2 credit surcharge.
ChatGPT full response includes query fan-out, ads, and shopping data. Google News uses the same pricing as Google Search.
No — unlike some engines, Perplexity's shopping cards ship in the base 3-credit request, alongside sources and markdown. That makes Perplexity the cheapest AI shopping surface to monitor at scale.
Perplexity picks the module by intent: shopping_cards on product prompts, hotels on travel prompts ("best hotels in Lisbon"), places on local prompts ("coffee shops near Union Square"). Your parser should treat all three as optional arrays.
Yes — each product carries price, original_price, availability, and merchant. If Perplexity shows a stale price or an out-of-stock reseller instead of you, that's a fixable feed problem you'd otherwise never see.
Same use case, different field shapes: Perplexity uses snake_case shopping_cards with availability and original_price; ChatGPT adds inline products and generated shopping queries behind a +2-credit flag. Most teams monitor both — see the ChatGPT Shopping API.
The full answer surface: text/markdown, the source rail and citation pills, related queries, query fan-out, plus videos and images when Perplexity renders them.