{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Shorts Scraper - Exact Views, Dates & Channels",
    "description": "For influencer vetting, sponsorship reporting and trend research: Shorts from any YouTube channel or search term with id, URL, title, channel, thumbnail and the exact view count. The number printed under a Short is truncated, not rounded - one shown as 10M really had 10,962,867 on 2026-09-08.",
    "version": "0.1",
    "x-build-id": "4X6fXjswL6dlPXqQV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~youtube-shorts-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-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/neverempty~youtube-shorts-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-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/neverempty~youtube-shorts-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-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": "YouTube channels",
            "type": "array",
            "description": "Whose Shorts you want. Give handles such as @MrBeast, channel URLs, or channel ids starting with UC. Anything that is not a YouTube channel comes back as its own free row instead of being silently dropped. If channels, search terms and individual Shorts are all left empty, the example channel @MrBeast is used and a free row says so. If the example @MrBeast is still here when you give your own search terms or Shorts, it is skipped and not charged.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "Words or hashtags to search. YouTube search returns Shorts and ordinary videos mixed together; only the Shorts are kept, and a free row says so when a search returned results but no Shorts.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "shortUrls": {
            "title": "Individual Shorts",
            "type": "array",
            "description": "Specific Shorts by URL or 11-character id. These are always fetched with their exact view count and publish date.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxShortsPerSource": {
            "title": "Shorts per channel or search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many Shorts to collect for each channel or search term. YouTube serves about 48 per page from a channel and this Actor follows the pages for you.",
            "default": 50
          },
          "maxRecords": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "The most rows this run may return and charge for. When the limit cuts the result, rows are taken evenly from every channel and search term, so none of them disappears completely, and a free row says what was left out.",
            "default": 100
          },
          "exactNumbers": {
            "title": "Exact view counts and publish dates",
            "type": "boolean",
            "description": "The Shorts list only carries a truncated view count such as \"10M views\" and no date at all. Turn this on to fetch the real number and the publish date for every Short, at one extra request each. Measured on 8 September 2026, the listed number was the lower one in 8 of 8 cases and \"10M views\" was really 10,969,868. Depending on the address the run comes from, the date arrives either as a full timestamp or as the day only - rows say which, and never invent a time.",
            "default": false
          },
          "minViews": {
            "title": "Minimum views",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only Shorts with at least this many views. Without \"Exact numbers\" this compares against the truncated count YouTube shows, which is always lower than the real one, so nothing that really passes your threshold is thrown away. 0 turns the filter off.",
            "default": 0
          },
          "maxLengthSeconds": {
            "title": "Maximum length in seconds",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only Shorts no longer than this. Length is only known when \"Exact numbers\" is on; Shorts whose length is unknown are kept rather than thrown away. 0 turns the filter off.",
            "default": 0
          },
          "keywords": {
            "title": "Only Shorts containing these words",
            "type": "array",
            "description": "Case-insensitive words matched against the title and the channel name of the Shorts this run read. Leave empty to keep everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "Match words",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "any keeps a Short that contains at least one of the words. all requires every word.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "Skip Shorts containing these words",
            "type": "array",
            "description": "Case-insensitive. A Short whose title or channel name contains any of these words is dropped before it is charged.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "monitoringMode": {
            "title": "Only new Shorts since the last run",
            "type": "boolean",
            "description": "Remembers the Shorts already returned to you and returns only the ones it has not. Run it on a schedule to watch a channel and pay only for what is new.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was already returned",
            "type": "boolean",
            "description": "Clears that memory once, so the next monitoring run treats every Short as new.",
            "default": false
          },
          "maxRequests": {
            "title": "Maximum requests",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "A hard ceiling on how many requests this run may make to YouTube, counting channel lookups, list pages and the extra request per Short that exact numbers need.",
            "default": 60
          },
          "useProxy": {
            "title": "Use a proxy if YouTube blocks the run",
            "type": "boolean",
            "description": "Off by default: measured on 8 September 2026, a plain connection returned HTTP 200. Turn it on only if you see bot-check rows - it is slower and costs proxy traffic.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}