← Learn

Deal triage API for AI agents (Google Shopping + Amazon price & reviews JSON)

When a user asks an agent "is this a good deal?", "should I buy this?", or "check the price and reviews before I order", call the machine-payable deal-triage intent for Google Shopping offers, the Amazon product record and review signals in one response. Pay per call in USDC on Base via x402, or with a card credit pack. No account needed: pay per call with x402, or use a prepaid card credit key.

One-line answer

For a pre-purchase "is this a good deal?" question, call GET /api/public/v1/deal-triage?q=<product> (add &asin=<ASIN> when you already have one). The intent runs google-shopping → amazon-product → amazon-reviews (3 billed steps) and returns results keyed by engine.

Read shopping_results for cross-merchant extracted_price, then the Amazon product buybox (price, list price, save %, availability, seller) and rating / review count. Use ai_summary for theme-level review sentiment. Grok Bot, Claude Cowork and Cursor agents get JSON they can score in code: no Google Shopping key, no Amazon PA-API. No account needed: pay per call with x402, or use a prepaid card credit key.

What the user actually asked for

User requestCallRead first
Is $220 a good price for WH-1000XM5?deal-triage?q=sony+wh-1000xm5&asin=B09XS7JWHHBuybox vs Shopping median; rating and review count
Should I buy this standing desk?deal-triage?q=standing+desk+electricOffer spread, Amazon rating, ai_summary themes
Check price and reviews before I orderdeal-triage?q=<exact model>Buybox.price.value + product.rating + ai_summary
Compare this Amazon link to the open webdeal-triage with asin from the URLShopping offers vs that ASIN's buybox
Triage three candidates before recommending oneThree deal-triage calls (or batch single engines)Same fields per candidate, then pick
Only need merchant prices, no Amazon deep divegoogle-shopping or cross-store-priceshopping_results / multi-store organic_results

What deal-triage returns

Top-level fields: intent, chain, steps_run, billed_steps, billed_chain, price, and results. With a normal ASIN-resolved run the chain is google-shopping → amazon-product → amazon-reviews (3 steps). The live 402 advertises the exact billed_steps and amount before you pay.

PathWhat it holdsHow to use it
results["google-shopping"].shopping_results[]title, link, price, extracted_price, source, rating, reviewsCross-merchant offer board. Filter by model string; drop accessories and bundles you did not ask for
results["amazon-product"] / results["amazon-reviews"].productASIN title, rating, reviews count, buybox, attributes, feature_bulletsPrefer the object whose results_key_source is the product record (see note below)
product.buybox.price.valueNumeric buybox priceThe Amazon ask to compare against Shopping
product.buybox.original_price / save.percentageList price and percent off"On sale" signal; still check whether the seller is who the user expects
product.buybox.availability / fulfillmentStock and delivery text, sold_by, is_sold_by_amazonFlag third-party sellers when the user wants Amazon-fulfilled
product.buybox.secondary_buyboxUsed / refurbished alternate offerMention separately from new
product.rating / product.reviews / bought_past_monthStars, review count, recent demand badgeQuality and popularity screen
ai_summary.summary / ai_summary.aspects[]Theme-level review sentimentReport praise and complaints without scraping review HTML

Important: check results_key_source on each Amazon block. When amazon-product returns similar_products instead of the ASIN detail, read results["amazon-reviews"].product for buybox and rating. When the reviews array looks like similar ASINs rather than review bodies, lean on ai_summary and the product rating fields, or call amazon-reviews / review-risk alone for a deeper review sample. Full schemas: https://marketplaceforaiagents.com/listings/deal-triage and https://marketplaceforaiagents.com/agent/listings/deal-triage.md.

