Commerce
Agentic shopping tools, including product search across major marketplaces, product lens, and TikTok Shop search and product detail.
Agentic shopping tools, including product search across major marketplaces, product lens, and TikTok Shop search and product detail. 4 endpoints, each gated by the x402 payment protocol and settled in USDC. Connect the same endpoints over the MCP server for agent-to-agent use.
Product Search
Product discovery across Google Shopping, Amazon, and eBay from a single free-text query. The query is parsed for price range, condition, sort, and target marketplaces, then results are normalized into one schema, deduped across marketplaces, and ranked. Price scales with the number of marketplaces searched, from $0.0067 for one to $0.02 for all three.
POST /shop/searchPrice
$0.0067 - $0.02
Network
Solana
x402
v2
Also payable on Base/SKALE (USDC), Base (USDC), Robinhood (USDG), Stable (USDT0).
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | textarea | Yes | Free-text product query. Everything else is inferred from this, including price range, condition, sort order, and which marketplaces to search. |
marketplaces | string[] | No | Restrict the search to specific marketplaces: google_shopping, amazon, ebay. Fewer marketplaces means a lower price. Leave empty to infer from the query. |
price_min | number | No | Minimum price filter. Overrides what the query implied. |
price_max | number | No | Maximum price filter. Overrides what the query implied. |
condition | select | No | Item condition. Note that Amazon carries new inventory only, so it is skipped when you ask for used or refurbished. One of: new, open_box, refurbished, used, for_parts. |
sort | select | No | Result ordering. Relevance spreads results across marketplaces; any explicit sort is returned in exact order. One of: relevance, price_asc, price_desc, rating, reviews, discount, newest. |
country | string | No | 2-letter country code selecting the marketplace storefront |
limit | number | No | Maximum products to return, 1-50 |
Response
Returns results (ranked products with marketplace, title, url, image, price, discount, rating, reviews_count, seller, condition, shipping, and also_available_at for the same item on other marketplaces), price_summary (min/max/median), intent (how the query was parsed), and sources (per-marketplace result counts and timings)
Example
curl -X POST "https://api.xona-agent.com/shop/search" \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <x402-payment-payload>" \
-d '{
"query": "cheapest refurbished airpods pro under $150 on ebay",
"marketplaces": [],
"price_min": 0,
"price_max": 0,
"condition": "new",
"sort": "relevance",
"country": "us",
"limit": 20
}'Product Search by Image
Product discovery from a photo instead of a query. Google Lens identifies what is in the image and which retailers sell it, normalized into the same schema as Product Search. Identify mode returns the visual matches and a derived product name for $0.02; Shop mode also runs that product through Google Shopping, Amazon, and eBay for a full price comparison.
POST /shop/lensPrice
$0.02 - $0.04
Network
Solana
x402
v2
Also payable on Base/SKALE (USDC), Base (USDC), Robinhood (USDG), Stable (USDT0).
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
image_url | image-picker | Yes | Pick a photo of the product. It is uploaded and the resulting public URL is what gets sent to the API, so a clear shot of a single item works best. |
mode | select | No | Identify returns what the image is and who sells it. Shop also compares the identified product across marketplaces, which costs more because it runs additional searches. One of: identify, shop. |
q | string | No | Optional text applied alongside the image to narrow the match, for example a colour or size. |
marketplaces | string[] | No | Shop mode only. Restrict the comparison to google_shopping, amazon, or ebay. Fewer marketplaces means a lower price. |
price_min | number | No | Drop matches below this price. |
price_max | number | No | Drop matches above this price. |
condition | select | No | Item condition. Note that Amazon carries new inventory only, so it is skipped when you ask for used or refurbished. One of: new, open_box, refurbished, used, for_parts. |
sort | select | No | Result ordering. Relevance promotes matches Google flagged as the exact same item. One of: relevance, price_asc, price_desc, rating, reviews, discount. |
country | string | No | 2-letter country code selecting the storefront |
limit | number | No | Maximum matches to return, 1-50 |
Response
Returns results (ranked visual matches in the same product schema, plus exact_match where Google confirmed the identical item), identified (the product name derived from the top matches, reusable as a text query), is_product_image (false when the photo matched mostly non-retail pages), marketplace_comparison (Shop mode only), related_queries, and price_summary
Example
curl -X POST "https://api.xona-agent.com/shop/lens" \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <x402-payment-payload>" \
-d '{
"image_url": "https://example.com/product.jpg",
"mode": "identify",
"q": "in black",
"marketplaces": [],
"price_min": 0,
"price_max": 0,
"condition": "new",
"sort": "relevance",
"country": "us",
"limit": 20
}'TikTok Shop Product
Full detail for one TikTok Shop listing from its URL. Returns everything Search does plus the seller's description, category, every product image, specifications, purchasable variants with per-SKU price and stock, seller rating and location, stock status, and a sample of buyer reviews with their text. US storefront only, the upstream serves no other region for detail, while Search covers all 16.
POST /tiktok/productPrice
$0.015
Network
Solana
x402
v2
Also payable on Base/SKALE (USDC), Base (USDC).
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | The TikTok Shop product URL. Must be a tiktok.com link, the url field from a TikTok Shop Search result works directly. |
region | select | No | US only. The upstream detail endpoint serves no other storefront, and any other value is rejected before payment rather than charged and failed. One of: US. |
raw | boolean | No | Also return the untouched upstream payload under raw, for fields the normalized schema does not cover. |
Response
Returns product (the Search product schema plus description, category, images, specifications, skus with per-variant price and stock, seller_detail with rating and location, reviews with text and author, and in_stock), found (false when the listing is delisted or unreachable), and cached
Example
curl -X POST "https://api.xona-agent.com/tiktok/product" \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <x402-payment-payload>" \
-d '{
"url": "https://www.tiktok.com/shop/pdp/1732469755419464435",
"region": "US",
"raw": false
}'TikTok Shop Search
Keyword search across the TikTok Shop marketplace, covering 16 country storefronts. Results come back in the same normalized schema as Product Search, so TikTok Shop sits alongside Google Shopping, Amazon, and eBay in one comparison. Each product carries price, list price, discount, rating, units sold, seller, and TikTok's own badges. Prices are returned in the storefront's own currency, never assumed to be USD.
POST /tiktok/searchPrice
$0.015
Network
Solana
x402
v2
Also payable on Base/SKALE (USDC), Base (USDC).
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | What to search TikTok Shop for. |
region | select | No | Which country storefront to search. TikTok partitions its catalog per country, so this is the parameter that decides what you see at all. Prices come back in that storefront's currency. One of: US, GB, ID, MY, SG, TH, VN, PH, JP, DE, FR, IT, ES, IE, MX, BR. |
page | number | No | Page of results to retrieve. |
raw | boolean | No | Also return the untouched upstream payload under raw, for fields the normalized schema does not cover. |
Response
Returns results (ranked products with marketplace, product_id, title, url, image, price {amount, currency}, original_price, discount_pct, rating, reviews_count, sold_count, seller, shop_id, ship_from, badges), total_results, total_available (TikTok's own match count for the query), price_summary (min/max/median), and cached
Example
curl -X POST "https://api.xona-agent.com/tiktok/search" \
-H "Content-Type: application/json" \
-H "X-PAYMENT: <x402-payment-payload>" \
-d '{
"query": "wireless earbuds",
"region": "US",
"page": 1,
"raw": false
}'