Search products by keyword with full-text search
Changed onPublic read endpoint: works without credentials at anonymous rate limits. Sending a Bearer API key raises limits to your tier (free tier: 10 requests/min, 10,000/day) and enables usage attribution.
Request
- Base URLhttps://api.buywhere.ai/v1
- Authnone required
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Query parameters
Keyword search query (full-text). Alias: query.
Alias for q (accepted for agent convenience; prefer q).
REQUIRED for buyer-facing use: ISO-3166 country of the end user (e.g. "SG", "US"). Ranks deliverable products first and prevents all-market scans. Prefer over country_code.
Filter by merchant platform (e.g. lazada, shopee)
Filter by region (sea, us, eu, au)
Filter by ISO country code. When provided without an explicit currency param, the default currency is inferred (SG→SGD, US→USD, VN→VND, TH→THB, MY→MYR). min_price/max_price apply in the inferred currency. Default: SG.
Include products not deliverable to deliver_to country (default true). Set to false to return only same-country products.
Minimum price in the active currency (inferred from country_code or explicit currency param)
Maximum price in the active currency (inferred from country_code or explicit currency param)
Explicit currency override. If omitted and country_code is set, currency is inferred from country_code.
Return minimal payload for AI agents. Adds normalized_price_usd field. Reduces response ~40%.
Search mode. keyword (default) is full-text search on the indexed search_vector. semantic embeds the query (flow-embed-1, 1024-dim) and searches the pgvector pool, and hybrid RRF-merges the FTS and semantic candidate ranks. If vector infrastructure is unavailable, semantic and hybrid fall back to the keyword path.
Response
Product list with meta (total, response_time_ms, cached, mode)
Changes
- breaking
the response property
//became nullable for the status - info
the endpoint scheme security
BearerAuthwas removed from the API - info
added the non-success response with the status
- info
removed the non-success response with the status
- info
added the optional property
to the response with the status
- breaking
- info
added the new optional
queryrequest parameterdeliver_to - info
added the new optional
queryrequest parameterinclude_unshippable - info
added the new optional
queryrequest parameterquery - info
added the media type
application/jsonfor the response with the status
- info