BuyWhere · Capability
BuyWhere Product Catalog API — Products
BuyWhere Product Catalog API — Products. 5 operations. Lead operation: Compare Multiple Products Side-By-Side. Self-contained Naftiko capability covering one Buywhere business surface.
What You Can Do
GET
Compareproducts
— Compare Multiple Products Side-By-Side
/v1/products/compare
GET
Getdeals
— List Discounted Products By Discount Percentage
/v1/products/deals
GET
Searchproducts
— Search Products By Keyword
/v1/products/search
GET
Getproduct
— Get Product By ID
/v1/products/{id}
GET
Getproductprices
— Get Product Price History
/v1/products/{id}/prices
MCP Tools
compare-multiple-products-side-side
Compare Multiple Products Side-By-Side
read-only
idempotent
list-discounted-products-discount-percentage
List Discounted Products By Discount Percentage
read-only
idempotent
search-products-keyword
Search Products By Keyword
read-only
idempotent
get-product-id
Get Product By ID
read-only
idempotent
get-product-price-history
Get Product Price History
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: BuyWhere Product Catalog API — Products
description: 'BuyWhere Product Catalog API — Products. 5 operations. Lead operation: Compare Multiple Products Side-By-Side.
Self-contained Naftiko capability covering one Buywhere business surface.'
tags:
- Buywhere
- Products
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
BUYWHERE_API_KEY: BUYWHERE_API_KEY
capability:
consumes:
- type: http
namespace: buywhere-products
baseUri: https://api.buywhere.ai/v1
description: BuyWhere Product Catalog API — Products business capability. Self-contained, no shared references.
resources:
- name: products-compare
path: /products/compare
operations:
- name: compareproducts
method: GET
description: Compare Multiple Products Side-By-Side
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: ids
in: query
type: string
description: Comma-separated product IDs (2–10).
required: true
- name: products-deals
path: /products/deals
operations:
- name: getdeals
method: GET
description: List Discounted Products By Discount Percentage
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: currency
in: query
type: string
- name: country_code
in: query
type: string
description: When set, only deals from that country are returned.
- name: min_discount
in: query
type: number
description: Minimum discount percentage (0–90).
- name: limit
in: query
type: integer
- name: offset
in: query
type: integer
- name: products-search
path: /products/search
operations:
- name: searchproducts
method: GET
description: Search Products By Keyword
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: q
in: query
type: string
description: Keyword search query (full-text).
- name: domain
in: query
type: string
description: Filter by merchant platform (e.g. `lazada`, `shopee`, `amazon`, `walmart`, `carousell`).
- name: region
in: query
type: string
description: Filter by region.
- name: country_code
in: query
type: string
description: Filter by ISO country code. When provided without an explicit `currency` param,
- name: min_price
in: query
type: number
description: Minimum price in the active currency.
- name: max_price
in: query
type: number
description: Maximum price in the active currency.
- name: currency
in: query
type: string
description: Explicit currency override. If omitted and `country_code` is set, currency is inferred from `country_code`.
- name: compact
in: query
type: boolean
description: Return a minimal payload for AI agents (id, title, price, currency, url, structured_specs, comparison_attributes).
- name: limit
in: query
type: integer
- name: offset
in: query
type: integer
- name: products-id
path: /products/{id}
operations:
- name: getproduct
method: GET
description: Get Product By ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
required: true
- name: products-id-prices
path: /products/{id}/prices
operations:
- name: getproductprices
method: GET
description: Get Product Price History
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: id
in: path
type: string
required: true
- name: days
in: query
type: integer
description: Look-back window in days.
authentication:
type: bearer
token: '{{env.BUYWHERE_API_KEY}}'
exposes:
- type: rest
namespace: buywhere-products-rest
port: 8080
description: REST adapter for BuyWhere Product Catalog API — Products. One Spectral-compliant resource per consumed operation,
prefixed with /v1.
resources:
- path: /v1/products/compare
name: products-compare
description: REST surface for products-compare.
operations:
- method: GET
name: compareproducts
description: Compare Multiple Products Side-By-Side
call: buywhere-products.compareproducts
with:
ids: rest.ids
outputParameters:
- type: object
mapping: $.
- path: /v1/products/deals
name: products-deals
description: REST surface for products-deals.
operations:
- method: GET
name: getdeals
description: List Discounted Products By Discount Percentage
call: buywhere-products.getdeals
with:
currency: rest.currency
country_code: rest.country_code
min_discount: rest.min_discount
limit: rest.limit
offset: rest.offset
outputParameters:
- type: object
mapping: $.
- path: /v1/products/search
name: products-search
description: REST surface for products-search.
operations:
- method: GET
name: searchproducts
description: Search Products By Keyword
call: buywhere-products.searchproducts
with:
q: rest.q
domain: rest.domain
region: rest.region
country_code: rest.country_code
min_price: rest.min_price
max_price: rest.max_price
currency: rest.currency
compact: rest.compact
limit: rest.limit
offset: rest.offset
outputParameters:
- type: object
mapping: $.
- path: /v1/products/{id}
name: products-id
description: REST surface for products-id.
operations:
- method: GET
name: getproduct
description: Get Product By ID
call: buywhere-products.getproduct
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /v1/products/{id}/prices
name: products-id-prices
description: REST surface for products-id-prices.
operations:
- method: GET
name: getproductprices
description: Get Product Price History
call: buywhere-products.getproductprices
with:
id: rest.id
days: rest.days
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: buywhere-products-mcp
port: 9090
transport: http
description: MCP adapter for BuyWhere Product Catalog API — Products. One tool per consumed operation, routed inline through
this capability's consumes block.
tools:
- name: compare-multiple-products-side-side
description: Compare Multiple Products Side-By-Side
hints:
readOnly: true
destructive: false
idempotent: true
call: buywhere-products.compareproducts
with:
ids: tools.ids
outputParameters:
- type: object
mapping: $.
- name: list-discounted-products-discount-percentage
description: List Discounted Products By Discount Percentage
hints:
readOnly: true
destructive: false
idempotent: true
call: buywhere-products.getdeals
with:
currency: tools.currency
country_code: tools.country_code
min_discount: tools.min_discount
limit: tools.limit
offset: tools.offset
outputParameters:
- type: object
mapping: $.
- name: search-products-keyword
description: Search Products By Keyword
hints:
readOnly: true
destructive: false
idempotent: true
call: buywhere-products.searchproducts
with:
q: tools.q
domain: tools.domain
region: tools.region
country_code: tools.country_code
min_price: tools.min_price
max_price: tools.max_price
currency: tools.currency
compact: tools.compact
limit: tools.limit
offset: tools.offset
outputParameters:
- type: object
mapping: $.
- name: get-product-id
description: Get Product By ID
hints:
readOnly: true
destructive: false
idempotent: true
call: buywhere-products.getproduct
with:
id: tools.id
outputParameters:
- type: object
mapping: $.
- name: get-product-price-history
description: Get Product Price History
hints:
readOnly: true
destructive: false
idempotent: true
call: buywhere-products.getproductprices
with:
id: tools.id
days: tools.days
outputParameters:
- type: object
mapping: $.