{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Shorts Scraper — Views, Likes, Comments & Hashtags",
    "description": "Scrape YouTube Shorts from channels, hashtags, keyword searches or Short URLs. Get exact views, likes, comment count, publish date, duration, hashtags, sound and channel for every Short. No API key, no login. From US$2.80 per 1,000 Shorts.",
    "version": "0.1",
    "x-build-id": "9RmK1ZVBK7umnOSXC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fabrikit~youtube-shorts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fabrikit-youtube-shorts-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-shorts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fabrikit-youtube-shorts-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-shorts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fabrikit-youtube-shorts-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": "Channels whose Shorts tab you want. Accepts a handle (@NASA), a channel URL (https://www.youtube.com/@NASA/shorts, /channel/UC..., /c/..., /user/...) or a channel ID (UC...).",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags",
            "type": "array",
            "description": "Hashtag feeds of Shorts, like youtube.com/hashtag/<tag>/shorts. Write the tag with or without # (\"funny\", \"#recetas\") or paste the hashtag URL. One word per tag, no spaces.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search keywords (Shorts only)",
            "type": "array",
            "description": "Keywords searched on YouTube with the Shorts filter on, e.g. \"cooking hacks\". A YouTube search URL (youtube.com/results?search_query=...) also works.",
            "items": {
              "type": "string"
            }
          },
          "shortUrls": {
            "title": "Single Short URLs or IDs",
            "type": "array",
            "description": "Specific Shorts to look up, e.g. https://www.youtube.com/shorts/Y8IJi7iP5vk, a youtu.be link or the 11-character ID.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Shorts (total)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many Shorts across all inputs. You pay only for the Shorts that are saved.",
            "default": 20
          },
          "maxItemsPerSource": {
            "title": "Max Shorts per channel / hashtag / search",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Optional cap for each single input, so one big channel does not use up the whole \"Max Shorts\" budget. Leave empty for no per-input cap."
          },
          "channelSort": {
            "title": "Channel Shorts order",
            "enum": [
              "latest",
              "popular",
              "oldest"
            ],
            "type": "string",
            "description": "Order of a channel's Shorts tab: newest first, most viewed first, or oldest first (the same three buttons YouTube shows). Hashtag and search feeds keep YouTube's own order.",
            "default": "latest"
          },
          "publishedAfter": {
            "title": "Only Shorts published after",
            "type": "string",
            "description": "Keep only Shorts published on or after this date. Use a date (2026-10-01) or an age such as \"7 days\", \"2 weeks\", \"3 months\". With channel order \"Latest\" the Actor stops reading a channel once it reaches older Shorts. Needs the details (turned on automatically)."
          },
          "includeDetails": {
            "title": "Load details for every Short",
            "type": "boolean",
            "description": "On (recommended): exact views, likes, comment count, publish date, length, description, hashtags, sound, category, tags and channel for each Short (one extra request per Short). Off: fast mode with only ID, title, rounded views and thumbnail (plus the channel for channel inputs). The price per Short is the same.",
            "default": true
          },
          "language": {
            "title": "Interface language",
            "type": "string",
            "description": "YouTube interface language code sent with the requests (en, es, pt, de...). Counts are parsed most reliably in English; exact numbers from the details do not depend on it.",
            "default": "en"
          },
          "region": {
            "title": "Region",
            "type": "string",
            "description": "Two-letter country code that YouTube uses to pick regional results (US, GB, MX, BR, IN...). It also sets the country of the residential fallback proxy.",
            "default": "US"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is enough in most runs. If YouTube starts blocking (HTTP 403/429 or consent pages twice in a row), the Actor moves to RESIDENTIAL proxy by itself for the rest of the run.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}