{
  "openapi": "3.0.1",
  "info": {
    "title": "Youtube Channel Scraper",
    "description": "Scrape YouTube channels or keyword searches for video URLs, titles, metrics, transcripts, channel profiles, social links, descriptions and more. Fast, low-cost YouTube data extraction for monitoring, influencer research, SEO, and LLM workflows.",
    "version": "0.0",
    "x-build-id": "gKlF2lYsBATzdOByC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/newbs~Youtube-Channel/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-newbs-Youtube-Channel",
        "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/newbs~Youtube-Channel/runs": {
      "post": {
        "operationId": "runs-sync-newbs-Youtube-Channel",
        "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/newbs~Youtube-Channel/run-sync": {
      "post": {
        "operationId": "run-sync-newbs-Youtube-Channel",
        "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",
        "required": [
          "channel",
          "numberOfResults"
        ],
        "properties": {
          "channel": {
            "title": "Channels, URLs, or search terms",
            "type": "array",
            "description": "Enter YouTube handles, UC channel IDs, channel URLs (including About and Videos URLs), direct regular video URLs, or search terms. Enable keywords only for search terms.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Search by keyword",
            "type": "boolean",
            "description": "Enable this when the channel field contains YouTube search keywords instead of channel handles or URLs.",
            "default": false
          },
          "needVideoDetails": {
            "title": "Collect full video details and transcripts",
            "type": "boolean",
            "description": "Enabled: collect full metadata and available transcripts. Disabled: return faster basic listing results (URL, title, thumbnail, channel and visible listing metrics). Details-only fields remain null, with collectionMode=basic and detailsStatus=not_requested. See the Basic results dataset view.",
            "default": true
          },
          "numberOfResults": {
            "title": "Results per channel or keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Number of videos to collect for each item in the channel list. If keywords is false, this means per channel. If keywords is true, this means per search keyword, before optional duplicate/channel limits are applied."
          },
          "uniqueChannels": {
            "title": "Unique channels in keyword results",
            "type": "boolean",
            "description": "Only applies when keywords is true. Keep at most one result from each YouTube channel per keyword, and deduplicate repeated video URLs across the run.",
            "default": false
          },
          "maxVideosPerChannel": {
            "title": "Max videos per channel",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only applies when keywords is true. Limits how many videos from the same YouTube channel are returned for each keyword. Leave empty for no per-channel limit. Set 1 for creator discovery use cases."
          },
          "localeHl": {
            "title": "YouTube language hint",
            "type": "string",
            "description": "YouTube hl parameter. Examples: en, fr, de, es, ja."
          },
          "localeGl": {
            "title": "YouTube country hint",
            "type": "string",
            "description": "YouTube gl parameter. Examples: US, GB, FR, DE, JP."
          },
          "acceptLanguage": {
            "title": "Accept-Language header",
            "type": "string",
            "description": "HTTP language preferences sent with each request, for example en-US,en;q=0.9. This nudges YouTube localization but does not guarantee localized results."
          },
          "maxVideoDetailConcurrency": {
            "title": "Parallel video details",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum videos processed in parallel. Default 20 on both 512 MB and 1,024 MB runs; higher requests are capped at 20. Lower values are respected. Proxy requests have a separate shared concurrency limit of 2. Fast HTTP detail concurrency takes precedence when both concurrency fields are supplied."
          },
          "maxChannelConcurrency": {
            "title": "Parallel channels or keywords",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many channel or keyword inputs to collect in parallel. Higher values can improve multi-input runs but can increase YouTube throttling risk."
          },
          "fastVideoDetailConcurrency": {
            "title": "Fast HTTP detail concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum videos processed in parallel. Default 20 on both 512 MB and 1,024 MB runs; higher requests are capped at 20. Lower values are respected. Proxy requests have a separate shared concurrency limit of 2. Fast HTTP detail concurrency takes precedence when both concurrency fields are supplied."
          },
          "proxyMode": {
            "title": "Proxy mode",
            "enum": [
              "auto",
              "always",
              "never"
            ],
            "type": "string",
            "description": "Auto starts video extraction directly and uses proxy for blocked details or transcript recovery. Successful direct video results cost $0.50 per 1,000; results whose video requests or source collection use proxy cost $8 per 1,000 instead. All run platform usage is included in these result prices. Never disables proxy completely and keeps successful results at the direct rate. Always proxies collection and details. Captions are best effort in every mode. Recovery stops when its run-wide request or transfer allowance is exhausted or repeated attempts produce no usable results; see the run summary.",
            "default": "auto"
          },
          "videoDetailProxyStrategy": {
            "title": "Video detail proxy strategy",
            "enum": [
              "auto",
              "proxyFirst"
            ],
            "type": "string",
            "description": "Auto starts each video directly. Proxy-first uses proxy for per-video requests and therefore uses the proxy-assisted result price. Proxy-backed source collection also makes its results proxy-assisted. Captions are not guaranteed.",
            "default": "auto"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional Apify Proxy settings. Leave empty with Auto mode unless you need custom proxy groups or country settings for fallback or Always mode."
          },
          "transcriptMode": {
            "title": "Transcript mode",
            "enum": [
              "standard",
              "aggressive"
            ],
            "type": "string",
            "description": "Standard performs adaptive proxy recovery when transcript coverage is poor. Aggressive retries missing transcripts more eagerly. A video with actual per-video proxy requests is billed once at the proxy-assisted result rate, even when captions remain unavailable. Recovery is bounded to avoid excessive costs.",
            "default": "standard"
          },
          "adaptiveTranscriptProxyFallback": {
            "title": "Adaptive transcript recovery",
            "type": "boolean",
            "description": "In standard mode, retry missing captions with proxy when coverage is poor. Actual per-video proxy requests make that successful video a proxy-assisted result. Disable this to avoid transcript-only proxy upgrades; choose Never use proxy to disable all proxy requests.",
            "default": true
          },
          "adaptiveTranscriptMaxRetries": {
            "title": "Max adaptive transcript retries",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum missing-transcript rows retried by adaptive recovery in standard mode. Leave empty for automatic caps: all rows for small runs, and up to 80 round-robin rows for larger runs. Lower it when runtime and proxy cost matter more than transcript coverage."
          },
          "adaptiveTranscriptRetryConcurrency": {
            "title": "Parallel adaptive transcript retries",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many videos adaptive caption recovery processes in parallel. Defaults to 8 to overlap lightweight player requests, direct caption downloads, and dataset writes. The shared proxy limit remains 2 requests; increasing queued jobs beyond the default can delay results."
          },
          "residentialFallbackForMissingTranscripts": {
            "title": "Residential fallback for missing transcripts",
            "type": "boolean",
            "description": "Compatibility option. Prefer Transcript mode = Aggressive. When enabled, videos that still miss transcripts after direct caption extraction are retried with Apify residential proxy.",
            "default": false
          },
          "streamDatasetItems": {
            "title": "Stream dataset rows",
            "type": "boolean",
            "description": "Write completed rows while the run is still processing instead of waiting until the end. Keep enabled for larger runs so partial progress is preserved if a run times out.",
            "default": true
          },
          "resetCheckpoint": {
            "title": "Reset saved progress",
            "type": "boolean",
            "description": "Accepted for compatibility with older inputs. The HTTP-first actor does not persist checkpoints.",
            "default": false
          },
          "maxContinuationPages": {
            "title": "Maximum pagination requests",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Limit continuation requests per channel or keyword. Set 0 to read only the initial results page. Omit for an automatic limit based on numberOfResults (maximum 60)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}