{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Search Scraper",
    "description": "YouTube channel search scraper: find YouTube channels and creators by keyword and get one row per channel with subscribers, video and view counts, country, join date, links, social profiles, keywords and banner. Filter by subscribers, videos, views, country and verification. No login, no API key.",
    "version": "0.1",
    "x-build-id": "K9gAONI4l7IsXcWA6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deepmine~youtube-channel-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deepmine-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/deepmine~youtube-channel-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-deepmine-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/deepmine~youtube-channel-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-deepmine-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 terms",
            "type": "array",
            "description": "Topics, niches or products to find channels for, one per line, as you'd type them in YouTube's search box (e.g. coffee roasting). YouTube search links work too. Each channel is saved and charged once per run, even when several terms find it.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "💯 Channels per search term",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "The most channels to save for each search term (100 when empty). Channels your filters leave out don't count. YouTube lists up to a few hundred channels per term."
          },
          "discoveryMode": {
            "title": "🧭 Find channels in",
            "enum": [
              "both",
              "channelFilter",
              "videoResults",
              "channels",
              "videos"
            ],
            "type": "string",
            "description": "Where to look: YouTube's channel results (its Channels filter), the creators behind the video results, or both, merged result by result. Each row says which list found it, its rank there and, from video results, the video.",
            "default": "both"
          },
          "minSubscribers": {
            "title": "👥 Min subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only channels with at least this many subscribers, e.g. 10000. Channels that hide their count are left out when a subscriber limit is set. Empty = no limit."
          },
          "maxSubscribers": {
            "title": "👥 Max subscribers",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only channels with at most this many subscribers, to find smaller creators, e.g. 100000. Empty = no limit."
          },
          "minVideos": {
            "title": "🎬 Min videos",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only channels with at least this many public videos, e.g. 20. Empty = no limit."
          },
          "maxVideos": {
            "title": "🎬 Max videos",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only channels with at most this many public videos. Empty = no limit."
          },
          "minViews": {
            "title": "👀 Min total views",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only channels with at least this many views in total, e.g. 1000000. Empty = no limit."
          },
          "maxViews": {
            "title": "👀 Max total views",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only channels with at most this many views in total. Empty = no limit."
          },
          "verifiedOnly": {
            "title": "✔️ Verified channels only",
            "type": "boolean",
            "description": "Keep only channels with YouTube's verified or official artist badge.",
            "default": false
          },
          "onlyWithBusinessEmail": {
            "title": "📧 Only channels with a business email",
            "type": "boolean",
            "description": "Keep only channels that list a business email on their About panel (hasBusinessEmail). YouTube shows the address itself only to signed-in viewers.",
            "default": false
          },
          "channelCountries": {
            "title": "📍 Channel countries",
            "type": "array",
            "description": "Keep only channels whose About panel shows one of these countries: codes or English names, e.g. US, GB, Germany. Channels that show no country are left out. Empty = any country.",
            "items": {
              "type": "string"
            }
          },
          "joinedAfter": {
            "title": "📅 Joined YouTube after",
            "type": "string",
            "description": "Keep only channels created on or after this date, or within a period such as 2 years. Empty = any date."
          },
          "joinedBefore": {
            "title": "📅 Joined YouTube before",
            "type": "string",
            "description": "Keep only channels created before this date (or longer ago than a period such as 5 years). Empty = any date."
          },
          "activeWithinDays": {
            "title": "🆕 Uploaded within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only channels whose newest upload (video, Short or stream) is at most this many days old, e.g. 30 for active creators. Channels with no upload are left out. Empty or 0 = no limit."
          },
          "excludedChannels": {
            "title": "🚫 Leave out these channels",
            "type": "array",
            "description": "Channels you already know: links, @handles or UC... ids, e.g. https://www.youtube.com/@MrBeast.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "🚫 Leave out channels mentioning",
            "type": "array",
            "description": "Words that rule a channel out when its name, handle, description or keywords contain them, e.g. gaming.",
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort YouTube's results by",
            "enum": [
              "relevance",
              "popularity",
              "views"
            ],
            "type": "string",
            "description": "YouTube's own order for both result lists: relevance, or popularity.",
            "default": "relevance"
          },
          "uploadDate": {
            "title": "Video results uploaded",
            "enum": [
              "hour",
              "today",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Find creators by their recent videos: video results uploaded within this time (the channel results aren't filtered)."
          },
          "country": {
            "title": "🌍 Search country",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Search as from this country: a two-letter code such as US, GB, IN, DE, BR (US when empty). YouTube ranks results by country."
          },
          "language": {
            "title": "🗣️ Search language",
            "pattern": "^[A-Za-z]{2,3}([-_][A-Za-z]{2,4})?$",
            "type": "string",
            "description": "Search in this language: a code such as en, es, pt, de, ja, or pt-BR (en when empty)."
          },
          "expandQueries": {
            "title": "➕ Also search YouTube's suggestions",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "For each search term, also search this many of YouTube's own autocomplete suggestions (coffee roasting → coffee roasting at home, coffee roasting business...). Their rows name the suggestion in searchQuery and your term in input. 0 = off.",
            "default": 0
          },
          "maxTotalResults": {
            "title": "Max channels in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many channels across all search terms. Empty or 0 = no limit (each term stops at its own maximum)."
          },
          "recentActivity": {
            "title": "🆕 Recent activity",
            "type": "boolean",
            "description": "Read each channel's newest uploads (its RSS feed): when it last uploaded, uploads in the last 30 days, the recent uploads' average views and the exact time the channel was created. Included in the price.",
            "default": true
          },
          "recentVideos": {
            "title": "🎬 Recent videos per channel",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "List this many of the channel's newest uploads in each row (links, titles and dates), up to 15. 0 = none.",
            "default": 0
          },
          "onlyNew": {
            "title": "🔁 Only channels new to this task",
            "type": "boolean",
            "description": "Skip channels earlier runs with the same search terms delivered: run the same search daily and get only the channels you don't have yet (skipped channels are free). The memory is a key-value store in your account.",
            "default": false
          },
          "stateStoreName": {
            "title": "🔁 Memory name",
            "type": "string",
            "description": "Name of the key-value store that remembers delivered channels (onlyNew). Empty = derived from your search terms and channels, so the same task always meets its own memory; set a name to share one memory between tasks."
          },
          "startUrls": {
            "title": "🔗 YouTube search links or channels",
            "type": "array",
            "description": "Search result links (youtube.com/results?search_query=..., kept with their filters) or channel links, @handles and UC... ids to look up one channel each.",
            "items": {
              "type": "string"
            }
          },
          "similarToChannels": {
            "title": "🧲 Find channels similar to",
            "type": "array",
            "description": "Channel links, @handles or UC... ids (seed channels). For each seed: the channels it features on its home page, then the creators of videos on its topics (its own keywords, or what its newest videos are about), up to 'Channels per search term' per seed. The same filters apply; each row names the seed it's similar to, and a channel is saved once however many seeds find it. The seeds themselves aren't saved.",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave as is: Apify's datacenter proxy works for every call.",
            "default": {
              "useApifyProxy": true
            }
          },
          "query": {
            "title": "Search term (other Actors' inputs)",
            "type": "string",
            "description": "One search term (query)."
          },
          "maxChannelsPerSearchTerm": {
            "title": "Channels per term (other Actors' inputs)",
            "type": "integer",
            "description": "The same as maxResults (maxChannelsPerSearchTerm, maxResultsPerQuery)."
          },
          "maxResultsPerQuery": {
            "title": "Channels per term (other Actors' inputs)",
            "type": "integer",
            "description": "The same as maxResults."
          },
          "countryHint": {
            "title": "Country (other Actors' inputs)",
            "type": "string",
            "description": "The same as country (countryHint, regionCode)."
          },
          "languageHint": {
            "title": "Language (other Actors' inputs)",
            "type": "string",
            "description": "The same as language (languageHint)."
          },
          "dateFrom": {
            "title": "Joined after (other Actors' inputs)",
            "type": "string",
            "description": "The same as joinedAfter."
          },
          "dateTo": {
            "title": "Joined before (other Actors' inputs)",
            "type": "string",
            "description": "The same as joinedBefore."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}