{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Finder With Subscriber Counts",
    "description": "YouTube Channel Finder — Find YouTube channels by keyword, topic, or niche and extract channel names, subscriber counts, video counts, descriptions, locations, categories, and channel URLs. Build targeted datasets for creator research, competitor analysis, and influencer discovery.",
    "version": "0.1",
    "x-build-id": "hTzVkdeRhdU6ODUM9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapio~youtube-channel-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapio-youtube-channel-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/scrapio~youtube-channel-finder/runs": {
      "post": {
        "operationId": "runs-sync-scrapio-youtube-channel-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/scrapio~youtube-channel-finder/run-sync": {
      "post": {
        "operationId": "run-sync-scrapio-youtube-channel-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": {
          "keywords": {
            "title": "🔎 Search Keywords",
            "type": "array",
            "description": "Search terms to discover YouTube channels (e.g. \"cooking tutorials\", \"tech reviews\"). One keyword per line. Combine with \"Channels per keyword\" to control how many channels are fetched per term.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "🔗 Direct Channel/Video URLs",
            "type": "array",
            "description": "Track specific channels directly by URL (channel or video URLs) instead of, or in addition to, keyword search.",
            "items": {
              "type": "string"
            }
          },
          "channelCount": {
            "title": "🔢 Max channels per search term",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of channels to extract for each search keyword (1-50). Higher values return more results but take longer. Note: capped at 50 per run regardless of the value entered (matches the actor's real per-keyword limit).",
            "default": 10
          },
          "searchRegion": {
            "title": "🌎 Search Region",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "DE",
              "FR",
              "JP",
              "BR",
              "MX",
              "ES",
              "IT",
              "NL",
              "PL",
              "RU",
              "KR",
              "TW"
            ],
            "type": "string",
            "description": "YouTube search region (country code). Affects which channels appear in search results.",
            "default": "US"
          },
          "language": {
            "title": "🌐 Language",
            "enum": [
              "en",
              "es",
              "de",
              "fr",
              "pt",
              "ja",
              "hi",
              "zh",
              "ko",
              "ar",
              "ru"
            ],
            "type": "string",
            "description": "Interface and result language code (e.g. en for English).",
            "default": "en"
          },
          "fromDate": {
            "title": "📅 From Date (Joined After)",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Only include channels that joined on or after this date (YYYY-MM-DD). Leave empty for no filter."
          },
          "toDate": {
            "title": "📅 To Date (Joined Before)",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Only include channels that joined on or before this date (YYYY-MM-DD). Leave empty for no filter."
          },
          "growthStoreName": {
            "title": "🗃️ Growth Snapshot Store Name",
            "type": "string",
            "description": "Name of the persistent (named) key-value store that holds each channel's last snapshot between runs. Keep the SAME name across runs to accumulate real growth. A different name starts an independent, fresh baseline.",
            "default": "youtube-channel-growth-watchlist"
          },
          "minSubscriberGrowth": {
            "title": "🔔 Minimum Subscriber Growth",
            "minimum": 0,
            "type": "integer",
            "description": "Only emit a channel whose absolute subscriber change since the last snapshot is at least this many subscribers. Example: 100 = report only channels that gained or lost ≥100 subscribers. 0 = emit all. Ignored on baseline runs (they always pass through so the next run has something to diff against).",
            "default": 0
          },
          "onlyChanged": {
            "title": "🔕 Only Changed Channels",
            "type": "boolean",
            "description": "When on, skip channels whose subscribers, views AND videos are all unchanged since the last snapshot. Useful for scheduled runs where you only want to see movers. Baseline runs always emit.",
            "default": false
          },
          "previousChannelDatasetId": {
            "title": "🗂️ Previous Run Dataset ID",
            "type": "string",
            "description": "Optional. Dataset ID of a previous run's output. When a channel appears in it, deltas are computed against that dataset instead of the named snapshot store. Leave empty to use the persistent growth store."
          },
          "maxHistory": {
            "title": "📚 History Points to Keep",
            "minimum": 0,
            "type": "integer",
            "description": "How many past snapshot points to retain per channel inside the persistent store and mirror in the output 'history' field.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "🌐 Proxy configuration",
            "type": "object",
            "description": "Optional. By default the actor runs without a proxy. Enable Apify Proxy here for higher volume or to reduce blocks. If the chosen proxy gets blocked, the actor automatically falls back to Residential proxy and continues."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}