{
  "openapi": "3.0.1",
  "info": {
    "title": "Free YouTube Scraper: Videos, Shorts, Channels & Search",
    "description": "Free YouTube scraper: videos, Shorts and streams from searches (all filters), channels, playlists and hashtags. Views, likes, comments count, exact publish time, duration, description, tags, plus channel subscribers, total views and country. Same input and output as the popular YouTube Scraper.",
    "version": "0.1",
    "x-build-id": "mnKu3WlJTbXQpxEud"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/wulfcare~youtube-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-wulfcare-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/wulfcare~youtube-scraper/runs": {
      "post": {
        "operationId": "runs-sync-wulfcare-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/wulfcare~youtube-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-wulfcare-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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What you would type in YouTube's search box. Each term is searched separately and gets up to \"Maximum videos\" results (and Shorts / live streams if you ask for them below).",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Maximum videos per search term, channel, playlist or hashtag",
            "minimum": 0,
            "maximum": 999999,
            "type": "integer",
            "description": "Regular videos to get from each search term, channel (its Videos tab), playlist and hashtag. 0 = none. Video URLs in Direct URLs are always scraped.",
            "default": 10
          },
          "maxResultsShorts": {
            "title": "Maximum Shorts per search term or channel",
            "minimum": 0,
            "maximum": 999999,
            "type": "integer",
            "description": "Shorts to get from each search term (YouTube's \"Shorts\" search filter) and each channel (its Shorts tab). 0 = none.",
            "default": 0
          },
          "maxResultStreams": {
            "title": "Maximum live streams per search term or channel",
            "minimum": 0,
            "maximum": 999999,
            "type": "integer",
            "description": "Live streams to get from each channel (its Live tab: past, current and upcoming streams) and each search term (YouTube's \"Live\" filter: streams live right now). 0 = none.",
            "default": 0
          },
          "startUrls": {
            "title": "Direct URLs",
            "type": "array",
            "description": "YouTube URLs: videos, Shorts, channels (@handle, /channel/UC..., /c/..., /user/...; a channel tab URL like /@name/shorts gets only that tab), playlists, search result pages (with their filters) and hashtag pages. Bare video ids, @handles and channel ids work too.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "sortingOrder": {
            "title": "Sorting order",
            "enum": [
              "relevance",
              "rating",
              "date",
              "views"
            ],
            "type": "string",
            "description": "How YouTube orders the search results. YouTube doesn't follow \"Upload date\" strictly."
          },
          "dateFilter": {
            "title": "Upload date",
            "enum": [
              "hour",
              "today",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Only videos uploaded within this time."
          },
          "videoType": {
            "title": "Type",
            "enum": [
              "video",
              "movie"
            ],
            "type": "string",
            "description": "Videos (default) or movies."
          },
          "lengthFilter": {
            "title": "Duration",
            "enum": [
              "under4",
              "between420",
              "plus20"
            ],
            "type": "string",
            "description": "Only videos of this length."
          },
          "isHD": {
            "title": "HD",
            "type": "boolean",
            "description": "Only videos with the \"HD\" feature."
          },
          "hasSubtitles": {
            "title": "Subtitles/CC",
            "type": "boolean",
            "description": "Only videos with the \"Subtitles/CC\" feature."
          },
          "hasCC": {
            "title": "Creative Commons",
            "type": "boolean",
            "description": "Only videos with the \"Creative Commons\" feature."
          },
          "is3D": {
            "title": "3D",
            "type": "boolean",
            "description": "Only videos with the \"3D\" feature."
          },
          "isLive": {
            "title": "Live",
            "type": "boolean",
            "description": "Only streams that are live now."
          },
          "isBought": {
            "title": "Purchased",
            "type": "boolean",
            "description": "Only videos with the \"Purchased\" feature."
          },
          "is4K": {
            "title": "4K",
            "type": "boolean",
            "description": "Only videos with the \"4K\" feature."
          },
          "is360": {
            "title": "360°",
            "type": "boolean",
            "description": "Only videos with the \"360°\" feature."
          },
          "hasLocation": {
            "title": "Location",
            "type": "boolean",
            "description": "Only videos with the \"Location\" feature."
          },
          "isHDR": {
            "title": "HDR",
            "type": "boolean",
            "description": "Only videos with the \"HDR\" feature."
          },
          "isVR180": {
            "title": "VR180",
            "type": "boolean",
            "description": "Only videos with the \"VR180\" feature."
          },
          "oldestPostDate": {
            "title": "Only videos published on or after",
            "type": "string",
            "description": "A date (2026-01-31) or an age (\"7 days\", \"2 weeks\", \"3 months\", \"1 year\"). Works for every source. On a channel listed newest first the run stops at the first older video; elsewhere older videos are skipped."
          },
          "sortVideosBy": {
            "title": "Channel order",
            "enum": [
              "NEWEST",
              "POPULAR",
              "OLDEST"
            ],
            "type": "string",
            "description": "The order of a channel's videos, Shorts and streams (the channel page's Latest / Popular / Oldest buttons).",
            "default": "NEWEST"
          },
          "includeVideoDetails": {
            "title": "Open every video (likes, comments, exact date, description, tags...)",
            "type": "boolean",
            "description": "On: each video's likes, comment count, exact publish time, full description with its links, hashtags, category, tags and more. Off: only what the list shows (title, views, duration, \"3 days ago\"), several times faster. Video URLs are always opened.",
            "default": true
          },
          "includeChannelInfo": {
            "title": "Add channel info to each video",
            "type": "boolean",
            "description": "The channel's subscribers, total views, video count, country, joined date, description, links, avatar and banner, on every row (one small request per channel).",
            "default": true
          },
          "maxConcurrency": {
            "title": "Videos at a time",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many videos are fetched in parallel.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy (datacenter) works well and is on by default: YouTube refuses some Apify servers' own IP addresses.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}