{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Scraper — Subscribers, Links & All Videos",
    "description": "Scrape YouTube channels without an API key: subscribers, total views, video count, about text, join date, website and social links, plus the channel's videos, Shorts and live streams (newest, popular or oldest first). Find channels by keyword. From US$0.90 per 1,000 videos.",
    "version": "0.1",
    "x-build-id": "8aclObdcUpuphl5VT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fabrikit~youtube-channel-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fabrikit-youtube-channel-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/fabrikit~youtube-channel-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fabrikit-youtube-channel-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/fabrikit~youtube-channel-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fabrikit-youtube-channel-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": {
          "channels": {
            "title": "Channels",
            "type": "array",
            "description": "YouTube channels to scrape, one per line: a channel link (`https://www.youtube.com/@NASA`, `/channel/UC…`, `/c/…`, `/user/…`; links to a tab such as `/videos` work too), a bare `@handle`, or a `UC…` channel ID. Video and playlist links are skipped.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Find channels by keyword (optional)",
            "type": "array",
            "description": "Search YouTube for channels that match each keyword (for example `space agency` or `vegan recipes`) and scrape the top matches like any other channel. Leave empty if you already know the channels.",
            "items": {
              "type": "string"
            }
          },
          "maxChannelsPerSearch": {
            "title": "Channels per keyword",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many matching channels to take from each keyword search, in YouTube's relevance order.",
            "default": 5
          },
          "contentTabs": {
            "title": "Channel tabs to read",
            "type": "array",
            "description": "Which lists of each channel to collect: regular uploads (Videos tab), Shorts, and live streams (Live tab: upcoming, live now and past broadcasts). A channel without one of these tabs simply skips it.",
            "items": {
              "type": "string",
              "enum": [
                "videos",
                "shorts",
                "streams"
              ],
              "enumTitles": [
                "Videos",
                "Shorts",
                "Live streams"
              ]
            },
            "default": [
              "videos"
            ]
          },
          "sortVideosBy": {
            "title": "Order",
            "enum": [
              "latest",
              "popular",
              "oldest"
            ],
            "type": "string",
            "description": "The order the channel itself offers on each tab: newest first, most viewed first, or oldest first. Use Popular to get a channel's all-time hits in a short run. Small tabs without these options are read newest first.",
            "default": "latest"
          },
          "maxVideosPerTab": {
            "title": "Videos per tab",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum rows from each selected tab of each channel. With Videos + Shorts and 20 you get up to 20 uploads and 20 Shorts per channel. Set 0 to get only the channel profile rows (no videos).",
            "default": 30
          },
          "publishedWithinDays": {
            "title": "Only videos from the last N days",
            "minimum": 1,
            "maximum": 36500,
            "type": "integer",
            "description": "Optional. Keep only videos and past streams published in the last N days; each tab is read newest first and stops at the first older item. YouTube shows relative dates such as \"3 weeks ago\", so the cut-off is approximate. Shorts carry no date in the channel feed and are not filtered. Leave empty for no date filter."
          },
          "maxItems": {
            "title": "Max videos in total",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on video rows for the whole run (all channels and tabs together). The run stops when it is reached. Channel profile rows are not counted.",
            "default": 1000
          },
          "includeChannelProfile": {
            "title": "Save a channel profile row",
            "type": "boolean",
            "description": "Save one row per channel with subscribers, total views, video count, about text, join date, country, website and social links, avatar, banner and verification badge. Billed as one `channel-profile` event per channel.",
            "default": true
          },
          "region": {
            "title": "Country",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "PL",
              "TR",
              "JP",
              "KR",
              "ID",
              "BR",
              "MX",
              "AR",
              "CL",
              "CO"
            ],
            "type": "string",
            "description": "Country YouTube uses for the request, and the country of the residential proxy if the run has to switch to one. Numbers and dates are always read from the English interface.",
            "default": "US"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy by default. If YouTube answers with blocks twice in a row, the run moves to Apify residential proxies for the rest of the run on its own.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}