{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Scraper - Creator & Competitor Research",
    "description": "Research YouTube creators and competitors: public channel stats, videos, Shorts, live streams, playlists and posts. US agencies can export CSV for shortlists and content comparisons. Detailed mode adds available public links and engagement. No API key, private analytics or personal emails.",
    "version": "1.7",
    "x-build-id": "pZHkDlBr7VmvfcVIs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fascinating_lentil~youtube-channel-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fascinating_lentil-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/fascinating_lentil~youtube-channel-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fascinating_lentil-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/fascinating_lentil~youtube-channel-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fascinating_lentil-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": {
          "channelUrls": {
            "title": "Channel URLs",
            "maxItems": 50,
            "type": "array",
            "description": "YouTube channel URLs or @handles to scrape, for example https://www.youtube.com/@mkbhd or @mkbhd.",
            "default": [
              "https://www.youtube.com/@mkbhd"
            ],
            "items": {
              "type": "string"
            }
          },
          "searchKeywords": {
            "title": "Search Keywords",
            "maxItems": 10,
            "type": "array",
            "description": "Optional keywords used to find public YouTube channels. Search results vary by region and ranking.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Scrape Mode",
            "enum": [
              "fast",
              "detailed"
            ],
            "type": "string",
            "description": "Fast reads channel video grids and returns public channel-tab links with minimal requests. Detailed also reads About pages and selected video pages for total views, join date, country, websites, classified social profiles, likes, descriptions, tags, and category. Email addresses are not collected.",
            "default": "fast"
          },
          "maxChannels": {
            "title": "Max Channels from Search",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of channels to scrape from each search keyword. Detailed mode allows at most 10 channels total per run.",
            "default": 1
          },
          "maxDetailedVideosPerChannel": {
            "title": "Videos to Enrich Per Channel",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Detailed mode only: number of saved video rows whose individual pages are read for exact views, likes, descriptions, tags, category, and publish date.",
            "default": 1
          },
          "maxVideosPerChannel": {
            "title": "Max Videos Per Channel",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum public video rows to save per channel from the inspected Videos pages. maxPagesPerSection and maxRequestsPerChannel bound collection; fewer rows may be available.",
            "default": 1
          },
          "publishedAfter": {
            "title": "Published On or After",
            "type": "string",
            "description": "Optional inclusive lower publication boundary for videos, Shorts, live streams and community posts. Use an ISO date such as 2026-10-01 or a timestamp with a timezone such as 2026-10-01T12:00:00Z. A date alone starts at 00:00:00 UTC. Unknown dates and relative ages that overlap a boundary remain in output with uncertainty."
          },
          "publishedBefore": {
            "title": "Published On or Before",
            "type": "string",
            "description": "Optional inclusive upper publication boundary for videos, Shorts, live streams and community posts. Use an ISO date or a timestamp with a timezone. A date alone includes that entire UTC day, through 23:59:59.999. Must be on or after publishedAfter. Unknown dates and relative ages that overlap a boundary remain in output with uncertainty."
          },
          "maxPagesPerSection": {
            "title": "Max Pages Per Content Tab",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Maximum public pages to inspect per selected content tab, including its first loaded page. Additional pages use bounded continuation requests when available. The default inspects one page per selected tab; fewer rows may be available.",
            "default": 1
          },
          "maxRequestsPerChannel": {
            "title": "Max HTTP Attempts Per Channel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum HTTP attempts per channel, including its initial page, content tabs, About, video detail/player requests, continuations and retries. Exhausting this budget stops further requests and reports partial coverage.",
            "default": 30
          },
          "includeShorts": {
            "title": "Collect Shorts",
            "type": "boolean",
            "description": "Fetch the channel's public Shorts tab and save actual Short rows with titles, views, dates, durations, thumbnails, and URLs.",
            "default": false
          },
          "maxShortsPerChannel": {
            "title": "Max Shorts Per Channel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum Short rows saved from each channel's inspected public Shorts pages, subject to the page and HTTP attempt limits.",
            "default": 10
          },
          "includeLiveStreams": {
            "title": "Collect Live Streams",
            "type": "boolean",
            "description": "Fetch the public Live tab and save live, upcoming, and previously streamed video rows when exposed.",
            "default": false
          },
          "maxLiveStreamsPerChannel": {
            "title": "Max Live Streams Per Channel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum live-stream rows saved from each channel's inspected public Live pages, subject to the page and HTTP attempt limits.",
            "default": 10
          },
          "includePlaylists": {
            "title": "Collect Playlists",
            "type": "boolean",
            "description": "Fetch the public Playlists tab and save playlist titles, IDs, URLs, video counts, and thumbnails.",
            "default": false
          },
          "maxPlaylistsPerChannel": {
            "title": "Max Playlists Per Channel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum playlist rows saved from each channel's inspected public Playlists pages, subject to the page and HTTP attempt limits.",
            "default": 10
          },
          "includeCommunityPosts": {
            "title": "Collect Community Posts",
            "type": "boolean",
            "description": "Fetch the public Community tab and save channel-authored post text, publish time, public engagement counts, and attachment links. Commenter identities are never collected.",
            "default": false
          },
          "maxCommunityPostsPerChannel": {
            "title": "Max Community Posts Per Channel",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum channel-authored community-post rows saved from each channel's inspected public Community pages, subject to the page and HTTP attempt limits.",
            "default": 10
          },
          "metadataProxyFallback": {
            "title": "Metadata-only Residential fallback (optional)",
            "type": "boolean",
            "description": "Opt in to compact Residential player-metadata requests only after a confirmed direct automation check. Main pages stay direct. At most one proxy attempt per selected detailed video, five per channel, stopping after a fallback failure. Adds proxy costs, requires Residential access, and does not guarantee fields. Do not combine with Proxy Configuration. Disabled by default.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Optional full-page proxy settings for HTTP requests. Direct mode is the low-cost default, but YouTube may restrict detailed metadata in cloud runs. Proxies are opt-in, add costs and do not guarantee access. Use metadataProxyFallback instead to proxy only compact metadata after a confirmed direct challenge; do not enable both.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}