{
  "openapi": "3.0.1",
  "info": {
    "title": "Company Lookalike Finder",
    "description": "Find similar companies from 1 to 10 seed domains. A ranked lookalike list for prospecting and account list building, each match with the source page that proves it. No LinkedIn, no API key, pay per result.",
    "version": "1.0",
    "x-build-id": "OdGEhmxygOkbdZApB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cloudastra-technologies~company-lookalike-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cloudastra-technologies-company-lookalike-finder",
        "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/cloudastra-technologies~company-lookalike-finder/runs": {
      "post": {
        "operationId": "runs-sync-cloudastra-technologies-company-lookalike-finder",
        "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/cloudastra-technologies~company-lookalike-finder/run-sync": {
      "post": {
        "operationId": "run-sync-cloudastra-technologies-company-lookalike-finder",
        "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": [
          "seedDomains"
        ],
        "properties": {
          "seedDomains": {
            "title": "Seed company domains",
            "minItems": 1,
            "maxItems": 10,
            "uniqueItems": true,
            "type": "array",
            "description": "The companies you want more of. One is enough to run, but three to five is where this works best: with a single seed the scores run lower and the gap between a real match and an unrelated company narrows, and the run log says so when it happens. Pick companies you would put on the same shortlist, not just companies you like.",
            "items": {
              "type": "string"
            }
          },
          "candidateDomains": {
            "title": "Score my own list instead of searching",
            "maxItems": 5000,
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Paste the companies you want ranked, and this actor will not search at all. Every domain here is read and scored against your seed companies, and you get them back ranked, with the same evidence and the same filters. Use it when you already have the list: a trade show export, a conference attendee list, a pull from Registry Lead Finder, or your own CRM. Leave it empty and the actor goes looking for candidates itself, which is the normal mode. Setting this turns the search off, so you are only ever charged for companies you named. Up to 5,000 domains per run; split a longer list across runs. In preview mode the first 25 are scored.",
            "items": {
              "type": "string"
            }
          },
          "candidateDomainsDataset": {
            "title": "Score a whole list from a dataset",
            "type": "string",
            "description": "Optional. The same thing as the field above, for a list too long to paste. Give the ID of an Apify dataset whose items carry a domain, website or url field, and every company in it is scored against your seeds. Run a messy export through Lead List Cleaner first and paste that run's dataset ID here. Use this field or the one above, not both. Up to 5,000 rows per run. In preview mode the first 25 are scored."
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many companies to return, ranked best first. You are charged per result returned, so this is also your spend cap. Larger runs are cheaper per company because the search work is shared across the whole run.",
            "default": 100
          },
          "countries": {
            "title": "Restrict to countries",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. ISO 3166-1 alpha-2 codes, for example GB, US, DE. Leave empty to search worldwide. A company is kept if its domain is a country domain (.co.uk) or its site states a location in one of your countries. Read the Limitations section of the README before relying on this: a .com with no stated location cannot be placed, and is dropped when you set this filter.",
            "items": {
              "type": "string"
            }
          },
          "excludeDomains": {
            "title": "Exclude domains",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional. Companies you already know about, such as existing customers or a list you have already worked. These never appear in the output and you are never charged for them. Your seed domains are excluded automatically.",
            "items": {
              "type": "string"
            }
          },
          "excludeDomainsDataset": {
            "title": "Exclude a whole customer list",
            "type": "string",
            "description": "Optional. The ID of an Apify dataset holding companies you already have, so none of them come back as a result. Run your customer list through Lead List Cleaner and paste that run's dataset ID here: it turns a messy export into clean domains, which is exactly what this needs. Any dataset works as long as its items carry a domain, website or url field. Excluded companies are dropped before anything is fetched, so you are never charged for them."
          },
          "requiredTerms": {
            "title": "Must mention",
            "type": "array",
            "description": "Optional. Only return companies whose own website mentions all of these. Write them the way a company would: payment, direct debit, invoicing. This is a plain text match against the page we read, so you can click the homepage on any row and check it yourself. Companies dropped this way are counted in the run log so you can tell a strict filter from a bad seed set.",
            "items": {
              "type": "string"
            }
          },
          "excludeTerms": {
            "title": "Must not mention",
            "type": "array",
            "description": "Optional. Drop companies whose website mentions any of these. Useful for cutting a neighbouring industry out of the results: an agency that resells what your seeds build will read as similar until you exclude consulting.",
            "items": {
              "type": "string"
            }
          },
          "minSimilarity": {
            "title": "Minimum similarity score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Optional. Drop any company scoring below this, from 0 to 100. Default 70. Above 70 roughly eight rows in ten are genuinely in your seeds' business; between 50 and 69 it is mixed, and those rows are listed unbilled in the nearMisses output so you can see what the cut removed. Lower it to 50 for reach in industries where close competitors score in the fifties, to 1 to see everything we scored, and to 0 to also see parked domains and directories. Companies dropped by this filter are never charged, and the run tells you how many it removed.",
            "default": 70
          },
          "preview": {
            "title": "Preview mode (small trial run)",
            "type": "boolean",
            "description": "Judge the quality on your own seed companies before committing. Caps the run at 25 results, so a trial costs about $0.20 instead of a full run. Same engine, same evidence, just fewer rows. Turn it off for a full run.",
            "default": false
          },
          "expandFromResults": {
            "title": "Widen the search",
            "type": "boolean",
            "description": "Widens the search from the strongest matches found, still scored against your original seeds. Roughly doubles the companies considered and adds a few minutes to the run. Off in preview mode.",
            "default": true
          },
          "shareOutcomes": {
            "title": "Share run data with CloudAstra",
            "type": "boolean",
            "description": "When on, the inputs and outputs of this run are kept by CloudAstra, the maker of this actor, and used to enhance the offering. Turn it off to opt out.",
            "default": true
          },
          "maxSearches": {
            "title": "Search limit",
            "minimum": 1,
            "maximum": 120,
            "type": "integer",
            "description": "Optional. Stop searching after this many searches. The default shown is the most this actor will ever run, and you can only lower it. Reaching the limit is not an error: you get the companies found up to that point, and you are charged only for those.",
            "default": 120
          },
          "maxPageFetches": {
            "title": "Page fetch limit",
            "minimum": 1,
            "maximum": 15000,
            "type": "integer",
            "description": "Optional. Stop after reading this many web pages. The actual limit for your run is also scaled to the number of results you asked for, so a small run stops well below this number. Reaching it returns what was found so far.",
            "default": 15000
          },
          "maxRunSeconds": {
            "title": "Time limit",
            "minimum": 30,
            "maximum": 3300,
            "type": "integer",
            "description": "Optional. Stop after this many seconds and return what has been found. Preview runs stop after 600 seconds regardless, so a trial always finishes quickly.",
            "default": 3300
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}