{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Store Leads Scraper & Finder — List by Apps & Country",
    "description": "Shopify store scraper and finder: get a list of Shopify stores by country, niche, installed app or theme from 449,000+ real stores. Each lead has public e-mails, phones, socials, apps, theme and top brands. First 25 leads free, no store billed twice. A Store Leads and BuiltWith alternative.",
    "version": "0.4",
    "x-build-id": "yak2lhGFLvPskRASD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/insanedev~shopify-store-list/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-insanedev-shopify-store-list",
        "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/insanedev~shopify-store-list/runs": {
      "post": {
        "operationId": "runs-sync-insanedev-shopify-store-list",
        "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/insanedev~shopify-store-list/run-sync": {
      "post": {
        "operationId": "run-sync-insanedev-shopify-store-list",
        "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": {
          "countries": {
            "title": "Store countries",
            "type": "array",
            "description": "Two-letter country codes of the store's business address (e.g. US, GB, DE, AU). English country names such as \"United States\" work too. Empty = all countries.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords (name, description, domain)",
            "type": "array",
            "description": "Stores whose name, description or domain has a word starting with any of these, e.g. <code>coffee</code>, <code>skincare</code>, <code>pet</code> (finds \"pets\", not \"carpet\"). Japanese, Chinese and Thai keywords match anywhere in the text.",
            "items": {
              "type": "string"
            }
          },
          "apps": {
            "title": "Uses any of these apps",
            "type": "array",
            "description": "Only stores that use at least one of these apps (checked on the storefront), e.g. <code>Klaviyo</code>, <code>Recharge</code>, <code>Okendo</code>, <code>Gorgias</code>, <code>Yotpo</code>, <code>Attentive</code>. Stores checked but not matching cost a small check fee.",
            "items": {
              "type": "string"
            }
          },
          "appsMatch": {
            "title": "App match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "With several apps above: <b>any</b> = stores using at least one of them, <b>all</b> = stores using every one of them.",
            "default": "any"
          },
          "excludeApps": {
            "title": "Doesn’t use these apps",
            "type": "array",
            "description": "Skip stores where any of these apps is detected on the homepage or a product page — e.g. stores that don’t use your app yet. Apps that load only at checkout can’t be seen. Stores checked and skipped cost a small check fee.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithEmail": {
            "title": "Only stores with a public e-mail",
            "type": "boolean",
            "description": "Return only stores that publish a contact e-mail on their homepage, contact page or contact-information page. A store checked without one costs a small check fee instead of a lead.",
            "default": false
          },
          "brands": {
            "title": "Sells any of these brands",
            "type": "array",
            "description": "Only stores whose catalogue sample (first 250 products) includes these brands (vendor names). Finds stockists and resellers.",
            "items": {
              "type": "string"
            }
          },
          "themes": {
            "title": "Theme",
            "type": "array",
            "description": "Only stores on these themes, e.g. <code>Dawn</code>, <code>Impulse</code>, <code>Prestige</code>.",
            "items": {
              "type": "string"
            }
          },
          "minProducts": {
            "title": "Min products",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of published products."
          },
          "maxProducts": {
            "title": "Max products",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of published products."
          },
          "currencies": {
            "title": "Currencies",
            "type": "array",
            "description": "Three-letter currency codes (e.g. USD, EUR, GBP). The symbols $, € and £ work too.",
            "items": {
              "type": "string"
            }
          },
          "shipsTo": {
            "title": "Ships to any of",
            "type": "array",
            "description": "Two-letter country codes (or English country names) the store ships to.",
            "items": {
              "type": "string"
            }
          },
          "maxRank": {
            "title": "Only popular stores (top N sites)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep stores among the top N websites — globally (Tranco rank) or in their country by Chrome visits (Chrome UX Report buckets 1,000 / 5,000 / 10,000 / 50,000 / 100,000 / 500,000 / 1,000,000). E.g. 50000 = top 50k sites."
          },
          "addedWithinDays": {
            "title": "Added within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only stores that joined our index within this many days, e.g. 30 for new stores of the last month. The index is refreshed monthly; stores from the first build are dated 2026-09-29 to 2026-10-01."
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Skip stores whose name, description or domain has a word starting with any of these.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "popularity",
              "largestCatalog",
              "newest"
            ],
            "type": "string",
            "description": "Order of the leads: most visited stores first (popularity bucket, then Tranco rank), largest catalogues first, or newest Shopify stores first.",
            "default": "popularity"
          },
          "maxLeads": {
            "title": "Max leads",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many stores.",
            "default": 100
          },
          "onlyNewLeads": {
            "title": "Only new leads",
            "type": "boolean",
            "description": "Skip stores this Apify account already received under the history name below, so you never pay twice for the same store. Stores you already got, or that were checked and didn’t match the same app/theme/brand/e-mail filters, are never read or charged again. The history is kept in your own key-value store <code>shopify-store-leads-history</code>.",
            "default": true
          },
          "historyName": {
            "title": "History name",
            "maxLength": 100,
            "type": "string",
            "description": "Keep separate histories, e.g. one per client or campaign. A new name starts an empty list, so keep the same name to continue a list. Stores you paid for in the last 30 days under another name are delivered free if they come again; older ones are charged again. The name is stored with letters, digits and dashes: \"My leads\" becomes my-leads (upper case counts as lower case).",
            "default": "default"
          },
          "skipAllHistories": {
            "title": "Skip stores from all my histories",
            "type": "boolean",
            "description": "With <b>Only new leads</b> on, also skip stores this account received under any other history name, so a new history name never delivers a store you already have (stores you paid for in the last 30 days would come free, older ones are charged). Leave it off to keep separate lists, e.g. one per client, where the same store can go to two clients.",
            "default": false
          },
          "enrich": {
            "title": "Store details (apps, theme, socials, emails, brands, prices)",
            "type": "boolean",
            "description": "Visit each lead's storefront for its theme, apps, social profiles, public contact e-mails, top brands, product types and price range. Off = only the index fields (faster).",
            "default": true
          },
          "productPageApps": {
            "title": "Check a product page for apps",
            "type": "boolean",
            "description": "Also read one product page per store: subscription (Recharge, Skio), upsell and review widgets often load only there. More complete apps, about a quarter slower. App filters always check it when needed.",
            "default": true
          },
          "domains": {
            "title": "Look up these domains only",
            "type": "array",
            "description": "Get the lead row for specific store domains (if they are in the index).",
            "items": {
              "type": "string"
            }
          },
          "excludeDomains": {
            "title": "Skip these domains",
            "type": "array",
            "description": "Stores you already have — e.g. leads from earlier runs or your CRM. They are skipped: never read and never charged. Domains or URLs.",
            "items": {
              "type": "string"
            }
          },
          "maxStoresChecked": {
            "title": "Max stores checked",
            "minimum": 1,
            "type": "integer",
            "description": "With app, theme, brand or e-mail filters: stop after checking this many stores even if fewer leads matched.",
            "default": 2000
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}