{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Search Scraper: Subscribers, Views, Country",
    "description": "YouTube channel finder: find YouTube channels, creators and influencers by keyword, search URL or similar channel. Each channel's record: handle, subscriber count, exact video and view counts, country, joined date, links, business e-mail flag. Filter by subscribers, country, activity. No login.",
    "version": "0.1",
    "x-build-id": "jMONcNU0VSCQ0aand"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/hyperbach~youtube-channel-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-hyperbach-youtube-channel-search-scraper",
        "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/hyperbach~youtube-channel-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-hyperbach-youtube-channel-search-scraper",
        "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/hyperbach~youtube-channel-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-hyperbach-youtube-channel-search-scraper",
        "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": {
          "searchQueries": {
            "title": "Search keywords or YouTube search URLs",
            "type": "array",
            "description": "Keywords to search YouTube's channels for, one per line: `sourdough bread`, `\"mechanical keyboard\" -review`, `#asmr`. A YouTube search URL (`youtube.com/results?search_query=…`) keeps its own sort and filters; a `/hashtag/` link is searched as the tag. A link to a text file, a CSV or a published Google Sheet with one keyword per line is read as a list. Each keyword gives one row per channel it finds, up to the max per search.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "channels": {
            "title": "Channels to look up",
            "type": "array",
            "description": "Channels you already know, for their full record: `@handle` (dots and any script work), a channel URL (`/@name`, `/channel/UC…`, `/c/name`, `/user/name`), a `UC…` id, or a video URL (the channel behind it). A list-file link works here too. A channel that does not exist is a free row that says so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "similarToChannels": {
            "title": "Find channels like these",
            "type": "array",
            "description": "Seed channels (same forms as above). For each seed: the channels it features on its home page (when it has that shelf) and the channels a search on the seed's own first 3 keywords finds, up to the max per search. Every row names its seed (`seed_channel_id`). A seed with neither gets a free row that says so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "discoveryMode": {
            "title": "Find channels by",
            "enum": [
              "channels",
              "videos",
              "both"
            ],
            "type": "string",
            "description": "`channels` reads YouTube's own channel filter (it ends by itself, and the run reports its count). `videos` reads the video results and keeps each channel once with the video that surfaced it (`source_video_id`): another, deeper set. `both` interleaves the two.",
            "default": "channels"
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "relevance",
              "views"
            ],
            "type": "string",
            "description": "YouTube's own order of the results. Rating and upload date are not offered: YouTube ignores them for channels.",
            "default": "relevance"
          },
          "maxChannelsPerQuery": {
            "title": "Max channels per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many channels each keyword, URL or seed delivers. Channels left out by your filters, repeats and channels found by an earlier search do not count. A search YouTube ends sooner says so in the run summary. Channels you list under 'Channels to look up' are all read.",
            "default": 50
          },
          "expandQueries": {
            "title": "Add autocomplete variants",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "For each keyword, also search this many of YouTube's own autocomplete suggestions (`sourdough bread` → `sourdough bread recipe`, …). Rows from a variant name it in `query` and the keyword in `expanded_from`. 0 = off.",
            "default": 0
          },
          "region": {
            "title": "Region",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "NZ",
              "IE",
              "IN",
              "PK",
              "BD",
              "PH",
              "ID",
              "MY",
              "SG",
              "TH",
              "VN",
              "JP",
              "KR",
              "TW",
              "HK",
              "DE",
              "AT",
              "CH",
              "FR",
              "BE",
              "NL",
              "ES",
              "PT",
              "IT",
              "PL",
              "CZ",
              "RO",
              "HU",
              "GR",
              "SE",
              "NO",
              "DK",
              "FI",
              "TR",
              "UA",
              "IL",
              "AE",
              "SA",
              "EG",
              "MA",
              "NG",
              "KE",
              "ZA",
              "BR",
              "MX",
              "AR",
              "CO",
              "CL",
              "PE",
              "LK",
              "KZ",
              "NP"
            ],
            "type": "string",
            "description": "The country the search is read from (YouTube's region and an exit in that country). The set of channels moves a little by region; every row carries it (`region`).",
            "default": "US"
          },
          "language": {
            "title": "Search language",
            "pattern": "^[a-z]{2,3}(-[A-Za-z]{2,4})?$",
            "type": "string",
            "description": "YouTube's interface language for the search (`en`, `de`, `ja`, `pt-BR`). It changes the results for some local keywords. Counts and dates are always delivered as numbers and ISO dates.",
            "default": "en"
          },
          "minSubscribers": {
            "title": "Min subscribers",
            "minimum": 0,
            "maximum": 10000000000,
            "type": "integer",
            "description": "Only channels with at least this many subscribers (YouTube's rounded count, e.g. 32.3K = 32,300). A channel that shows no count is left out when a subscriber limit is set. 0 = no limit.",
            "default": 0
          },
          "maxSubscribers": {
            "title": "Max subscribers",
            "minimum": 0,
            "maximum": 10000000000,
            "type": "integer",
            "description": "Only channels with at most this many subscribers. 0 = no limit.",
            "default": 0
          },
          "minVideos": {
            "title": "Min videos",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only channels with at least this many public videos (the exact count). 0 = no limit.",
            "default": 0
          },
          "maxVideos": {
            "title": "Max videos",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only channels with at most this many public videos. 0 = no limit.",
            "default": 0
          },
          "countries": {
            "title": "Channel countries",
            "type": "array",
            "description": "Only channels whose owner set one of these countries (two-letter codes: `US`, `GB`, `DE`). Many channels set none; they are left out when this is set. Empty = any country.",
            "items": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "default": []
          },
          "verifiedOnly": {
            "title": "Verified channels only",
            "type": "boolean",
            "description": "Only channels with YouTube's verified badge.",
            "default": false
          },
          "onlyWithBusinessEmail": {
            "title": "Only channels with a business e-mail button",
            "type": "boolean",
            "description": "Only channels whose About panel shows YouTube's 'View email address' button (`has_business_email`). The address itself is behind a sign-in and a captcha and is not read.",
            "default": false
          },
          "joinedAfter": {
            "title": "Joined on or after",
            "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
            "type": "string",
            "description": "Only channels created on or after this date, `YYYY-MM-DD`. Empty = no limit.",
            "default": ""
          },
          "joinedBefore": {
            "title": "Joined on or before",
            "pattern": "^([0-9]{4}-[0-9]{2}-[0-9]{2})?$",
            "type": "string",
            "description": "Only channels created on or before this date, `YYYY-MM-DD`. Empty = no limit.",
            "default": ""
          },
          "activeWithinDays": {
            "title": "Uploaded within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only channels whose latest long-form video is at most this many days old (read from the channel's Videos tab; one more call a channel). A channel with only Shorts or no video has no dated upload and is left out. 0 = off.",
            "default": 0
          },
          "excludeChannels": {
            "title": "Exclude channels",
            "type": "array",
            "description": "Channels never to deliver (same forms as 'Channels to look up'), e.g. the ones you already have. The first 1,000 are used and the rest are ignored. To skip more across runs, use `onlyNew`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "recentVideos": {
            "title": "Recent videos per channel",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Add this many of the channel's latest long-form videos to each row (`recent_videos`: id, title, views, age), with the last upload's age and the uploads in the last 30 days. One more call a channel. 0 = off.",
            "default": 0
          },
          "onlyNew": {
            "title": "Only new channels",
            "type": "boolean",
            "description": "Skip channels this task delivered in an earlier run: run a search daily and get only the channels that are new to you. Turns the memory on.",
            "default": false
          },
          "stateStoreName": {
            "title": "Memory name",
            "pattern": "^([A-Za-z0-9._-]{1,100})?$",
            "type": "string",
            "description": "Name of the memory between runs. Empty = derived from your searches and channels, so the same task always meets its own memory.",
            "default": ""
          },
          "maxItems": {
            "title": "Max channels in total",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "The most channels this run delivers (and charges), over all searches. 0 = no limit. Free rows (not found, no results) do not count.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}