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 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/search

Price

$0.0067 - $0.02

Network

Solana

x402

v2

Also payable on Base/SKALE (USDC), Base (USDC), Robinhood (USDG), Stable (USDT0).

Request parameters

ParameterTypeRequiredDescription
querytextareaYesFree-text product query. Everything else is inferred from this, including price range, condition, sort order, and which marketplaces to search.
marketplacesstring[]NoRestrict the search to specific marketplaces: google_shopping, amazon, ebay. Fewer marketplaces means a lower price. Leave empty to infer from the query.
price_minnumberNoMinimum price filter. Overrides what the query implied.
price_maxnumberNoMaximum price filter. Overrides what the query implied.
conditionselectNoItem 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.
sortselectNoResult 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.
countrystringNo2-letter country code selecting the marketplace storefront
limitnumberNoMaximum 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/lens

Price

$0.02 - $0.04

Network

Solana

x402

v2

Also payable on Base/SKALE (USDC), Base (USDC), Robinhood (USDG), Stable (USDT0).

Request parameters

ParameterTypeRequiredDescription
image_urlimage-pickerYesPick 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.
modeselectNoIdentify 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.
qstringNoOptional text applied alongside the image to narrow the match, for example a colour or size.
marketplacesstring[]NoShop mode only. Restrict the comparison to google_shopping, amazon, or ebay. Fewer marketplaces means a lower price.
price_minnumberNoDrop matches below this price.
price_maxnumberNoDrop matches above this price.
conditionselectNoItem 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.
sortselectNoResult ordering. Relevance promotes matches Google flagged as the exact same item. One of: relevance, price_asc, price_desc, rating, reviews, discount.
countrystringNo2-letter country code selecting the storefront
limitnumberNoMaximum 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/product

Price

$0.015

Network

Solana

x402

v2

Also payable on Base/SKALE (USDC), Base (USDC).

Request parameters

ParameterTypeRequiredDescription
urlstringYesThe TikTok Shop product URL. Must be a tiktok.com link, the url field from a TikTok Shop Search result works directly.
regionselectNoUS 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.
rawbooleanNoAlso 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
}'

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/search

Price

$0.015

Network

Solana

x402

v2

Also payable on Base/SKALE (USDC), Base (USDC).

Request parameters

ParameterTypeRequiredDescription
querystringYesWhat to search TikTok Shop for.
regionselectNoWhich 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.
pagenumberNoPage of results to retrieve.
rawbooleanNoAlso 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
}'

On this page