{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Similar Channels Finder - Lookalike Creators",
    "description": "For influencer marketers and agencies: YouTube channels similar to a seed channel, with id, handle, subscribers, country and the videos they appeared next to. For @mkbhd, Mrwhosetheboss sat next to 5 of 5 videos read in 4 of 4 runs. Shortlist creators from an @handle, URL or channel id.",
    "version": "0.1",
    "x-build-id": "guUux3s1MHp7sM5kt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~youtube-similar-channels-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-youtube-similar-channels-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/neverempty~youtube-similar-channels-finder/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-youtube-similar-channels-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/neverempty~youtube-similar-channels-finder/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-youtube-similar-channels-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",
        "properties": {
          "channels": {
            "title": "Seed YouTube channels",
            "type": "array",
            "description": "Channels to find lookalikes for: an @handle (@mkbhd), a channel URL (https://www.youtube.com/@mkbhd, /channel/UC..., /c/..., /user/...) or the channel id itself (UC...). One per line; commas and spaces also separate entries. A repeated channel is read and charged once and the repeat gets a free 'duplicate' row. Video links are not accepted: give the channel. If you leave this field out, the example channel is read. An empty list is rejected. Up to 200 channels per run.",
            "items": {
              "type": "string"
            }
          },
          "videosPerChannel": {
            "title": "Videos to read per seed channel",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many of the seed channel's latest long-form videos (from its Videos tab, newest first) are opened. The channels YouTube shows in the related-videos panel next to them are counted. More videos give steadier results and more candidates; each video is one extra page request. The Videos tab shows about 30 videos without scrolling, so 30 is the highest value.",
            "default": 5
          },
          "maxSimilarChannels": {
            "title": "Maximum similar channels per seed channel",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "At most this many similar channels are returned for each seed channel, best-ranked first (ranked by how many of the seed's videos they appeared next to, then by how often, then by how high in the panel).",
            "default": 20
          },
          "minSourceVideos": {
            "title": "Only channels that appeared next to at least this many videos",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "1 returns every channel seen in the related panels. Raise it (for example to 2 or 3 with 5 videos read) to keep only channels YouTube recommends consistently next to the seed's videos. It cannot be larger than videosPerChannel.",
            "default": 1
          },
          "includeChannelDetails": {
            "title": "Add subscriber count, video count, country and description",
            "type": "boolean",
            "description": "On = each returned channel's public About page is read (one request per returned channel) for its subscriber count (rounded, as YouTube shows it), video count, total views, country, join date, verified badge and description. Off = faster; those fields are null. Required for the subscriber filters.",
            "default": true
          },
          "minSubscribers": {
            "title": "Minimum subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip similar channels whose displayed subscriber count is below this number. Skipped channels are not returned or charged. A channel whose count could not be read is kept, not guessed. Needs includeChannelDetails on."
          },
          "maxSubscribers": {
            "title": "Maximum subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip similar channels whose displayed subscriber count is above this number (for example 100000 to find micro-influencers). Skipped channels are not returned or charged. A channel whose count could not be read is kept. Needs includeChannelDetails on."
          },
          "maxResults": {
            "title": "Maximum rows in total",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Reading stops once this many similar-channel rows have been returned across all seed channels, and a free row says what was not returned because of it.",
            "default": 1000
          },
          "useProxy": {
            "title": "Use a proxy if YouTube answers with a bot check",
            "type": "boolean",
            "description": "Every page is requested directly first. Only if YouTube answers a page with a bot check, an error or no response is that page retried through a proxy session (datacenter first, then residential). With it off, that answer is retried directly and then returned as a free 'blocked' row.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}