{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Merchant Scraper: Niche & Keyword Store Search",
    "description": "Shopify Merchant Scraper: Niche & Keyword Store Search extracts Shopify stores by niche and keyword, including store names, URLs, product details, categories, prices, contact info, social links, and merchant data. Ideal for store discovery, lead generation, competitor research, and market analysis.",
    "version": "0.1",
    "x-build-id": "8danHfSyuA0wBI8L0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/simpleapi~shopify-merchant-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-simpleapi-shopify-merchant-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/simpleapi~shopify-merchant-scraper/runs": {
      "post": {
        "operationId": "runs-sync-simpleapi-shopify-merchant-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/simpleapi~shopify-merchant-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-simpleapi-shopify-merchant-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": {
          "nicheKeywords": {
            "title": "🔍 Niche / Keyword Search Terms",
            "type": "array",
            "description": "One or more niche or product keywords (e.g. `vegan skincare`, `handmade jewelry`, `knife accessories`). Each term is used to discover NEW Shopify storefronts — no URL list needed.",
            "items": {
              "type": "string"
            }
          },
          "marketCountry": {
            "title": "🌍 Market / Country Scope",
            "enum": [
              "",
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "in"
            ],
            "type": "string",
            "description": "Optionally scope discovery to storefronts more likely to serve a specific market/country. Leave as Any/Global for the widest coverage.",
            "default": ""
          },
          "storesPerKeyword": {
            "title": "🎯 Discovered Stores Per Keyword",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many unique storefronts to discover for each niche/keyword term before moving to the next one.",
            "default": 10
          },
          "storeUrls": {
            "title": "🌐 Known Store URLs (optional)",
            "type": "array",
            "description": "Optional — add specific Shopify storefront URLs you already know (e.g. `https://kyliecosmetics.com/`) alongside anything discovered by keyword. Bulk paste, upload a list, or pipe from another actor.",
            "items": {
              "type": "string"
            }
          },
          "maxStoresToProcess": {
            "title": "📦 Max Stores To Process",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on the total number of stores (discovered + known) that will be processed in this run."
          },
          "concurrency": {
            "title": "⚡ Concurrent Store Requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many stores to process in parallel.",
            "default": 10
          },
          "requestDelay": {
            "title": "⏱️ Polite Delay Between Requests (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Small pause between requests to the same storefront, to keep crawling polite.",
            "default": 0.5
          },
          "startUrls": {
            "title": "🌐 Shopify Store URLs (legacy alias of storeUrls)",
            "type": "array",
            "description": "Legacy field name — same purpose as `storeUrls` above. Kept so inputs built for the base actor keep working unchanged.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "📦 Max stores to scrape (legacy alias of maxStoresToProcess)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Legacy field name — same purpose as `maxStoresToProcess` above. Kept so inputs built for the base actor keep working unchanged.",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Use Apify Proxy, custom proxy URLs, or no proxy for the per-store extraction requests.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}