{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Leads Scraper: Emails, Apps, Products — No Login",
    "description": "Shopify store leads from domains, a CSV/Google Sheet or keyword discovery: emails, phones, socials, theme, apps and pixels, payment methods, product count, price range, store age and status. Products mode returns the full catalog of any store. No login or cookies. MCP-ready for AI agents.",
    "version": "1.0",
    "x-build-id": "uUZ8FBDzWCzUbuSO6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fortuitous_pirate~shopify-store-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fortuitous_pirate-shopify-store-scraper",
        "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/fortuitous_pirate~shopify-store-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fortuitous_pirate-shopify-store-scraper",
        "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/fortuitous_pirate~shopify-store-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fortuitous_pirate-shopify-store-scraper",
        "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": "What to return",
            "enum": [
              "leads",
              "products"
            ],
            "type": "string",
            "description": "Leads: one row per store with contacts, socials, theme, apps, payments and catalog stats. Products: one row per product (or per variant) from each store's public catalog. Left empty: leads when keywords are given or nothing is given (built-in sample), products when only store URLs are given (legacy behaviour)."
          },
          "domains": {
            "title": "Store domains or URLs",
            "type": "array",
            "description": "One per line: any page of a Shopify store (allbirds.com, https://www.gymshark.com/collections/sale, brand.myshopify.com). Non-Shopify sites are reported as not_shopify and not charged.",
            "items": {
              "type": "string"
            }
          },
          "listUrl": {
            "title": "Import a list (CSV, TXT or Google Sheet link)",
            "type": "string",
            "description": "Link to a CSV/TXT file or a Google Sheet shared as 'anyone with the link'. The first column of each row is read; a header row like 'domain' is skipped. Use it for thousands of domains."
          },
          "discover": {
            "title": "Find stores by keyword or niche",
            "type": "array",
            "description": "Product keywords or niches (organic coffee, yoga mats, dog treats). Stores are found through Shopify's public Shop search and added to the domain list. Each keyword yields roughly 10–50 distinct stores after automatic query expansion; use Max stores to discover to size the run.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Leads mode: maximum lead rows in the run. Products mode: maximum products per store.",
            "default": 10
          },
          "maxStores": {
            "title": "Max stores to discover",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop keyword discovery after this many distinct stores (in leads mode the lower of this and Max results applies).",
            "default": 20
          },
          "countries": {
            "title": "Store countries",
            "type": "array",
            "description": "Keep only stores whose Shopify business address is in these countries (ISO-2 codes: US, GB, CA, AU, DE...). Filtered rows are not charged.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithEmail": {
            "title": "Only stores with a public email",
            "type": "boolean",
            "description": "Skip stores where no email address was found on the home, contact or contact-information page.",
            "default": false
          },
          "requiredApps": {
            "title": "Uses any of these apps",
            "type": "array",
            "description": "Keep only stores where at least one of these apps or pixels is detected, e.g. Klaviyo, Yotpo, Recharge, Gorgias, Meta Pixel. Case-insensitive substring match on the detected names.",
            "items": {
              "type": "string"
            }
          },
          "excludeApps": {
            "title": "Does not use these apps",
            "type": "array",
            "description": "Skip stores where any of these apps or pixels is detected (find stores that do not have your app yet).",
            "items": {
              "type": "string"
            }
          },
          "minProducts": {
            "title": "Min published products",
            "minimum": 0,
            "type": "integer",
            "description": "Skip stores with fewer published products (0 = no filter).",
            "default": 0
          },
          "maxProducts": {
            "title": "Max published products",
            "minimum": 0,
            "type": "integer",
            "description": "Skip stores with more published products (0 = no filter).",
            "default": 0
          },
          "onlyNewLeads": {
            "title": "Only new leads",
            "type": "boolean",
            "description": "Remember every store delivered under the lead list name below and skip it on later runs, so a scheduled run only returns stores you have not paid for yet.",
            "default": false
          },
          "leadListName": {
            "title": "Lead list name",
            "type": "string",
            "description": "History name for Only new leads. Use one per client or campaign.",
            "default": "default"
          },
          "collection": {
            "title": "Collection handle (products mode)",
            "type": "string",
            "description": "Only products in this collection, e.g. 'mens' or 'sale'. Leave empty for the whole catalog."
          },
          "includeVariants": {
            "title": "Include variants",
            "type": "boolean",
            "description": "Nest every variant (size, colour, SKU, price, stock) inside the product row.",
            "default": true
          },
          "oneRowPerVariant": {
            "title": "One row per variant",
            "type": "boolean",
            "description": "On: one row per variant with the product fields repeated — best for price monitoring and spreadsheets.",
            "default": false
          },
          "onlyAvailable": {
            "title": "In-stock products only",
            "type": "boolean",
            "description": "Skip products with no purchasable variant.",
            "default": false
          },
          "concurrency": {
            "title": "Stores in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many stores are processed at the same time (1–10).",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Stores and Shopify's Shop search answer without a proxy; use residential only for stores that return 403."
          },
          "storeUrls": {
            "title": "Store URLs (legacy)",
            "type": "array",
            "description": "Same as Store domains; kept for existing integrations.",
            "items": {
              "type": "string"
            }
          },
          "searchQuery": {
            "title": "Search query (legacy)",
            "type": "string",
            "description": "Same as one keyword in 'Find stores by keyword'; kept for integrations."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}