{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Analyzer | $4/1K | Revenue, Traffic, Tech Stack",
    "description": "Most complete Shopify intelligence tool, lowest price. Analyze any store: revenue estimate, real traffic, brand age, 60+ apps, tracking IDs (GTM/GA4/FB Pixel), promo codes, dropshipper risk score, international expansion. StoreLeads ($29/mo) alternative - pay-per-use $4/1K, no API key.",
    "version": "1.0",
    "x-build-id": "rmmgXBvsq075cLXTD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apivault_labs~shopify-store-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apivault_labs-shopify-store-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/apivault_labs~shopify-store-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-apivault_labs-shopify-store-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/apivault_labs~shopify-store-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-apivault_labs-shopify-store-analyzer",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "analyze",
              "discover",
              "discover_and_analyze",
              "find_similar",
              "quick_check"
            ],
            "type": "string",
            "description": "Analyze specific store URLs, or discover stores by keyword/niche first.",
            "default": "analyze"
          },
          "seedStoreUrl": {
            "title": "Seed store (find similar)",
            "type": "string",
            "description": "In Find-similar mode: a Shopify store whose competitors you want. The Actor learns its niche from its products and returns other stores selling similar things."
          },
          "searchTerms": {
            "title": "Search terms / niches (discovery)",
            "type": "array",
            "description": "Keywords or niches to find Shopify stores for, e.g. \"organic coffee\", \"yoga mats\". Used in Discover modes. Each term is searched across the public Shopify marketplace and the real stores behind the results are returned.",
            "items": {
              "type": "string"
            }
          },
          "discoverCountry": {
            "title": "Country filter (discovery, optional)",
            "type": "string",
            "description": "Best-effort ISO-2 country filter for discovered stores, e.g. US, GB, CA, AU, DE, FR. Leave empty for worldwide."
          },
          "enrichContacts": {
            "title": "Enrich discovered stores with contacts",
            "type": "boolean",
            "description": "In Discover mode, also fetch each store's public emails, phones and social handles — turning the store list into a lead list. Adds a little time per store.",
            "default": true
          },
          "requiredApps": {
            "title": "Filter by app / tech (reverse app lookup)",
            "type": "array",
            "description": "Find stores that USE a specific app or technology, e.g. [\"Klaviyo\"], [\"Yotpo\"], [\"ReCharge\"]. In Discover modes, only stores whose detected tech stack matches are returned (others are skipped, not charged). Great for app vendors targeting stores that use a competitor. Leave empty to disable.",
            "items": {
              "type": "string"
            }
          },
          "appMatchMode": {
            "title": "App match mode",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "When multiple apps are listed: 'any' keeps stores using at least one, 'all' keeps only stores using every listed app.",
            "default": "any"
          },
          "excludeApps": {
            "title": "Exclude stores using these apps",
            "type": "array",
            "description": "Skip stores whose tech stack uses any of these apps, e.g. [\"Klaviyo\"] to find stores that do NOT already have your tool. Combine with 'requiredApps' for precise targeting (uses Y but not Z).",
            "items": {
              "type": "string"
            }
          },
          "minMonthlyVisits": {
            "title": "Min monthly visits (qualification filter)",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep analyzed stores with at least this many estimated monthly visits. 0 = no filter. Build a qualified lead list (e.g. only stores with real traffic). Requires Traffic extraction.",
            "default": 0
          },
          "minStoreHealth": {
            "title": "Min store health score (0-100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep stores with a store_health_score at or above this. 0 = no filter.",
            "default": 0
          },
          "minOpportunityScore": {
            "title": "Min opportunity score (0-100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep stores with an opportunity_score at or above this (best sales targets). 0 = no filter.",
            "default": 0
          },
          "maxStores": {
            "title": "Max stores to discover",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of unique stores to return in Discover modes (1-100).",
            "default": 50
          },
          "storeUrls": {
            "title": "Shopify Store URLs (analyze)",
            "maxItems": 100,
            "type": "array",
            "description": "Shopify store homepages (max 100 per run). Bare domains or full URLs accepted. Used in Analyze mode.",
            "items": {
              "type": "string"
            }
          },
          "conversionRate": {
            "title": "Conversion rate for revenue estimate (%)",
            "minimum": 0.1,
            "maximum": 10,
            "type": "number",
            "description": "Used in revenue formula: visits × CR × AOV. Industry default 2.5%. Fashion 1.5-2%, electronics 1%, impulse-buy 3-4%.",
            "default": 2.5
          },
          "productSampleSize": {
            "title": "Product sample size",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "How many products to sample for metrics. 0 = full catalog (hard-capped at 2000 to protect run memory). Default 250.",
            "default": 250
          },
          "reviewsToSalesMultiplier": {
            "title": "Reviews-to-orders multiplier (revenue fallback)",
            "minimum": 1,
            "maximum": 200,
            "type": "number",
            "description": "Only a fraction of buyers leave a review, so total orders are estimated as review_count × this multiplier. Used for the review-based sales estimate that works even when public traffic data is unavailable (small stores). Default 30.",
            "default": 30
          },
          "flatOutput": {
            "title": "Flat output (for spreadsheets / n8n / Zapier)",
            "type": "boolean",
            "description": "Flatten nested fields (traffic, revenue_estimate, socials…) into single underscore-joined columns, e.g. traffic_monthly_visits. Easier to map in automation tools and spreadsheets.",
            "default": false
          },
          "trackChanges": {
            "title": "Track changes between runs (competitor monitoring)",
            "type": "boolean",
            "description": "Remember each store between runs and report what changed since you last analyzed it: new/removed products, traffic & revenue moves, apps installed or removed, new tracking pixels, and promo launches (in a `changes` field). Run on a schedule to monitor competitors over time.",
            "default": true
          },
          "extractProducts": {
            "title": "Products & AOV",
            "type": "boolean",
            "description": "Product count, AOV, price range, vendors, types, image counts, top tags (niche detection), duplicate description ratio (generic-catalog signal).",
            "default": true
          },
          "extractVelocity": {
            "title": "Product velocity",
            "type": "boolean",
            "description": "New products in last 7/30/90 days, oldest product date.",
            "default": true
          },
          "extractCollections": {
            "title": "Collections",
            "type": "boolean",
            "description": "Collection count and top collections.",
            "default": true
          },
          "extractSitemap": {
            "title": "Sitemap counts",
            "type": "boolean",
            "description": "Real total pages/products/collections/blogs from sitemap.xml.",
            "default": true
          },
          "extractTraffic": {
            "title": "Traffic",
            "type": "boolean",
            "description": "Monthly visits, ranks, bounce rate, sources, top countries, keywords.",
            "default": true
          },
          "extractRevenueEstimate": {
            "title": "Revenue estimate",
            "type": "boolean",
            "description": "Monthly orders + revenue + annualized estimate. Requires extractTraffic.",
            "default": true
          },
          "extractTechStack": {
            "title": "Tech stack & tracking IDs",
            "type": "boolean",
            "description": "Detect 60+ Shopify apps (Klaviyo, Judge.me, ReCharge, Gorgias, dropshipping, payments) plus extract advertising IDs (GTM, GA4, Facebook Pixel, TikTok, Klaviyo public key, Hotjar) for brand-network mapping.",
            "default": true
          },
          "extractSocials": {
            "title": "Social links",
            "type": "boolean",
            "description": "Instagram, Facebook, Twitter, TikTok, YouTube, Pinterest, LinkedIn handles.",
            "default": true
          },
          "extractContact": {
            "title": "Contact info",
            "type": "boolean",
            "description": "Public emails and phones from homepage.",
            "default": true
          },
          "deepContactCrawl": {
            "title": "Deep contact crawl",
            "type": "boolean",
            "description": "If the homepage shows no email, also check the store's contact / about pages for a public email and phone. Only fires when the homepage has none, so stores that already expose contact info cost no extra time. Improves the best_email hit rate for lead generation.",
            "default": true
          },
          "extractShopifyMeta": {
            "title": "Shopify meta",
            "type": "boolean",
            "description": "myshopify handle, currency, locale, theme, Shopify Plus indicators, CDN store ID (sequential, lower = older store).",
            "default": true
          },
          "extractInternational": {
            "title": "International expansion",
            "type": "boolean",
            "description": "hreflang languages, currency switcher, country selector, expansion score 0-100.",
            "default": true
          },
          "extractReviewsAggregate": {
            "title": "Reviews aggregate",
            "type": "boolean",
            "description": "Schema.org aggregateRating from homepage (review widget output).",
            "default": true
          },
          "extractPromo": {
            "title": "Active promo / announcement bar",
            "type": "boolean",
            "description": "Free shipping threshold, active promo codes, announcement bar text, current discount %.",
            "default": true
          },
          "extractPolicyDetails": {
            "title": "Policy details (slower)",
            "type": "boolean",
            "description": "Fetch the store's refund & shipping policy pages to extract the returns window (days), free-returns and free-shipping signals. Off by default — adds two extra page fetches.",
            "default": false
          },
          "extractBrandAge": {
            "title": "Brand age (slower)",
            "type": "boolean",
            "description": "Earliest Wayback snapshot + earliest SSL cert → brand age in years and founding year. Off by default: these external lookups are the slowest part of a run and only a secondary signal. The CDN store ID already gives a free backup age signal.",
            "default": false
          },
          "extractDerivedSignals": {
            "title": "Derived signals",
            "type": "boolean",
            "description": "Customer segment, marketing channel mix, dropshipper risk score with reasons.",
            "default": true
          },
          "generateComparison": {
            "title": "Competitor comparison report",
            "type": "boolean",
            "description": "When analyzing 2+ stores in one run, add a single cross-store benchmarking report — rankings by traffic, revenue, AOV, discounting, international expansion and tech stack, plus shared-tech analysis and the cohort leader in each category. Included for all runs; turn off to skip the extra record.",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel stores to analyze.",
            "default": 3
          },
          "timeout": {
            "title": "Timeout (seconds)",
            "minimum": 10,
            "maximum": 180,
            "type": "integer",
            "description": "HTTP timeout per request.",
            "default": 30
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}