{
  "description": "Scrape TikTok playlists and public collections by URL, numeric ID, profile URL or @username.",
  "properties": {
    "collectionIds": {
      "description": "Numeric TikTok collection IDs (15–20 digits).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Collection IDs",
      "type": "array"
    },
    "collectionUrls": {
      "description": "Public collection URLs, e.g. https://www.tiktok.com/@user/collection/places-to-go-7154034669288196891.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Collection URLs",
      "type": "array"
    },
    "maxItems": {
      "default": 0,
      "description": "Stop after this many dataset rows across all targets, including status rows. Use 0 for no global limit.",
      "maximum": 100000,
      "minimum": 0,
      "prefill": 1,
      "title": "Max Rows (Global)",
      "type": "integer"
    },
    "maxPlaylistsPerProfile": {
      "default": 20,
      "description": "Maximum playlists to process for each profile or username target.",
      "maximum": 100,
      "minimum": 1,
      "prefill": 1,
      "title": "Max Playlists Per Profile",
      "type": "integer"
    },
    "maxPostsPerPlaylist": {
      "default": 100,
      "description": "Maximum videos to return from each playlist or collection. Set high enough to cover the full list.",
      "maximum": 5000,
      "minimum": 1,
      "prefill": 1,
      "title": "Max Videos Per Playlist",
      "type": "integer"
    },
    "mode": {
      "default": "both",
      "description": "Return playlist/collection metadata rows, video rows, or both.",
      "editor": "select",
      "enum": [
        "metadata",
        "posts",
        "both"
      ],
      "enumTitles": [
        "Playlist metadata only",
        "Videos only",
        "Metadata and videos"
      ],
      "prefill": "metadata",
      "title": "What to Return",
      "type": "string"
    },
    "playlistIds": {
      "description": "Numeric TikTok playlist IDs (15–20 digits). If an ID belongs to a public collection, the collection route is tried automatically.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Playlist IDs",
      "type": "array"
    },
    "playlistUrls": {
      "description": "Playlist URLs, e.g. https://www.tiktok.com/@natgeo/playlist/Cinematic-7509464647364283178. Collection URLs pasted here are detected automatically.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "https://www.tiktok.com/@natgeo/playlist/Cinematic-7509464647364283178"
      ],
      "title": "Playlist URLs",
      "type": "array"
    },
    "profileUrls": {
      "description": "TikTok profile URLs. Every public playlist on each profile is discovered, up to the per-profile limit.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Profile URLs",
      "type": "array"
    },
    "usernames": {
      "description": "TikTok handles with or without @. Every public playlist on each profile is discovered.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "title": "Usernames",
      "type": "array"
    }
  },
  "required": [],
  "schemaVersion": 1,
  "title": "TikTok Playlist & Collection Scraper Input",
  "type": "object"
}
