BR Marketplace Search
GET brmarket.thomenz.me/v1/search
Why an agent can trust this route.
Sonar evidence is advisory. Paid delivery is shown as verified only when paid probes are available; otherwise route estimates use the unpaid handshake as a clearly labeled proxy.
Observed outcomes
Search and compare products across Brazilian marketplaces (Mercado Livre, Shopee, AliExpress) in one call: normalized BRL prices in cents, canonical + affiliate links, AliExpress freight and ships-from origin (ranked on the real total), rating and sold count. Per-marketplace `sources` state and `data_as_of` ship with every response, so a degraded or unconfigured marketplace is visible, never silent. Pass `rerank=true` to drop accessories and same-word-different-product offers (+~400ms).
Resource: brmarket.thomenz.me/v1/search
Network: eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp · Asset: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 · Pay to: 0xA06a2Cf27F2a703d251600309822e6CC2ee72009
Payment methods: — · Last validation: 2026-09-14 11:55:22.052+00
{
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"pathParams": {
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"examples": [
"iphone 14 pro"
],
"minLength": 2,
"description": "What to search for."
},
"uf": {
"type": "string",
"examples": [
"SP"
],
"description": "Buyer's 2-letter Brazilian state, for the ICMS rate in landed-price estimates. Default: 20% (ceiling)."
},
"sort": {
"enum": [
"price_asc",
"price_desc",
"relevance"
],
"default": "price_asc",
"description": "Default is price_asc — cheapest first."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Results in the merged page. Cap 20."
},
"rerank": {
"type": "boolean",
"default": false,
"description": "Opt-in LLM relevance pass. OFF by default and worth turning ON whenever the query has a cheaper accessory, part or homonym — it drops offers that merely contain the words (a coffee FILTER for 'cafeteira', an AirPods CASE for 'fone bluetooth', a wired 3.5mm earphone for a bluetooth query). Costs ~400ms. A basic price-sanity filter always runs either way; see `relevance` in the response for what each pass removed."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Maximum price in BRL."
},
"min_price": {
"type": "number",
"minimum": 0,
"description": "Minimum price in BRL (e.g. 199.90)."
},
"marketplace": {
"type": "string",
"examples": [
"mercadolivre,shopee"
],
"description": "Comma-separated subset to query: mercadolivre, shopee, aliexpress. Default: all."
}
}
},
"queryParams": {
"type": "object",
"properties": {}
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
}
},
"paymentRequirements": [
{
"raw": {
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"name": "USD Coin",
"version": "2"
},
"payTo": "0xA06a2Cf27F2a703d251600309822e6CC2ee72009",
"amount": "10000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 300
},
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0xA06a2Cf27F2a703d251600309822e6CC2ee72009",
"scheme": "exact",
"network": "eip155:8453",
"amountAtomic": "10000"
},
{
"raw": {
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"feePayer": "D6ZhtNQ5nT9ZnTHUbqXZsTx5MH2rPFiBBggX4hY1WePM"
},
"payTo": "FafQ6dqRvAQK8TboxoaKbR2po5RahSX6HA5ZMQtf4Wd7",
"amount": "10000",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 300
},
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"payTo": "FafQ6dqRvAQK8TboxoaKbR2po5RahSX6HA5ZMQtf4Wd7",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"amountAtomic": "10000"
}
]
}Source catalog records are retained separately from live endpoint observations. Sonar score, uptime, and latency are advisory metrics. CDP indexing is not inferred from validation.