Explorador de tiendas
Search Shopify stores by revenue, traffic, category, and more. MCP: buscar_tiendas_de_Shopify, buscar_tiendas_similares_por_imagen, list_shopify_store_filter_options.
/api/v1/store-explorerSearch Shopify stores. Body matches the Explore Shops UI (form or JSON keys).
Clave X-API on every request.Body parameters
buscarcadenapaíscadenaMerchant country ISO2. Omit, empty, or
Todo= no country filter.clave de ordenacióncadenadirección de ordenacióncadenapáginaenterotamaño de páginaenteroincludeWladsenteroSet 0 to skip Meta ad enrichment.
curl -sS \
-X POST \
-H "X-API-Key: $WH_API_KEY" \
-H "Content-Type: application/json" \
"{origin}/api/v1/store-explorer" \
-d '{"search":"skincare","country":"US","sortingKey":"revenue_30d","sortingDirection":"desc","page":1,"pageSize":20,"includeWlads":0}'const res = await fetch(`${ORIGIN}/api/v1/store-explorer`, {
method: 'POST',
headers: {
'X-API-Key': process.env.WH_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"search": "skincare",
"country": "US",
"sortingKey": "revenue_30d",
"sortingDirection": "desc",
"page": 1,
"pageSize": 20,
"includeWlads": 0
}),
});
const data = await res.json();import os, requests
res = requests.post(
f"{ORIGIN}/api/v1/store-explorer",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
json={
"search": "skincare",
"country": "US",
"sortingKey": "revenue_30d",
"sortingDirection": "desc",
"page": 1,
"pageSize": 20,
"includeWlads": 0
},
)
data = res.json(){
"data": [
{
"shopid": "glow-beauty",
"storeid": "b7963cd2df6f01b2656a02c06f5d9d58",
"domain": "glowbeauty.com",
"name": "Glow Beauty",
"monthly_visits": 412000,
"monthly_visits_historical": {
"2026-02": 380000,
"2026-03": 395000,
"2026-04": 410000,
"2026-05": 440000,
"2026-06": 425000,
"2026-07": 412000
},
"30d_rev_estimated_min": 126000,
"30d_rev_estimated_max": 204000,
"estimated_revenue": {
"daily": {
"min": 4200,
"max": 6800
},
"monthly": {
"min": 126000,
"max": 204000
}
}
}
],
"count_deferred": true,
"credits": null,
"credits_unlimited": true
}{
"success": false,
"error": "Unauthorized"
}{
"success": false,
"error": "No API credits remaining. Buy an add-on pack or wait until next monthly reset.",
"credits": {
"used": 20000,
"limit": 20000,
"remaining": 0,
"addon_remaining": 0,
"total_remaining": 0
},
"purchase": {
"url": "https://…/checkout-api-credits?credits=…"
}
}Uso tamaño de página in the JSON body (not límite — límite is not remapped here). Revenue fields on store rows are 30d_rev_estimated_min / 30d_rev_estimated_max (and nested estimated_revenue), not estimated_revenue.monthly_min. When traffic enrichment is present, prefer monthly_visits_historical (month-by-month) over a single monthly_visits snapshot.
créditos in the 200 body is the dashboard Explore Shops credit counter, not the programmatic API pool. Unlimited (Standard) returns credits: null y credits_unlimited: true — never bare -1. Programmatic metering still charges 1 API credit per call via the proxy.
Query aliases on the API route (query string): límite → tamaño de página, clasificar / ordenar por → clave de ordenación, pedido / orden de clasificación → dirección de ordenación, palabra clave / q → buscar. In a JSON body, send tamaño de página / clave de ordenación / dirección de ordenación / buscar directly — body límite is not remapped.
/api/v1/store-explorer/visual-searchFind visually similar Shopify stores from a product image.
Clave X-API on every request.Body parameters
url_de_la_imagencadenaPublic image URL, or multipart
imagenupload.paíscadena
curl -sS \
-X POST \
-H "X-API-Key: $WH_API_KEY" \
-H "Content-Type: application/json" \
"{origin}/api/v1/store-explorer/visual-search" \
-d '{"image_url":"string","country":"US"}'const res = await fetch(`${ORIGIN}/api/v1/store-explorer/visual-search`, {
method: 'POST',
headers: {
'X-API-Key': process.env.WH_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"image_url": "string",
"country": "US"
}),
});
const data = await res.json();import os, requests
res = requests.post(
f"{ORIGIN}/api/v1/store-explorer/visual-search",
headers={"X-API-Key": os.environ["WH_API_KEY"]},
json={
"image_url": "string",
"country": "US"
},
)
data = res.json(){
"data": [
{
"storeid": "glow-beauty",
"domain": "glowbeauty.com",
"store_name": "Glow Beauty",
"image_src": "https://cdn.shopify.com/…/product.jpg",
"similarity_score": 0.94,
"price": 34,
"estimated_price": 34,
"product_url": "https://glowbeauty.com/products/vitamin-c-serum",
"handle": "vitamin-c-serum",
"product_id": "8123456789012",
"rank": 1
}
],
"total": 1,
"credits": 11,
"visual_search_token": "vs_abc123opaque"
}{
"error": "Missing image upload, image_url, or visual_search_token"
}{
"success": false,
"error": "Unauthorized"
}{
"success": false,
"error": "Rate limit exceeded. Max 60 requests per minute."
}Optional Explore Shops filters (categoría, Ingresos mensuales, shopifyThemes, storeCreatedFrom / storeCreatedTo, visitor-country rules, …) apply on either route.