{
  "data": {
    "id": "edchdAkSbD3iMNJ6D",
    "actId": "GnLvTq8m3i6444nUe",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-11-02T08:51:10.218Z",
    "finishedAt": "2026-11-02T08:51:18.849Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 8502,
      "runTimeSecs": 8.502,
      "computeUnits": 0.009446666666666667,
      "imageSizeBytes": 319051776
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"YouTube Trending Feed Extractor Input\",\n  \"description\": \"Read YouTube Charts or category hubs for one or more countries, with optional exact video details.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to read. 'charts' uses YouTube's official music, trailer and podcast charts. 'hubs' uses YouTube's category pages such as Gaming trending, News, Sports, Learning and Courses.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"charts\",\n        \"hubs\"\n      ],\n      \"enumTitles\": [\n        \"YouTube Charts\",\n        \"Category hubs\"\n      ],\n      \"default\": \"charts\",\n      \"prefill\": \"charts\"\n    },\n    \"charts\": {\n      \"title\": \"Charts (mode=charts)\",\n      \"type\": \"array\",\n      \"description\": \"One or more YouTube charts. Trending music videos is the official replacement for the retired general Trending page. Top songs and top artists are weekly; Shorts songs is daily or weekly. Music and Shorts charts include rank movement and optional history.\",\n      \"editor\": \"select\",\n      \"uniqueItems\": true,\n      \"minItems\": 1,\n      \"default\": [\n        \"trendingVideos\"\n      ],\n      \"prefill\": [\n        \"trendingVideos\"\n      ],\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"trendingVideos\",\n          \"topVideos\",\n          \"topSongs\",\n          \"topArtists\",\n          \"shortsSongs\",\n          \"movieTrailers\",\n          \"podcasts\"\n        ],\n        \"enumTitles\": [\n          \"Trending music videos (current)\",\n          \"Top music videos (daily or weekly)\",\n          \"Top songs (weekly)\",\n          \"Top artists (weekly)\",\n          \"Top songs in Shorts (daily or weekly)\",\n          \"Trending movie trailers (current)\",\n          \"Podcast shows (weekly)\"\n        ]\n      }\n    },\n    \"categories\": {\n      \"title\": \"Category hubs (mode=hubs)\",\n      \"type\": \"array\",\n      \"description\": \"One or more category pages. Gaming trending and Gaming live return up to 50 videos. News reads the selected news sections. Sports, Learning and Courses are editorial category feeds.\",\n      \"editor\": \"select\",\n      \"uniqueItems\": true,\n      \"minItems\": 1,\n      \"default\": [\n        \"gaming\"\n      ],\n      \"prefill\": [\n        \"gaming\"\n      ],\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"gaming\",\n          \"gamingLive\",\n          \"news\",\n          \"sports\",\n          \"learning\",\n          \"courses\"\n        ],\n        \"enumTitles\": [\n          \"Gaming trending\",\n          \"Gaming live\",\n          \"News\",\n          \"Sports\",\n          \"Learning\",\n          \"Courses\"\n        ]\n      }\n    },\n    \"newsSections\": {\n      \"title\": \"News sections (mode=hubs, categories includes news)\",\n      \"type\": \"array\",\n      \"description\": \"Which News tabs to read. 'Top stories' is the main /news page; the other sections are direct news-destination feeds. Available sections vary by country.\",\n      \"editor\": \"select\",\n      \"uniqueItems\": true,\n      \"minItems\": 1,\n      \"default\": [\n        \"top\"\n      ],\n      \"prefill\": [\n        \"top\"\n      ],\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"top\",\n          \"sports\",\n          \"entertainment\",\n          \"business\",\n          \"world\",\n          \"national\",\n          \"health\",\n          \"technology\"\n        ],\n        \"enumTitles\": [\n          \"Top stories\",\n          \"Sports\",\n          \"Entertainment\",\n          \"Business\",\n          \"World\",\n          \"National\",\n          \"Health\",\n          \"Technology\"\n        ]\n      }\n    },\n    \"countries\": {\n      \"title\": \"Countries\",\n      \"type\": \"array\",\n      \"description\": \"One or more markets. The 68 YouTube Charts markets are supported; 'global' is supported only for charts that publish a global ranking (top videos, top songs, top artists, Shorts songs).\",\n      \"editor\": \"select\",\n      \"uniqueItems\": true,\n      \"minItems\": 1,\n      \"default\": [\n        \"US\"\n      ],\n      \"prefill\": [\n        \"US\"\n      ],\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"AR\",\n          \"AU\",\n          \"AT\",\n          \"BE\",\n          \"BO\",\n          \"BR\",\n          \"CA\",\n          \"CL\",\n          \"CO\",\n          \"CR\",\n          \"CZ\",\n          \"DK\",\n          \"DO\",\n          \"EC\",\n          \"EG\",\n          \"SV\",\n          \"EE\",\n          \"FI\",\n          \"FR\",\n          \"DE\",\n          \"GT\",\n          \"HN\",\n          \"HK\",\n          \"HU\",\n          \"IS\",\n          \"IN\",\n          \"ID\",\n          \"IE\",\n          \"IL\",\n          \"IT\",\n          \"JP\",\n          \"KE\",\n          \"LU\",\n          \"MY\",\n          \"MX\",\n          \"NL\",\n          \"NZ\",\n          \"NI\",\n          \"NG\",\n          \"NO\",\n          \"PA\",\n          \"PY\",\n          \"PE\",\n          \"PH\",\n          \"PL\",\n          \"PT\",\n          \"RO\",\n          \"RU\",\n          \"SA\",\n          \"RS\",\n          \"SG\",\n          \"ZA\",\n          \"KR\",\n          \"ES\",\n          \"SE\",\n          \"CH\",\n          \"TW\",\n          \"TZ\",\n          \"TH\",\n          \"TR\",\n          \"UG\",\n          \"UA\",\n          \"AE\",\n          \"GB\",\n          \"US\",\n          \"UY\",\n          \"VN\",\n          \"ZW\",\n          \"global\"\n        ],\n        \"enumTitles\": [\n          \"Argentina\",\n          \"Australia\",\n          \"Austria\",\n          \"Belgium\",\n          \"Bolivia\",\n          \"Brazil\",\n          \"Canada\",\n          \"Chile\",\n          \"Colombia\",\n          \"Costa Rica\",\n          \"Czechia\",\n          \"Denmark\",\n          \"Dominican Republic\",\n          \"Ecuador\",\n          \"Egypt\",\n          \"El Salvador\",\n          \"Estonia\",\n          \"Finland\",\n          \"France\",\n          \"Germany\",\n          \"Guatemala\",\n          \"Honduras\",\n          \"Hong Kong\",\n          \"Hungary\",\n          \"Iceland\",\n          \"India\",\n          \"Indonesia\",\n          \"Ireland\",\n          \"Israel\",\n          \"Italy\",\n          \"Japan\",\n          \"Kenya\",\n          \"Luxembourg\",\n          \"Malaysia\",\n          \"Mexico\",\n          \"Netherlands\",\n          \"New Zealand\",\n          \"Nicaragua\",\n          \"Nigeria\",\n          \"Norway\",\n          \"Panama\",\n          \"Paraguay\",\n          \"Peru\",\n          \"Philippines\",\n          \"Poland\",\n          \"Portugal\",\n          \"Romania\",\n          \"Russia\",\n          \"Saudi Arabia\",\n          \"Serbia\",\n          \"Singapore\",\n          \"South Africa\",\n          \"South Korea\",\n          \"Spain\",\n          \"Sweden\",\n          \"Switzerland\",\n          \"Taiwan\",\n          \"Tanzania\",\n          \"Thailand\",\n          \"Turkey\",\n          \"Uganda\",\n          \"Ukraine\",\n          \"United Arab Emirates\",\n          \"United Kingdom\",\n          \"United States\",\n          \"Uruguay\",\n          \"Vietnam\",\n          \"Zimbabwe\",\n          \"Global\"\n        ]\n      }\n    },\n    \"period\": {\n      \"title\": \"Chart period (mode=charts)\",\n      \"type\": \"string\",\n      \"description\": \"Daily or weekly ranking. Weekly-only charts automatically use weekly. Current-only charts such as Trending music videos and Trending movie trailers ignore this setting.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"daily\",\n        \"weekly\"\n      ],\n      \"enumTitles\": [\n        \"Daily\",\n        \"Weekly\"\n      ],\n      \"default\": \"daily\",\n      \"prefill\": \"daily\"\n    },\n    \"date\": {\n      \"title\": \"Chart date (mode=charts)\",\n      \"type\": \"string\",\n      \"description\": \"Historical chart date in YYYY-MM-DD format. Leave empty for the latest chart. Supported by Top music videos, Top songs, Top artists and Shorts songs; current-only charts ignore it.\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max items\",\n      \"type\": \"integer\",\n      \"description\": \"Total data rows to return across all charts, categories and countries.\",\n      \"default\": 100,\n      \"minimum\": 1,\n      \"maximum\": 10000,\n      \"prefill\": 3\n    },\n    \"maxItemsPerChart\": {\n      \"title\": \"Max items per chart or feed\",\n      \"type\": \"integer\",\n      \"description\": \"Rows to take from each chart/country or category/country combination. Source ceilings still apply.\",\n      \"default\": 100,\n      \"minimum\": 1,\n      \"maximum\": 100,\n      \"prefill\": 3\n    },\n    \"includeVideoDetails\": {\n      \"title\": \"Include exact video details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch exact lifetime views, likes, upload dates and descriptions for every video. YouTube category, tags, Shorts eligibility and family-safe flags are filled when YouTube's player response is available and may be omitted on some cloud IPs. Adds one or more detail requests per video.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"maxConcurrency\": {\n      \"title\": \"Detail concurrency\",\n      \"type\": \"integer\",\n      \"description\": \"How many exact-detail requests may run in parallel.\",\n      \"default\": 5,\n      \"minimum\": 1,\n      \"maximum\": 10,\n      \"prefill\": 3\n    },\n    \"onlyNew\": {\n      \"title\": \"Only new items\",\n      \"type\": \"boolean\",\n      \"description\": \"Skip rows already emitted by a previous run with the same monitor name.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"monitorName\": {\n      \"title\": \"Monitor name\",\n      \"type\": \"string\",\n      \"description\": \"Separate only-new histories by monitor name.\",\n      \"editor\": \"textfield\",\n      \"default\": \"default\",\n      \"prefill\": \"default\"\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# YouTube Trending Feed Extractor by Category & Market\n\nScrape **YouTube's current trending surfaces** — the official music, movie-trailer and podcast charts, plus the Gaming, News, Sports, Learning and Courses category hubs. Choose from seven chart types across 68 markets and global where published, or read up to 50 videos from Gaming trending and Gaming live. Every row keeps its chart rank or page position, and optional exact video details add lifetime views, likes, comment counts, upload dates, channel subscriber counts where published, YouTube category, descriptions, tags and Shorts eligibility. No login, API key or proxy setup is required.\n\n## What this actor does\n\n- **Two modes:** `charts` for YouTube's official rankings and `hubs` for category pages\n- **Seven charts across 68 markets plus global** where the selected chart publishes a global ranking\n- **Category hubs:** Gaming trending, Gaming live, News with selectable sections, Sports, Learning and Courses\n- **Exact video details:** optional lifetime views, likes, exact comment counts, upload date and description, plus player-only category, tags and Shorts flags when YouTube exposes them; channel subscriber counts are added when YouTube publishes an exact number\n- **Empty fields are omitted** — no nulls, blank strings or empty arrays in any row\n\n## Output per chart entry\n\nChart rows describe ranked music, trailer or podcast entries. Each row keeps the chart position and adds movement and history fields where the chart publishes them.\n\n- `position` — chart rank\n- `recordType` — `chartEntry`\n- `type` — `video`, `track`, `artist` or `podcastShow`\n- `videoId`, `trackId`, `artistId`, `playlistId` — identifiers available for the entry type\n- `title` — entry title\n- `url` — watch, channel or playlist URL\n- `channelName`, `channelId`, `channelUrl`, `channelHandle` — channel details where the chart exposes them\n- `artists` — performing artists\n- `songwriters`, `producers` — credits where published\n- `label` — record label for song charts\n- `releaseDate` — music, trailer or podcast release date\n- `primaryGenre`, `numEpisodes`, `lastUpdatedDate` — podcast-show details\n- `chartViewCount` — views accumulated during the chart period\n- `viewCount` — exact lifetime views when exact details are enabled\n- `likeCount` — exact likes when exact details are enabled\n- `commentCount` — exact comment count when comments are enabled and exact details are on\n- `subscriberCount`, `subscriberCountText` — exact channel subscriber count when YouTube publishes one, plus the displayed text (which is rounded for large channels)\n- `durationText`, `durationSeconds` — track, video or trailer duration\n- `thumbnailUrl`, `thumbnails` — highest-resolution image and all available sizes\n- `previousPosition`, `rankChange`, `periodsOnChart`, `viewsChangePercent`, `isNewEntry` — chart movement; `rankChange` is positive when an entry moved up\n- `chartDate`, `chartType`, `chartPeriod` — chart date, requested chart and daily/weekly period\n- `countryCode`, `countryName` — chart market\n- `category` — `music`, `movies` or `podcasts`\n- `market` — same country code as `countryCode`\n- `sourceType` — `youtube_charts`\n- `sourceName` — the chart slug, such as `topSongs`\n- `sourceUrl` — the public chart page\n- `rankSource` — `chart`\n- `description`, `keywords`, `youtubeCategory`, `isShortsEligible`, `isFamilySafe` — added when exact details are enabled and YouTube exposes the player response; `description` can also come from the watch-next endpoint\n- `publishedDate`, `publishedTimeText`, `isLive`, `liveStatus`, `scheduledStartTime`, `viewsPerHour` — publication and live status when available\n- `badges` — badge labels where the source provides them\n- `fallbackQuery` — reserved for labelled fallback rows; normally absent\n- `scrapedAt` — UTC timestamp\n\n## Output per category-hub video\n\nHub rows are individual videos read from a category page. They keep the same identity, channel, duration, thumbnail and provenance fields as chart rows, plus:\n\n- `position` — page order\n- `recordType` — `video`\n- `type` — `video`\n- `channelAvatarUrl` — channel avatar shown on the hub card\n- `isVerified` — present when the channel carries a verified badge\n- `viewCountText`, `publishedTimeText` — display text from the page\n- `viewCount` — exact lifetime views when exact details are enabled, or when the hub shows an unabridged count\n- `commentCount`, `subscriberCount`, `subscriberCountText` — added by exact details when YouTube publishes exact values\n- `badges`, `isLive` — badges and live status from the page\n- `category` — `gaming`, `news`, `sports`, `learning` or `courses`\n- `countryCode`, `countryName` — hub market\n- `market` — same country code as `countryCode`\n- `sourceType` — `category_page`\n- `sourceName` — `gaming`, `gamingLive`, `news`, `news_business`, `sports`, `learning` or `courses`\n- `sourceUrl` — the public hub page\n- `rankSource` — `page`\n- `chartViewCount`, `chartDate`, `chartType`, `chartPeriod`, `previousPosition`, `rankChange`, `periodsOnChart`, `viewsChangePercent`, `isNewEntry` — not used for hub rows\n\n## Output per status record\n\nA status row explains a source that was skipped, unsupported or empty. It always carries `recordType: \"status\"`, `status`, `message`, `mode` and `scrapedAt`, plus the relevant `category`, `chartType`, `countryCode`, `market`, `period`, `date` and `resultCount` when known. Status values are `no_results`, `unsupported_country`, `unsupported_chart_period`, `retired` and `partial_source`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `charts` | `charts` for official rankings, `hubs` for category pages |\n| `charts` | array | `[\"trendingVideos\"]` | One or more chart types (mode=charts) |\n| `categories` | array | `[\"gaming\"]` | One or more category hubs (mode=hubs) |\n| `newsSections` | array | `[\"top\"]` | News tabs to read (mode=hubs, categories includes `news`) |\n| `countries` | array | `[\"US\"]` | One or more of the 68 chart markets, plus `global` where supported |\n| `period` | string | `daily` | `daily` or `weekly` for charts that publish both |\n| `date` | string | – | Historical date in `YYYY-MM-DD`; empty for the most recent chart |\n| `maxItems` | integer | `100` | Total data rows across all sources (1–10,000) |\n| `maxItemsPerChart` | integer | `100` | Rows per chart or hub feed (1–100) |\n| `includeVideoDetails` | boolean | `true` | Fetch exact lifetime views, likes, dates and descriptions; player-only extras when available |\n| `maxConcurrency` | integer | `5` | Parallel exact-detail requests (1–10) |\n| `onlyNew` | boolean | `false` | Skip rows already emitted by the same monitor |\n| `monitorName` | string | `default` | Separate only-new histories by name |\n\n### Example: trending music videos in the United States\n\n```json\n{\n  \"mode\": \"charts\",\n  \"charts\": [\"trendingVideos\"],\n  \"countries\": [\"US\"],\n  \"maxItems\": 3,\n  \"includeVideoDetails\": false\n}\n```\n\n### Example: weekly top songs with history in Germany and the United Kingdom\n\n```json\n{\n  \"mode\": \"charts\",\n  \"charts\": [\"topSongs\"],\n  \"countries\": [\"DE\", \"GB\"],\n  \"period\": \"weekly\",\n  \"date\": \"2026-10-22\",\n  \"maxItems\": 100,\n  \"includeVideoDetails\": true\n}\n```\n\n### Example: gaming trending and live in Japan\n\n```json\n{\n  \"mode\": \"hubs\",\n  \"categories\": [\"gaming\", \"gamingLive\"],\n  \"countries\": [\"JP\"],\n  \"maxItems\": 50\n}\n```\n\n### Example: top stories, business and technology news in the United States\n\n```json\n{\n  \"mode\": \"hubs\",\n  \"categories\": [\"news\"],\n  \"newsSections\": [\"top\", \"business\", \"technology\"],\n  \"countries\": [\"US\"],\n  \"maxItems\": 60\n}\n```\n\n## Use cases\n\n- **Music-industry tracking** — follow top songs, artists and videos across markets and chart dates\n- **Creator and label intelligence** — compare chart movement, periods on chart and view growth\n- **Gaming and esports research** — capture the current Gaming trending and live line-up by country\n- **Newsroom monitoring** — pull top stories and section feeds for one or more markets\n- **Cross-market comparison** — run the same chart in several countries to compare regional taste\n- **Trend and virality research** — combine exact lifetime views, publish dates and chart rank history\n\n## Limitations and honest caveats\n\n- **General Trending is gone.** YouTube retired the general Trending page and Trending Now list on 21 July 2025. `trendingVideos` is the official Trending **music** chart, not a general video feed. Legacy `category: \"now\"` inputs are mapped to it with a `retired` status row.\n- **Exact details depend on YouTube's detail responses.** Views, likes, comment counts, subscriber counts and upload dates are filled from the player and the public watch-next endpoint. On some datacenter IPs YouTube strips the player response, so `youtubeCategory`, `keywords`, `isShortsEligible` and `isFamilySafe` may be omitted and `publishedDate` may be date-only. The listing row itself is never dropped.\n- **Courses can be empty from some networks.** In some cloud environments YouTube serves no videos for `/courses` even though the page works elsewhere. The run returns a `no_results` status row; choose `learning` for a reliable editorial education feed.\n- **Some Shorts songs have no video ID.** A small number of Shorts chart entries have no linked video, so those rows keep `trackId` and omit `url`.\n- **Hype and some hubs are not available cookielessly.** Hype, shopping and podcast hubs, and a localised fashion hub return no usable rows. They are not shipped rather than filled with invented values.\n- **Comments and subscribers are partial.** `commentCount` is exact when comments are enabled; it needs one extra comments-continuation request. `subscriberCount` is exact only when YouTube publishes an exact number — small channels do, while large channels publish rounded text. The displayed value is always kept in `subscriberCountText`.\n- **Coverage is chart-specific.** Podcasts are published only in US, CA and MX. Shorts songs cover 22 markets plus global. Trending music videos and trailers are country-only. Top music videos, top songs, top artists and Shorts songs have a global ranking; the other charts do not.\n- **History is chart-specific.** Weekly top music videos, top songs and top artists accept `date` back to 21 September 2017. Daily top music videos start on 6 November 2023. Shorts songs start on 2 November 2023 (weekly) or 6 November 2023 (daily). Trending music videos, trailers and podcasts return the current chart only. Dates before those floors, or after the latest published chart, return an `unsupported_chart_period` status row.\n- **Charts are fixed lists.** YouTube returns about 30, 50–54 or 100 entries per chart (Shorts can return 51 in some markets) and does not expose pagination. Use `maxItems`/`maxItemsPerChart` and split by country, chart or date to cover more.\n- **`viewsPerHour` is an average.** It is lifetime views divided by hours since upload, not live velocity. When only a date is available it is approximate by up to 24 hours.\n- **`onlyNew` is bounded.** Each monitor name keeps up to 50,000 keys in its key-value store; older keys roll off.\n- **This is not a keyword search actor.** Use the separate YouTube search actor for keyword discovery.\n\n## FAQ\n\n### What happened to YouTube's general Trending page?\n\nYouTube retired the general Trending page and the Trending Now list on 21 July 2025. The `trendingVideos` chart returns YouTube's official Trending music chart, which is the current replacement. A legacy `category: \"now\"` input is mapped to that chart and the run adds a `retired` status row explaining the change.\n\n### What is the difference between `charts` and `hubs`?\n\n`charts` reads YouTube's official ranked lists with chart positions and movement. `hubs` reads editorial category pages such as Gaming trending, News, Sports, Learning and Courses. Hub order reflects the page layout, not an official chart rank, and `rankSource` tells you which one a row uses.\n\n### Which charts work globally?\n\nTop music videos, top songs, top artists and Shorts songs publish a global ranking. Trending music videos and trending movie trailers are country-only. Podcast shows are published only for the United States, Canada and Mexico.\n\n### Which charts support historical dates?\n\nWeekly top music videos, top songs and top artists accept a `date` back to 21 September 2017. Daily top music videos start on 6 November 2023, and Shorts songs start on 2 November 2023 (weekly) or 6 November 2023 (daily). Trending music videos, trending movie trailers and podcast shows return the current chart only.\n\n### Are comment and subscriber counts exact?\n\n`commentCount` is an exact integer when the video has comments and exact details are enabled. `subscriberCount` is an exact integer only when YouTube publishes one — this is common for small channels. Large channels publish rounded text such as `15.1M subscribers`, which is kept in `subscriberCountText` and never expanded into a fake exact number.\n\n### Why is the Shorts chart a song chart?\n\nYouTube's Shorts chart ranks songs used in Shorts, not individual Shorts videos. The actor labels those rows as `track` and keeps the chart honest rather than presenting a video ranking that does not exist.\n\n### Why are some fields missing from a row?\n\nEach chart and hub exposes a different field set. For example, artists have no video ID, podcasts have no lifetime view count, and live videos have no fixed duration. Missing values are omitted rather than filled with zero or null.\n\n### Are the view and like counts exact?\n\n`chartViewCount` is the views accumulated during the chart period. `viewCount` and `likeCount` are exact lifetime counters and appear when `includeVideoDetails` is enabled; a hub row can also carry `viewCount` when the page itself shows an unabridged count. The actor first asks YouTube's player, then the public watch-next endpoint, then the watch page. On some cloud IPs only the watch-next path is available, which still supplies exact views and likes but only a date (not a time) for `publishedDate`. Display text such as `1.2M views` is kept separately in `viewCountText` and is never expanded into a fake exact number.\n\n### Do I need an API key, login or proxy?\n\nNo. The actor reads public YouTube chart data and public category pages without an account, API key, cookies or proxy configuration.\n\n### Is this affiliated with YouTube?\n\nNo. This actor is an independent third-party tool and is not affiliated with, endorsed by or sponsored by YouTube or Google.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "youtube-trending-feed-extractor-by-category",
      "title": "YouTube Trending Feed Extractor by Category & Market",
      "description": "Scrape YouTube Charts and category hubs: 7 chart types across 68 markets plus global, Gaming trending/live, News sections, Sports, Learning and Courses, with exact views, likes, dates, tags and rank movement.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "../Dockerfile",
      "readme": "# YouTube Trending Feed Extractor by Category & Market\n\nScrape **YouTube's current trending surfaces** — the official music, movie-trailer and podcast charts, plus the Gaming, News, Sports, Learning and Courses category hubs. Choose from seven chart types across 68 markets and global where published, or read up to 50 videos from Gaming trending and Gaming live. Every row keeps its chart rank or page position, and optional exact video details add lifetime views, likes, comment counts, upload dates, channel subscriber counts where published, YouTube category, descriptions, tags and Shorts eligibility. No login, API key or proxy setup is required.\n\n## What this actor does\n\n- **Two modes:** `charts` for YouTube's official rankings and `hubs` for category pages\n- **Seven charts across 68 markets plus global** where the selected chart publishes a global ranking\n- **Category hubs:** Gaming trending, Gaming live, News with selectable sections, Sports, Learning and Courses\n- **Exact video details:** optional lifetime views, likes, exact comment counts, upload date and description, plus player-only category, tags and Shorts flags when YouTube exposes them; channel subscriber counts are added when YouTube publishes an exact number\n- **Empty fields are omitted** — no nulls, blank strings or empty arrays in any row\n\n## Output per chart entry\n\nChart rows describe ranked music, trailer or podcast entries. Each row keeps the chart position and adds movement and history fields where the chart publishes them.\n\n- `position` — chart rank\n- `recordType` — `chartEntry`\n- `type` — `video`, `track`, `artist` or `podcastShow`\n- `videoId`, `trackId`, `artistId`, `playlistId` — identifiers available for the entry type\n- `title` — entry title\n- `url` — watch, channel or playlist URL\n- `channelName`, `channelId`, `channelUrl`, `channelHandle` — channel details where the chart exposes them\n- `artists` — performing artists\n- `songwriters`, `producers` — credits where published\n- `label` — record label for song charts\n- `releaseDate` — music, trailer or podcast release date\n- `primaryGenre`, `numEpisodes`, `lastUpdatedDate` — podcast-show details\n- `chartViewCount` — views accumulated during the chart period\n- `viewCount` — exact lifetime views when exact details are enabled\n- `likeCount` — exact likes when exact details are enabled\n- `commentCount` — exact comment count when comments are enabled and exact details are on\n- `subscriberCount`, `subscriberCountText` — exact channel subscriber count when YouTube publishes one, plus the displayed text (which is rounded for large channels)\n- `durationText`, `durationSeconds` — track, video or trailer duration\n- `thumbnailUrl`, `thumbnails` — highest-resolution image and all available sizes\n- `previousPosition`, `rankChange`, `periodsOnChart`, `viewsChangePercent`, `isNewEntry` — chart movement; `rankChange` is positive when an entry moved up\n- `chartDate`, `chartType`, `chartPeriod` — chart date, requested chart and daily/weekly period\n- `countryCode`, `countryName` — chart market\n- `category` — `music`, `movies` or `podcasts`\n- `market` — same country code as `countryCode`\n- `sourceType` — `youtube_charts`\n- `sourceName` — the chart slug, such as `topSongs`\n- `sourceUrl` — the public chart page\n- `rankSource` — `chart`\n- `description`, `keywords`, `youtubeCategory`, `isShortsEligible`, `isFamilySafe` — added when exact details are enabled and YouTube exposes the player response; `description` can also come from the watch-next endpoint\n- `publishedDate`, `publishedTimeText`, `isLive`, `liveStatus`, `scheduledStartTime`, `viewsPerHour` — publication and live status when available\n- `badges` — badge labels where the source provides them\n- `fallbackQuery` — reserved for labelled fallback rows; normally absent\n- `scrapedAt` — UTC timestamp\n\n## Output per category-hub video\n\nHub rows are individual videos read from a category page. They keep the same identity, channel, duration, thumbnail and provenance fields as chart rows, plus:\n\n- `position` — page order\n- `recordType` — `video`\n- `type` — `video`\n- `channelAvatarUrl` — channel avatar shown on the hub card\n- `isVerified` — present when the channel carries a verified badge\n- `viewCountText`, `publishedTimeText` — display text from the page\n- `viewCount` — exact lifetime views when exact details are enabled, or when the hub shows an unabridged count\n- `commentCount`, `subscriberCount`, `subscriberCountText` — added by exact details when YouTube publishes exact values\n- `badges`, `isLive` — badges and live status from the page\n- `category` — `gaming`, `news`, `sports`, `learning` or `courses`\n- `countryCode`, `countryName` — hub market\n- `market` — same country code as `countryCode`\n- `sourceType` — `category_page`\n- `sourceName` — `gaming`, `gamingLive`, `news`, `news_business`, `sports`, `learning` or `courses`\n- `sourceUrl` — the public hub page\n- `rankSource` — `page`\n- `chartViewCount`, `chartDate`, `chartType`, `chartPeriod`, `previousPosition`, `rankChange`, `periodsOnChart`, `viewsChangePercent`, `isNewEntry` — not used for hub rows\n\n## Output per status record\n\nA status row explains a source that was skipped, unsupported or empty. It always carries `recordType: \"status\"`, `status`, `message`, `mode` and `scrapedAt`, plus the relevant `category`, `chartType`, `countryCode`, `market`, `period`, `date` and `resultCount` when known. Status values are `no_results`, `unsupported_country`, `unsupported_chart_period`, `retired` and `partial_source`.\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `charts` | `charts` for official rankings, `hubs` for category pages |\n| `charts` | array | `[\"trendingVideos\"]` | One or more chart types (mode=charts) |\n| `categories` | array | `[\"gaming\"]` | One or more category hubs (mode=hubs) |\n| `newsSections` | array | `[\"top\"]` | News tabs to read (mode=hubs, categories includes `news`) |\n| `countries` | array | `[\"US\"]` | One or more of the 68 chart markets, plus `global` where supported |\n| `period` | string | `daily` | `daily` or `weekly` for charts that publish both |\n| `date` | string | – | Historical date in `YYYY-MM-DD`; empty for the most recent chart |\n| `maxItems` | integer | `100` | Total data rows across all sources (1–10,000) |\n| `maxItemsPerChart` | integer | `100` | Rows per chart or hub feed (1–100) |\n| `includeVideoDetails` | boolean | `true` | Fetch exact lifetime views, likes, dates and descriptions; player-only extras when available |\n| `maxConcurrency` | integer | `5` | Parallel exact-detail requests (1–10) |\n| `onlyNew` | boolean | `false` | Skip rows already emitted by the same monitor |\n| `monitorName` | string | `default` | Separate only-new histories by name |\n\n### Example: trending music videos in the United States\n\n```json\n{\n  \"mode\": \"charts\",\n  \"charts\": [\"trendingVideos\"],\n  \"countries\": [\"US\"],\n  \"maxItems\": 3,\n  \"includeVideoDetails\": false\n}\n```\n\n### Example: weekly top songs with history in Germany and the United Kingdom\n\n```json\n{\n  \"mode\": \"charts\",\n  \"charts\": [\"topSongs\"],\n  \"countries\": [\"DE\", \"GB\"],\n  \"period\": \"weekly\",\n  \"date\": \"2026-10-22\",\n  \"maxItems\": 100,\n  \"includeVideoDetails\": true\n}\n```\n\n### Example: gaming trending and live in Japan\n\n```json\n{\n  \"mode\": \"hubs\",\n  \"categories\": [\"gaming\", \"gamingLive\"],\n  \"countries\": [\"JP\"],\n  \"maxItems\": 50\n}\n```\n\n### Example: top stories, business and technology news in the United States\n\n```json\n{\n  \"mode\": \"hubs\",\n  \"categories\": [\"news\"],\n  \"newsSections\": [\"top\", \"business\", \"technology\"],\n  \"countries\": [\"US\"],\n  \"maxItems\": 60\n}\n```\n\n## Use cases\n\n- **Music-industry tracking** — follow top songs, artists and videos across markets and chart dates\n- **Creator and label intelligence** — compare chart movement, periods on chart and view growth\n- **Gaming and esports research** — capture the current Gaming trending and live line-up by country\n- **Newsroom monitoring** — pull top stories and section feeds for one or more markets\n- **Cross-market comparison** — run the same chart in several countries to compare regional taste\n- **Trend and virality research** — combine exact lifetime views, publish dates and chart rank history\n\n## Limitations and honest caveats\n\n- **General Trending is gone.** YouTube retired the general Trending page and Trending Now list on 21 July 2025. `trendingVideos` is the official Trending **music** chart, not a general video feed. Legacy `category: \"now\"` inputs are mapped to it with a `retired` status row.\n- **Exact details depend on YouTube's detail responses.** Views, likes, comment counts, subscriber counts and upload dates are filled from the player and the public watch-next endpoint. On some datacenter IPs YouTube strips the player response, so `youtubeCategory`, `keywords`, `isShortsEligible` and `isFamilySafe` may be omitted and `publishedDate` may be date-only. The listing row itself is never dropped.\n- **Courses can be empty from some networks.** In some cloud environments YouTube serves no videos for `/courses` even though the page works elsewhere. The run returns a `no_results` status row; choose `learning` for a reliable editorial education feed.\n- **Some Shorts songs have no video ID.** A small number of Shorts chart entries have no linked video, so those rows keep `trackId` and omit `url`.\n- **Hype and some hubs are not available cookielessly.** Hype, shopping and podcast hubs, and a localised fashion hub return no usable rows. They are not shipped rather than filled with invented values.\n- **Comments and subscribers are partial.** `commentCount` is exact when comments are enabled; it needs one extra comments-continuation request. `subscriberCount` is exact only when YouTube publishes an exact number — small channels do, while large channels publish rounded text. The displayed value is always kept in `subscriberCountText`.\n- **Coverage is chart-specific.** Podcasts are published only in US, CA and MX. Shorts songs cover 22 markets plus global. Trending music videos and trailers are country-only. Top music videos, top songs, top artists and Shorts songs have a global ranking; the other charts do not.\n- **History is chart-specific.** Weekly top music videos, top songs and top artists accept `date` back to 21 September 2017. Daily top music videos start on 6 November 2023. Shorts songs start on 2 November 2023 (weekly) or 6 November 2023 (daily). Trending music videos, trailers and podcasts return the current chart only. Dates before those floors, or after the latest published chart, return an `unsupported_chart_period` status row.\n- **Charts are fixed lists.** YouTube returns about 30, 50–54 or 100 entries per chart (Shorts can return 51 in some markets) and does not expose pagination. Use `maxItems`/`maxItemsPerChart` and split by country, chart or date to cover more.\n- **`viewsPerHour` is an average.** It is lifetime views divided by hours since upload, not live velocity. When only a date is available it is approximate by up to 24 hours.\n- **`onlyNew` is bounded.** Each monitor name keeps up to 50,000 keys in its key-value store; older keys roll off.\n- **This is not a keyword search actor.** Use the separate YouTube search actor for keyword discovery.\n\n## FAQ\n\n### What happened to YouTube's general Trending page?\n\nYouTube retired the general Trending page and the Trending Now list on 21 July 2025. The `trendingVideos` chart returns YouTube's official Trending music chart, which is the current replacement. A legacy `category: \"now\"` input is mapped to that chart and the run adds a `retired` status row explaining the change.\n\n### What is the difference between `charts` and `hubs`?\n\n`charts` reads YouTube's official ranked lists with chart positions and movement. `hubs` reads editorial category pages such as Gaming trending, News, Sports, Learning and Courses. Hub order reflects the page layout, not an official chart rank, and `rankSource` tells you which one a row uses.\n\n### Which charts work globally?\n\nTop music videos, top songs, top artists and Shorts songs publish a global ranking. Trending music videos and trending movie trailers are country-only. Podcast shows are published only for the United States, Canada and Mexico.\n\n### Which charts support historical dates?\n\nWeekly top music videos, top songs and top artists accept a `date` back to 21 September 2017. Daily top music videos start on 6 November 2023, and Shorts songs start on 2 November 2023 (weekly) or 6 November 2023 (daily). Trending music videos, trending movie trailers and podcast shows return the current chart only.\n\n### Are comment and subscriber counts exact?\n\n`commentCount` is an exact integer when the video has comments and exact details are enabled. `subscriberCount` is an exact integer only when YouTube publishes one — this is common for small channels. Large channels publish rounded text such as `15.1M subscribers`, which is kept in `subscriberCountText` and never expanded into a fake exact number.\n\n### Why is the Shorts chart a song chart?\n\nYouTube's Shorts chart ranks songs used in Shorts, not individual Shorts videos. The actor labels those rows as `track` and keeps the chart honest rather than presenting a video ranking that does not exist.\n\n### Why are some fields missing from a row?\n\nEach chart and hub exposes a different field set. For example, artists have no video ID, podcasts have no lifetime view count, and live videos have no fixed duration. Missing values are omitted rather than filled with zero or null.\n\n### Are the view and like counts exact?\n\n`chartViewCount` is the views accumulated during the chart period. `viewCount` and `likeCount` are exact lifetime counters and appear when `includeVideoDetails` is enabled; a hub row can also carry `viewCount` when the page itself shows an unabridged count. The actor first asks YouTube's player, then the public watch-next endpoint, then the watch page. On some cloud IPs only the watch-next path is available, which still supplies exact views and likes but only a date (not a time) for `publishedDate`. Display text such as `1.2M views` is kept separately in `viewCountText` and is never expanded into a fake exact number.\n\n### Do I need an API key, login or proxy?\n\nNo. The actor reads public YouTube chart data and public category pages without an account, API key, cookies or proxy configuration.\n\n### Is this affiliated with YouTube?\n\nNo. This actor is an independent third-party tool and is not affiliated with, endorsed by or sponsored by YouTube or Google.\n",
      "input": {
        "title": "YouTube Trending Feed Extractor Input",
        "description": "Read YouTube Charts or category hubs for one or more countries, with optional exact video details.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to read. 'charts' uses YouTube's official music, trailer and podcast charts. 'hubs' uses YouTube's category pages such as Gaming trending, News, Sports, Learning and Courses.",
            "editor": "select",
            "enum": [
              "charts",
              "hubs"
            ],
            "enumTitles": [
              "YouTube Charts",
              "Category hubs"
            ],
            "default": "charts",
            "prefill": "charts"
          },
          "charts": {
            "title": "Charts (mode=charts)",
            "type": "array",
            "description": "One or more YouTube charts. Trending music videos is the official replacement for the retired general Trending page. Top songs and top artists are weekly; Shorts songs is daily or weekly. Music and Shorts charts include rank movement and optional history.",
            "editor": "select",
            "uniqueItems": true,
            "minItems": 1,
            "default": [
              "trendingVideos"
            ],
            "prefill": [
              "trendingVideos"
            ],
            "items": {
              "type": "string",
              "enum": [
                "trendingVideos",
                "topVideos",
                "topSongs",
                "topArtists",
                "shortsSongs",
                "movieTrailers",
                "podcasts"
              ],
              "enumTitles": [
                "Trending music videos (current)",
                "Top music videos (daily or weekly)",
                "Top songs (weekly)",
                "Top artists (weekly)",
                "Top songs in Shorts (daily or weekly)",
                "Trending movie trailers (current)",
                "Podcast shows (weekly)"
              ]
            }
          },
          "categories": {
            "title": "Category hubs (mode=hubs)",
            "type": "array",
            "description": "One or more category pages. Gaming trending and Gaming live return up to 50 videos. News reads the selected news sections. Sports, Learning and Courses are editorial category feeds.",
            "editor": "select",
            "uniqueItems": true,
            "minItems": 1,
            "default": [
              "gaming"
            ],
            "prefill": [
              "gaming"
            ],
            "items": {
              "type": "string",
              "enum": [
                "gaming",
                "gamingLive",
                "news",
                "sports",
                "learning",
                "courses"
              ],
              "enumTitles": [
                "Gaming trending",
                "Gaming live",
                "News",
                "Sports",
                "Learning",
                "Courses"
              ]
            }
          },
          "newsSections": {
            "title": "News sections (mode=hubs, categories includes news)",
            "type": "array",
            "description": "Which News tabs to read. 'Top stories' is the main /news page; the other sections are direct news-destination feeds. Available sections vary by country.",
            "editor": "select",
            "uniqueItems": true,
            "minItems": 1,
            "default": [
              "top"
            ],
            "prefill": [
              "top"
            ],
            "items": {
              "type": "string",
              "enum": [
                "top",
                "sports",
                "entertainment",
                "business",
                "world",
                "national",
                "health",
                "technology"
              ],
              "enumTitles": [
                "Top stories",
                "Sports",
                "Entertainment",
                "Business",
                "World",
                "National",
                "Health",
                "Technology"
              ]
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "One or more markets. The 68 YouTube Charts markets are supported; 'global' is supported only for charts that publish a global ranking (top videos, top songs, top artists, Shorts songs).",
            "editor": "select",
            "uniqueItems": true,
            "minItems": 1,
            "default": [
              "US"
            ],
            "prefill": [
              "US"
            ],
            "items": {
              "type": "string",
              "enum": [
                "AR",
                "AU",
                "AT",
                "BE",
                "BO",
                "BR",
                "CA",
                "CL",
                "CO",
                "CR",
                "CZ",
                "DK",
                "DO",
                "EC",
                "EG",
                "SV",
                "EE",
                "FI",
                "FR",
                "DE",
                "GT",
                "HN",
                "HK",
                "HU",
                "IS",
                "IN",
                "ID",
                "IE",
                "IL",
                "IT",
                "JP",
                "KE",
                "LU",
                "MY",
                "MX",
                "NL",
                "NZ",
                "NI",
                "NG",
                "NO",
                "PA",
                "PY",
                "PE",
                "PH",
                "PL",
                "PT",
                "RO",
                "RU",
                "SA",
                "RS",
                "SG",
                "ZA",
                "KR",
                "ES",
                "SE",
                "CH",
                "TW",
                "TZ",
                "TH",
                "TR",
                "UG",
                "UA",
                "AE",
                "GB",
                "US",
                "UY",
                "VN",
                "ZW",
                "global"
              ],
              "enumTitles": [
                "Argentina",
                "Australia",
                "Austria",
                "Belgium",
                "Bolivia",
                "Brazil",
                "Canada",
                "Chile",
                "Colombia",
                "Costa Rica",
                "Czechia",
                "Denmark",
                "Dominican Republic",
                "Ecuador",
                "Egypt",
                "El Salvador",
                "Estonia",
                "Finland",
                "France",
                "Germany",
                "Guatemala",
                "Honduras",
                "Hong Kong",
                "Hungary",
                "Iceland",
                "India",
                "Indonesia",
                "Ireland",
                "Israel",
                "Italy",
                "Japan",
                "Kenya",
                "Luxembourg",
                "Malaysia",
                "Mexico",
                "Netherlands",
                "New Zealand",
                "Nicaragua",
                "Nigeria",
                "Norway",
                "Panama",
                "Paraguay",
                "Peru",
                "Philippines",
                "Poland",
                "Portugal",
                "Romania",
                "Russia",
                "Saudi Arabia",
                "Serbia",
                "Singapore",
                "South Africa",
                "South Korea",
                "Spain",
                "Sweden",
                "Switzerland",
                "Taiwan",
                "Tanzania",
                "Thailand",
                "Turkey",
                "Uganda",
                "Ukraine",
                "United Arab Emirates",
                "United Kingdom",
                "United States",
                "Uruguay",
                "Vietnam",
                "Zimbabwe",
                "Global"
              ]
            }
          },
          "period": {
            "title": "Chart period (mode=charts)",
            "type": "string",
            "description": "Daily or weekly ranking. Weekly-only charts automatically use weekly. Current-only charts such as Trending music videos and Trending movie trailers ignore this setting.",
            "editor": "select",
            "enum": [
              "daily",
              "weekly"
            ],
            "enumTitles": [
              "Daily",
              "Weekly"
            ],
            "default": "daily",
            "prefill": "daily"
          },
          "date": {
            "title": "Chart date (mode=charts)",
            "type": "string",
            "description": "Historical chart date in YYYY-MM-DD format. Leave empty for the latest chart. Supported by Top music videos, Top songs, Top artists and Shorts songs; current-only charts ignore it.",
            "editor": "textfield",
            "default": "",
            "prefill": ""
          },
          "maxItems": {
            "title": "Max items",
            "type": "integer",
            "description": "Total data rows to return across all charts, categories and countries.",
            "default": 100,
            "minimum": 1,
            "maximum": 10000,
            "prefill": 3
          },
          "maxItemsPerChart": {
            "title": "Max items per chart or feed",
            "type": "integer",
            "description": "Rows to take from each chart/country or category/country combination. Source ceilings still apply.",
            "default": 100,
            "minimum": 1,
            "maximum": 100,
            "prefill": 3
          },
          "includeVideoDetails": {
            "title": "Include exact video details",
            "type": "boolean",
            "description": "Fetch exact lifetime views, likes, upload dates and descriptions for every video. YouTube category, tags, Shorts eligibility and family-safe flags are filled when YouTube's player response is available and may be omitted on some cloud IPs. Adds one or more detail requests per video.",
            "default": true,
            "prefill": false
          },
          "maxConcurrency": {
            "title": "Detail concurrency",
            "type": "integer",
            "description": "How many exact-detail requests may run in parallel.",
            "default": 5,
            "minimum": 1,
            "maximum": 10,
            "prefill": 3
          },
          "onlyNew": {
            "title": "Only new items",
            "type": "boolean",
            "description": "Skip rows already emitted by a previous run with the same monitor name.",
            "default": false,
            "prefill": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Separate only-new histories by monitor name.",
            "editor": "textfield",
            "default": "default",
            "prefill": "default"
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "YouTube Trending Feed Extractor by Category & Market Output",
        "description": "Ranked YouTube chart entries and category-hub videos with rank movement, exact video details and status rows.",
        "properties": {
          "videos": {
            "type": "string",
            "title": "YouTube Trending Feed Extractor dataset",
            "description": "Dataset containing chart entries, category-hub videos and status rows.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "defaultMemoryMbytes": 1024,
      "minMemoryMbytes": 1024,
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Trending Overview",
              "transformation": {
                "fields": [
                  "position",
                  "sourceName",
                  "title",
                  "channelName",
                  "chartViewCount",
                  "viewCount",
                  "countryCode",
                  "chartType",
                  "type",
                  "url",
                  "status"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "position": {
                    "label": "#",
                    "format": "number"
                  },
                  "sourceName": {
                    "label": "Source",
                    "format": "text"
                  },
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "channelName": {
                    "label": "Channel",
                    "format": "text"
                  },
                  "chartViewCount": {
                    "label": "Chart Views",
                    "format": "number"
                  },
                  "viewCount": {
                    "label": "Lifetime Views",
                    "format": "number"
                  },
                  "countryCode": {
                    "label": "Country",
                    "format": "text"
                  },
                  "chartType": {
                    "label": "Chart",
                    "format": "text"
                  },
                  "type": {
                    "label": "Type",
                    "format": "text"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  },
                  "status": {
                    "label": "Status",
                    "format": "text"
                  }
                }
              }
            },
            "full": {
              "title": "Full Details",
              "transformation": {
                "fields": [
                  "position",
                  "recordType",
                  "type",
                  "videoId",
                  "trackId",
                  "artistId",
                  "playlistId",
                  "title",
                  "url",
                  "channelName",
                  "channelId",
                  "channelUrl",
                  "channelHandle",
                  "channelAvatarUrl",
                  "isVerified",
                  "viewCount",
                  "viewCountText",
                  "likeCount",
                  "commentCount",
                  "subscriberCount",
                  "subscriberCountText",
                  "chartViewCount",
                  "publishedTimeText",
                  "publishedDate",
                  "durationText",
                  "durationSeconds",
                  "thumbnailUrl",
                  "thumbnails",
                  "badges",
                  "isLive",
                  "liveStatus",
                  "scheduledStartTime",
                  "isShortsEligible",
                  "isFamilySafe",
                  "viewsPerHour",
                  "description",
                  "keywords",
                  "youtubeCategory",
                  "artists",
                  "songwriters",
                  "producers",
                  "label",
                  "releaseDate",
                  "primaryGenre",
                  "numEpisodes",
                  "lastUpdatedDate",
                  "previousPosition",
                  "rankChange",
                  "periodsOnChart",
                  "viewsChangePercent",
                  "isNewEntry",
                  "chartDate",
                  "chartType",
                  "chartPeriod",
                  "period",
                  "date",
                  "countryCode",
                  "countryName",
                  "category",
                  "market",
                  "sourceType",
                  "sourceName",
                  "sourceUrl",
                  "rankSource",
                  "fallbackQuery",
                  "status",
                  "message",
                  "mode",
                  "resultCount",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "position": {
                    "label": "#",
                    "format": "number"
                  },
                  "recordType": {
                    "label": "Record",
                    "format": "text"
                  },
                  "type": {
                    "label": "Type",
                    "format": "text"
                  },
                  "videoId": {
                    "label": "Video ID",
                    "format": "text"
                  },
                  "trackId": {
                    "label": "Track ID",
                    "format": "text"
                  },
                  "artistId": {
                    "label": "Artist ID",
                    "format": "text"
                  },
                  "playlistId": {
                    "label": "Playlist ID",
                    "format": "text"
                  },
                  "title": {
                    "label": "Title",
                    "format": "text"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  },
                  "channelName": {
                    "label": "Channel",
                    "format": "text"
                  },
                  "channelId": {
                    "label": "Channel ID",
                    "format": "text"
                  },
                  "channelUrl": {
                    "label": "Channel URL",
                    "format": "link"
                  },
                  "channelHandle": {
                    "label": "Handle",
                    "format": "text"
                  },
                  "isVerified": {
                    "label": "Verified",
                    "format": "boolean"
                  },
                  "viewCount": {
                    "label": "Lifetime Views",
                    "format": "number"
                  },
                  "viewCountText": {
                    "label": "Views Text",
                    "format": "text"
                  },
                  "likeCount": {
                    "label": "Likes",
                    "format": "number"
                  },
                  "commentCount": {
                    "label": "Comments",
                    "format": "number"
                  },
                  "subscriberCount": {
                    "label": "Subscribers",
                    "format": "number"
                  },
                  "subscriberCountText": {
                    "label": "Subscribers Text",
                    "format": "text"
                  },
                  "chartViewCount": {
                    "label": "Chart Views",
                    "format": "number"
                  },
                  "publishedTimeText": {
                    "label": "Published",
                    "format": "text"
                  },
                  "publishedDate": {
                    "label": "Published Date",
                    "format": "text"
                  },
                  "durationText": {
                    "label": "Duration",
                    "format": "text"
                  },
                  "durationSeconds": {
                    "label": "Duration (s)",
                    "format": "number"
                  },
                  "thumbnailUrl": {
                    "label": "Thumbnail",
                    "format": "link"
                  },
                  "isLive": {
                    "label": "Live",
                    "format": "boolean"
                  },
                  "isShortsEligible": {
                    "label": "Shorts Eligible",
                    "format": "boolean"
                  },
                  "viewsPerHour": {
                    "label": "Views / Hour",
                    "format": "number"
                  },
                  "chartDate": {
                    "label": "Chart Date",
                    "format": "text"
                  },
                  "chartType": {
                    "label": "Chart",
                    "format": "text"
                  },
                  "chartPeriod": {
                    "label": "Period",
                    "format": "text"
                  },
                  "countryCode": {
                    "label": "Country",
                    "format": "text"
                  },
                  "category": {
                    "label": "Category",
                    "format": "text"
                  },
                  "market": {
                    "label": "Market",
                    "format": "text"
                  },
                  "sourceType": {
                    "label": "Source Type",
                    "format": "text"
                  },
                  "sourceName": {
                    "label": "Source",
                    "format": "text"
                  },
                  "rankSource": {
                    "label": "Rank Source",
                    "format": "text"
                  },
                  "status": {
                    "label": "Status",
                    "format": "text"
                  },
                  "message": {
                    "label": "Message",
                    "format": "text"
                  },
                  "scrapedAt": {
                    "label": "Scraped At",
                    "format": "text"
                  }
                }
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.0.2",
    "imageDigest": "7b1b359da03bef02616a916d2b551e30a6022b32a9df9555bb4bea61e4c629ff",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.009446666666666667
    }
  }
}