{
  "openapi": "3.0.1",
  "info": {
    "title": "Copycat Store & Lookalike Domain Suspect Checker",
    "description": "Find possible copycat stores and lookalike domains from public CT, DNS typosquats, RDAP, homepage signals and optional BYOK search. Every result is an unverified suspect — not confirmed infringement. No auto-takedowns.",
    "version": "0.1",
    "x-build-id": "GfxGgoAZqgdwhoMfX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jwaiworks~copycat-store-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jwaiworks-copycat-store-checker",
        "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/jwaiworks~copycat-store-checker/runs": {
      "post": {
        "operationId": "runs-sync-jwaiworks-copycat-store-checker",
        "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/jwaiworks~copycat-store-checker/run-sync": {
      "post": {
        "operationId": "run-sync-jwaiworks-copycat-store-checker",
        "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",
        "required": [
          "brandName",
          "officialDomain"
        ],
        "properties": {
          "brandName": {
            "title": "Brand name",
            "type": "string",
            "description": "The brand to check for possible copycat stores and lookalike domains, for example `Acme Trail Co`. Used for Certificate Transparency search, typosquat generation and homepage text matching."
          },
          "officialDomain": {
            "title": "Official domain",
            "type": "string",
            "description": "The brand's real website domain, for example `acmetrail.example`. Excluded from results. Used as the base for TLD and lookalike generation."
          },
          "productTitles": {
            "title": "Product titles (optional)",
            "type": "array",
            "description": "A few distinctive product titles from your catalog. When a suspect site's public homepage or Shopify `/products.json` contains similar text, confidence goes up. Example: `Trail Runner`, `Summit Boot`.",
            "items": {
              "type": "string"
            }
          },
          "maxSuspects": {
            "title": "Max suspects to deliver",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Stop after this many unverified suspects are written. Users on the free Apify plan are capped at 100 per run.",
            "default": 50
          },
          "maxDomainsToCheck": {
            "title": "Max candidate domains to check",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "How many lookalike / CT / search candidates to resolve and (optionally) fetch. Each one charges the small domain-checked event. Keep this modest for cheap runs.",
            "default": 80
          },
          "includeTldSwaps": {
            "title": "Include TLD swaps (.shop, .store, .xyz, …)",
            "type": "boolean",
            "description": "Also generate brand lookalikes on common alternate TLDs such as .shop, .store, .online, .xyz, .io, .co.",
            "default": true
          },
          "fetchHomepages": {
            "title": "Fetch public homepages",
            "type": "boolean",
            "description": "For domains that resolve, fetch the public homepage once (respects robots.txt) to look for brand name, product-title text and storefront signals (Shopify, WooCommerce, …).",
            "default": true
          },
          "checkShopifyProductsJson": {
            "title": "Check Shopify /products.json when exposed",
            "type": "boolean",
            "description": "If the homepage looks like Shopify and robots.txt allows it, fetch public `/products.json` and compare titles to your product list. No cart, checkout or customer data.",
            "default": true
          },
          "searchProvider": {
            "title": "Optional BYOK search provider",
            "enum": [
              "none",
              "bing",
              "brave",
              "serpapi"
            ],
            "type": "string",
            "description": "Optional. Bring your own search API key to add indexed pages that mention the brand or product titles. The Actor works with no key using CT, DNS typosquats, RDAP and homepage checks only.",
            "default": "none"
          },
          "searchApiKey": {
            "title": "Search API key (optional, secret)",
            "type": "string",
            "description": "Your own Bing, Brave or SerpAPI key. Used only for this run, sent only to that provider's official host, never stored, logged or written to the dataset. Leave empty to skip search."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}