Documentos
Ctrl+K Buscar Alt+[Alt+] Guías
Obtener clave API

API

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.

PUBLICAR/api/v1/store-explorer

Search Shopify stores. Body matches the Explore Shops UI (form or JSON keys).

Send Clave X-API on every request.

Body parameters

  • buscarcadena
  • paíscadena

    Merchant country ISO2. Omit, empty, or Todo = no country filter.

  • clave de ordenacióncadena
    Default: ingresos_30d
  • dirección de ordenacióncadena
    Default: descValues: desc asc
  • páginaentero
    Default: 1
  • tamaño de páginaentero
    Default: 20
  • includeWladsentero

    Set 0 to skip Meta ad enrichment.

Solicitud
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()
Respuesta
{
    "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ímitelí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ímitetamaño de página, clasificar / ordenar porclave de ordenación, pedido / orden de clasificacióndirección de ordenación, palabra clave / qbuscar. 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.

PUBLICAR/api/v1/store-explorer/visual-search

Find visually similar Shopify stores from a product image.

Send Clave X-API on every request.

Body parameters

  • url_de_la_imagencadena

    Public image URL, or multipart imagen upload.

  • paíscadena
Solicitud
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()
Respuesta
{
    "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.

Related