{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Scraper",
    "description": "Scrape YouTube videos, Shorts, channels, search results, and comments from URLs, channel handles, or keyword searches. Collect titles, views, publish dates, descriptions, thumbnails, channel data, and engagement insights in clean structured output.",
    "version": "0.0",
    "x-build-id": "rPQdm7nFRSb1hbbc1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/calm_builder~youtube-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-calm_builder-youtube-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/calm_builder~youtube-scraper/runs": {
      "post": {
        "operationId": "runs-sync-calm_builder-youtube-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/calm_builder~youtube-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-calm_builder-youtube-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": {
          "searchAndDirectInputs": {
            "title": "Search terms and direct links",
            "type": "array",
            "description": "Add one value per row. Supported values: plain search terms, YouTube search-result URLs, direct video URLs, and Short URLs.",
            "items": {
              "type": "string"
            }
          },
          "maxVideos": {
            "title": "Maximum videos per search term or link",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of regular videos to collect for each search term or supported direct link. Set to `0` to disable video collection.",
            "default": 2
          },
          "maxShorts": {
            "title": "Maximum Shorts per search term or link",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of Shorts to collect for each search term or supported direct link. Set to `0` to disable Shorts collection.",
            "default": 1
          },
          "scrapeChannelInfo": {
            "title": "Add channel info for search and direct results",
            "type": "boolean",
            "description": "Include available public channel profile data for results collected from search terms, search-result URLs, direct video URLs, and direct Short URLs.",
            "default": false
          },
          "channelInputs": {
            "title": "Channel handles and links",
            "type": "array",
            "description": "Add one value per row. Supported values: channel handles such as `@MrBeast` and full YouTube channel URLs.",
            "items": {
              "type": "string"
            }
          },
          "includeChannelVideos": {
            "title": "Include channel videos",
            "type": "boolean",
            "description": "Collect items from the channel's Videos tab.",
            "default": false
          },
          "includeChannelShorts": {
            "title": "Include channel Shorts",
            "type": "boolean",
            "description": "Collect items from the channel's Shorts tab.",
            "default": false
          },
          "maxChannelVideos": {
            "title": "Maximum videos per channel",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of regular videos to collect from each channel. Set to `0` to disable channel video collection.",
            "default": 10
          },
          "maxChannelShorts": {
            "title": "Maximum Shorts per channel",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of Shorts to collect from each channel. Set to `0` to disable channel Shorts collection.",
            "default": 10
          },
          "channelDateRangeSortBy": {
            "title": "Channel sort",
            "enum": [
              "latest",
              "popular",
              "oldest"
            ],
            "type": "string",
            "description": "Choose how channel video and Short results should be ordered. If a channel date range is set, sorting is automatically forced to Latest.",
            "default": "latest"
          },
          "channelDateRangeDate": {
            "title": "Channel date range",
            "pattern": "^$|^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Optional publish-time filter for channel video and Short results. Use either an absolute date (`YYYY-MM-DD`) or a relative value such as `2 weeks`, `3 months`, or `1 year`. If set, channel sorting is automatically changed to Latest. Leave empty to skip this filter.",
            "default": ""
          },
          "scrapeDetailedVideoData": {
            "title": "Add detailed data for videos",
            "type": "boolean",
            "description": "Collect extra video-only data such as metadata rows, tags, keywords, chapters, and other watch-page details where available. This enrichment is intended for regular videos, not Shorts.",
            "default": false
          },
          "scrapeCommentsAndReplies": {
            "title": "Add comments and replies",
            "type": "boolean",
            "description": "Collect top-level comments and replies for videos and Shorts where comments are available.",
            "default": false
          },
          "maxCommentThreads": {
            "title": "Maximum comment threads per item",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of top-level comment threads to collect for each video or Short.",
            "default": 10
          },
          "maxRepliesPerThread": {
            "title": "Maximum replies per thread",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of replies to collect for each top-level comment thread. Set to `0` to disable reply collection.",
            "default": 10
          },
          "commentsSortBy": {
            "title": "Comments sort",
            "enum": [
              "top",
              "newest"
            ],
            "type": "string",
            "description": "Choose how comments should be ordered. If a comments date range is set, sorting is automatically forced to Newest. Very recent comments can take a short time to appear, so comments posted within roughly the last minute may occasionally be missed in the same run.",
            "default": "top"
          },
          "commentsDateRangeDate": {
            "title": "Comments date range",
            "pattern": "^$|^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Optional publish-time filter for comments and replies. Use either an absolute date (`YYYY-MM-DD`) or a relative value such as `1 day`, `2 weeks`, `3 months`, or `1 year`. If set, comment sorting is automatically changed to Newest. Very recent comments can take a short time to appear, so comments posted within roughly the last minute may occasionally be missed in the same run. Leave empty to skip this filter.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}