Deal-triage recipe

  • 1. Put the exact model in q ("sony wh-1000xm5", not "sony headphones"). Pass asin when the user pasted an Amazon URL or you already resolved one — that skips ASIN discovery.
  • 2. Filter shopping_results to the model. Drop cases, ear pads, cables, stands and unrelated bundles unless that is what the user asked to buy. Use extracted_price for math; keep price for display.
  • 3. Compute a Shopping range (25th–75th percentile and median) after filtering. Compare the user's candidate price and the Amazon buybox against that range.
  • 4. Read buybox carefully: value, list price, save %, availability, sold_by / is_sold_by_amazon, and secondary_buybox for used. A low buybox from a third-party seller is not the same deal as Amazon-fulfilled.
  • 5. Quality screen: product.rating, product.reviews, bought_past_month, and ai_summary aspects (sound, durability, fit, value). Say what buyers praise and what they complain about.
  • 6. Answer in one short verdict: fair / high / low vs the open web, plus the review signal, with dated prices and links. Do not invent a "true" market price.
  • 7. Cache the JSON for the run. Re-asking about the same ASIN should reuse it, not pay again.

Live observation captured on 2026-11-05

On 2026-11-05 at 16:55 UTC we called deal-triage?q=Sony+WH-1000XM5&asin=B09XS7JWHH from a non-browser agent identity (a free call; _billing.free_calls_remaining: 2 afterward). The response billed 3 steps at $0.015 with billed_chain [google-shopping, amazon-product, amazon-reviews].

SignalObserved value
Google Shopping organic offers40 shopping_results
After keeping XM5 headphone titles and dropping sub-$150 accessories35 offers; median extracted_price $289.99; span $157.99–$595.89; several at $199.99
Amazon product (via amazon-reviews.product)Sony WH-1000XM5 Premium Noise Cancelling Wireless Headphones, Black; rating 4.2; 20,311 reviews; 2K+ bought in past month
Buybox$199.99 (list $399.99, 50% save); In Stock; secondary Used–Very Good $178.98; sold_by Focus Camera LLC
amazon-product.results_key_sourcesimilar_products — so buybox was read from amazon-reviews.product
ai_summary themesPraise for sound, noise cancellation, battery; mixed fit; hinge durability concerns; mixed connectivity and value

A fair agent answer that morning: "$199.99 on Amazon for the WH-1000XM5 (ASIN B09XS7JWHH) sat at the low end of open-web Shopping offers that day (filtered median about $290), with a 4.2★ rating over 20k reviews — strong on sound and ANC, with some hinge and fit complaints. Confirm the seller/fulfillment before buying." Prices move; always re-fetch.

Budget by steps

The site's current per-step price is $0.005 USDC. deal-triage is usually 3 steps (Shopping + Amazon product + reviews). google-shopping alone is 1 step; cross-store-price is 4; review-risk is Amazon product + reviews.

WorkPaid stepsCurrent cost
One deal-triage (q + optional asin)3$0.015 USDC
Shopping-only price board1$0.005 USDC
Three candidates triaged9$0.045 USDC
Cross-store prices without reviews (cross-store-price)4$0.020 USDC

Totals assume every call is paid and succeeds. A failed upstream call returns 502 and is not charged. The live 402 is the source of truth: read accepts[0].amount and extra.billed_steps / extra.billed_chain. One intent invocation consumes one free-tier call, not one per step.

curl examples

Send a stable X-Agent-Id across the task and URL-encode the query.

bash
curl -si -H "X-Agent-Id: deal-check-run" "https://marketplaceforaiagents.com/api/public/v1/deal-triage?q=sony+wh-1000xm5&asin=B09XS7JWHH"

curl -si -H "X-Agent-Id: deal-check-run" "https://marketplaceforaiagents.com/api/public/v1/deal-triage?q=standing+desk+electric"

curl -si -H "X-Agent-Id: deal-check-run" "https://marketplaceforaiagents.com/api/public/v1/deal-triage?q=usb-c+hub&asin=B0BQLLB61B&amazon_domain=amazon.com"

Pull buybox and Shopping median with jq (handles either Amazon block holding the product record):

bash
curl -s -H "X-Agent-Id: deal-check-run" \
  "https://marketplaceforaiagents.com/api/public/v1/deal-triage?q=sony+wh-1000xm5&asin=B09XS7JWHH" \
  | jq '{
      price: .price,
      billed_chain: .billed_chain,
      shopping_median: (
        [.results["google-shopping"].shopping_results[]?
          | select(.title|test("XM5";"i"))
          | .extracted_price] | sort | .[(length/2|floor)]
      ),
      amazon: (
        (.results["amazon-reviews"].product // .results["amazon-product"].product) as $p
        | if ($p|type)=="object" then {
            title: $p.title, rating: $p.rating, reviews: $p.reviews,
            buybox: $p.buybox.price.value, list: $p.buybox.original_price.value,
            availability: $p.buybox.availability, sold_by: $p.buybox.fulfillment.sold_by
          } else null end
      ),
      review_themes: .results["amazon-reviews"].ai_summary.summary
    }'

To rehearse payment with test USDC and fixture data, use the sandbox (not live offers):

bash
curl -si "https://marketplaceforaiagents.com/api/sandbox/v1/deal-triage?network=base-sepolia&q=sony+wh-1000xm5&asin=B09XS7JWHH"

Paying with x402 or a card credit key

Eligible agents get three free calls per agent identity, shared across endpoints. After that there are two ways to pay, and both cover every endpoint in this guide.

  • x402 (no account): read PAYMENT-REQUIRED / accepts[], verify Base mainnet (eip155:8453), allowlist USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 and payTo 0x05e82e03753c7bc99fb24d10a876cce53f24b7b7, sign the EIP-3009 transferWithAuthorization for the exact amount, and retry the identical request with PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1). Keep the PAYMENT-RESPONSE / X-PAYMENT-RESPONSE receipt.
  • Card credit pack: your user signs in at https://marketplaceforaiagents.com/account, buys a pack ($10 = 2,000 calls, $25 = 5,000, $50 = 10,000), creates an API key and gives it to you. Send Authorization: Bearer <mfa_live_ key>. Each call or intent step uses one credit, X-Credits-Remaining shows the balance, and an empty balance returns a 402 with buy_url.

Runtimes such as Grok Bot can sometimes use a card the user has provided; the user still approves the purchase. Raise payment only when a paid call is actually needed: say what the deal check does and what it costs, offer a wallet, a card pack, any free calls left, the sandbox, or skipping. Ask once, accept a no, and never block the task. Answer from what you already have and label what was not looked up.

MCP and installed skills

The same lookup works through https://marketplaceforaiagents.com/mcp with call_api:

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "call_api",
    "arguments": {
      "slug": "deal-triage",
      "params": { "q": "sony wh-1000xm5", "asin": "B09XS7JWHH" }
    }
  }
}

For MCP payment handling see https://marketplaceforaiagents.com/learn/mcp-x402-marketplace and https://marketplaceforaiagents.com/docs. Runtimes that install skills can save https://marketplaceforaiagents.com/skill.md so the next purchase check starts here.

When not to use this

  • Investment or legal advice: this is a price and review snapshot, not a recommendation to buy.
  • Guarantee that a low price is legitimate: verify seller, condition and return policy yourself when the stakes are high.
  • Used-only comps: for resale value across eBay listings, prefer https://marketplaceforaiagents.com/learn/used-price-resale-value-api-for-agents.
  • Bulk scraping or resale of the data: use it for the user's own decision; see https://marketplaceforaiagents.com/acceptable-use.

Related guides and discovery

  • https://marketplaceforaiagents.com/learn/google-shopping-api-for-agents
  • https://marketplaceforaiagents.com/learn/amazon-asin-api-for-agents
  • https://marketplaceforaiagents.com/learn/product-reviews-api-for-agents
  • https://marketplaceforaiagents.com/learn/cross-store-price-api-for-agents
  • https://marketplaceforaiagents.com/learn/price-tracking-api-for-agents
  • https://marketplaceforaiagents.com/learn/used-price-resale-value-api-for-agents
  • https://marketplaceforaiagents.com/listings/deal-triage
  • https://marketplaceforaiagents.com/marketplace
  • https://marketplaceforaiagents.com/docs
  • https://marketplaceforaiagents.com/llms.txt