{
  "data": {
    "id": "q7xXTAkrCWFXH2vcS",
    "actId": "HjtSheUDKuElb7oxP",
    "userId": "9Um4NEFR7z42j35AD",
    "startedAt": "2026-08-16T18:00:21.828Z",
    "finishedAt": "2026-08-16T18:01:25.450Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 63284,
      "runTimeSecs": 63.284,
      "computeUnits": 0.07031555555555556,
      "imageSizeBytes": 525223936
    },
    "options": {
      "useCache": false,
      "betaPackages": false,
      "tag": "latest",
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"YouTube Channel Scraper input\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"startUrls\": {\n      \"title\": \"YouTube channel URLs or handles\",\n      \"type\": \"array\",\n      \"description\": \"Add 1 to 1,000 public YouTube channel URLs or handles. Duplicate inputs are checked once. Each unique input creates one result row and adds usage.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [\n        \"https://www.youtube.com/@MrBeast\"\n      ],\n      \"prefill\": [\n        \"https://www.youtube.com/@MrBeast\"\n      ],\n      \"minItems\": 1,\n      \"maxItems\": 1000\n    }\n  },\n  \"required\": [\n    \"startUrls\"\n  ]\n}",
    "readme": "# YouTube Channel Scraper – Profiles & Stats\n\n## 📊 What does YouTube Channel Scraper do?\n\nPaste public YouTube channel URLs or handles and get clean channel profiles in\nbulk. Use the data to enrich creator lists, compare audiences, find public\nidentity links, and refresh channel records.\n\nEvery unique input gets one flat, matched row. The row keeps the original\n`input`, canonical `channelUrl`, stable channel identity, public profile facts,\naudience counts, precision labels, and a clear `status` and `statusReason`.\n\nThis Actor does not log in, use cookies, download videos, collect private\nsubscriber lists, or access YouTube Studio. It reads public channel pages only.\n\nWith YouTube Channel Scraper, you can:\n\n- 🆔 Match channels with stable IDs, handles, and canonical URLs.\n- 📈 Compare subscriber, video, and total view counts.\n- 🔗 Find public owner links, websites, and social profiles.\n- 🌏 Collect declared country, language, keywords, and join date.\n- 🖼️ Save public avatar and banner URLs.\n- 🚦 Keep missing, blocked, and unavailable profiles as clear status rows.\n- 📦 Export results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.\n\n## 📦 What YouTube channel data can I extract?\n\nEach dataset row represents one attempted YouTube channel input.\n\n| Data group      | Example fields                                                     |\n| --------------- | ------------------------------------------------------------------ |\n| 🆔 Identity     | `channelId`, `channelUrl`, `handle`, `rssUrl`, `uploadsPlaylistId` |\n| 🧾 Profile      | `displayName`, `description`, `detectedEmails`, `detectedLinks`    |\n| 🔗 Public links | `ownerUrls`, `externalLinks`, `hasBusinessEmail`                   |\n| 🖼️ Media        | `avatarUrl`, `bannerUrl`                                           |\n| 📊 Counts       | `subscribersCount`, `videosCount`, `viewsCount`                    |\n| 🎯 Quality      | `countPrecision`, display-text count fields                        |\n| 🚦 Result       | `status`, `statusReason`, `observedAt`                             |\n\nMissing public values stay `null`. Rounded public counts are labeled\n`display_rounded`; they are not presented as exact values.\n\n## ⚙️ Can I use this Actor through an API?\n\nYes. Run it in Apify Console or through the Apify API, Python SDK, Node.js SDK,\nwebhooks, schedules, and Apify integrations.\n\n## 🎯 Why collect YouTube channel profiles?\n\n| Use case               | How the data helps                                                        |\n| ---------------------- | ------------------------------------------------------------------------- |\n| 📋 Creator enrichment  | Add stable IDs, audience size, links, and channel facts to creator lists. |\n| 📣 Campaign planning   | Compare channel fit and public reach before outreach.                     |\n| 🕵️ Competitor research | Track public channel size and activity over time.                         |\n| 🔗 Identity matching   | Use owner links to connect a channel with public profiles elsewhere.      |\n| 🧱 Data products       | Load stable profile rows into databases, dashboards, and internal tools.  |\n\n## 💵 Pricing\n\nEach useful profile row triggers one `profile` event. Prices per 1,000 useful\nrows are:\n\n| Plan                    | Price |\n| ----------------------- | ----: |\n| Free                    | $0.50 |\n| Bronze                  | $0.45 |\n| Silver                  | $0.40 |\n| Gold, Platinum, Diamond | $0.35 |\n\nApify platform usage is charged separately. There is no paid Actor start event.\nOne useful row is an `ok` or `partial` channel snapshot written to the default\ndataset. Invalid, missing, blocked, and failed inputs are not charged as profile\nresults. Each dataset row includes `isBillable` so this rule is visible.\n\n## 🚀 How do I use YouTube Channel Scraper?\n\n1. Open **YouTube Channel Scraper – Profiles & Stats** in Apify Console.\n2. Paste one or more public channel URLs or handles.\n3. Click **Start**.\n4. Open **Output** to inspect the rows and run summary.\n5. Download the dataset or connect it to your workflow.\n\n## ⬇️ Input\n\nAdd 1 to 1,000 values in `startUrls`:\n\n```json\n{\n  \"startUrls\": [\"https://www.youtube.com/@MrBeast\", \"@HikakinTV\"]\n}\n```\n\nAccepted inputs include channel URLs, `@handles`, and channel URLs ending in\n`/videos`, `/shorts`, `/streams`, or `/about`. Exact duplicate values run once.\n\n## ⬆️ Output sample\n\n```json\n{\n  \"platform\": \"youtube\",\n  \"input\": \"https://www.youtube.com/@MrBeast\",\n  \"channelId\": \"UCX6OQ3DkcsbYNE6H8uQQuVA\",\n  \"uploadsPlaylistId\": \"UUX6OQ3DkcsbYNE6H8uQQuVA\",\n  \"channelUrl\": \"https://www.youtube.com/@MrBeast\",\n  \"handle\": \"@MrBeast\",\n  \"displayName\": \"MrBeast\",\n  \"subscribersCount\": 508000000,\n  \"subscribersText\": \"508M subscribers\",\n  \"countPrecision\": {\n    \"subscribersCount\": \"display_rounded\"\n  },\n  \"status\": \"ok\",\n  \"statusReason\": null,\n  \"observedAt\": \"2026-07-16T00:00:00.000Z\"\n}\n```\n\n### 📌 Run summary\n\nThe `OUTPUT` record reports input counts, output rows, billable rows, status\ncounts, useful rates, and run time. It does not contain raw pages, cookies, or\nprivate request details.\n\n## 🎯 Status and quality fields\n\n- `ok`: the public channel identity was found.\n- `partial`: useful public channel facts were found, but some facts are missing.\n- `not_found`, `private`, or `login_required`: YouTube did not expose a usable\n  public profile for this request.\n- `blocked`, `challenge`, or `rate_limited`: the public source refused the\n  request at that time.\n- `parser_miss`: a page loaded, but the Actor could not safely tie profile facts\n  to the requested channel.\n- `invalid_input` or `failed`: the input was not a channel or the request failed.\n\n## 🔒 Source boundary and limits\n\n- Public logged-out channel pages only.\n- Subscriber lists are private to the channel owner and are not returned.\n- Public subscription lists may exist for channels that choose to show them,\n  but this Actor does not return a full following graph.\n- Business email text may require owner or viewer sign-in. The Actor reports\n  only whether YouTube shows the public contact action.\n- `detectedEmails` and `detectedLinks` are unverified clues from the public\n  description and public link fields. They can be missing or wrong.\n- The Actor does not open or crawl detected links.\n- YouTube can hide, delay, or round public values.\n\n## ❓ FAQ\n\n### Does this Actor need login, cookies, or an API key?\n\nNo.\n\n### Why are some fields missing?\n\nYouTube did not expose those fields publicly for that channel at collection\ntime. Check `status`, `statusReason`, and `countPrecision`.\n\n### How are duplicates handled?\n\nExact duplicate inputs are checked once. Use `channelId` as the strongest\ncross-run dedupe key when it is present.\n\n## 🛟 Support\n\nSend the run ID, input URL, expected channel, and observed row. Do not send\npasswords, cookies, or account credentials.\n\n## 🔗 Related social media scrapers\n\nContinue the same workflow on this platform or compare public data across\nplatforms.\n\n### Continue on YouTube\n\n- [YouTube Search Scraper](https://apify.com/chronometrica/youtube-search-scraper)\n  — find public videos, Shorts, channels, and metrics by keyword.\n- [YouTube Metrics Scraper](https://apify.com/chronometrica/youtube-metrics-scraper)\n  — collect public video, Short, channel, and engagement metrics.\n- [YouTube Comments Scraper](https://apify.com/chronometrica/youtube-comments-scraper)\n  — collect public comments, replies, authors, likes, pins, and creator\n  hearts.\n- [YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper)\n  — extract public captions as text, timestamps, SRT, VTT, or JSON.\n\n### Compare profiles across platforms\n\n- [Facebook Page Scraper](https://apify.com/chronometrica/facebook-channel-scraper)\n  — collect public Page details, links, and audience stats.\n- [Instagram Profile Scraper](https://apify.com/chronometrica/instagram-channel-scraper)\n  — collect public profile details, links, and audience stats.\n- [TikTok Profile Scraper](https://apify.com/chronometrica/tiktok-channel-scraper)\n  — collect public creator details, links, and audience stats.\n- [LinkedIn Profile Scraper](https://apify.com/chronometrica/linkedin-profile-scraper)\n  — collect public profile identity, headlines, and visible profile facts.\n- [X Profile Metrics Scraper](https://apify.com/chronometrica/x-profile-metrics)\n  — collect public profile details, audience counts, and activity stats.\n",
    "actorDefinition": {
      "$schema": "https://apify.com/schemas/v1/actor.ide.json",
      "actorSpecification": 1,
      "name": "youtube-channel-scraper",
      "title": "YouTube Channel Scraper – Profiles & Stats",
      "description": "Get clean public YouTube channel rows from URLs and handles, with stable IDs, links, audience stats, and a clear result for every input.",
      "categories": [
        "SOCIAL_MEDIA"
      ],
      "version": "0.1",
      "buildTag": "latest",
      "minMemoryMbytes": 512,
      "maxMemoryMbytes": 1024,
      "defaultRunOptions": {
        "timeoutSecs": 3600,
        "memoryMbytes": 1024
      },
      "input": {
        "title": "YouTube Channel Scraper input",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "startUrls": {
            "title": "YouTube channel URLs or handles",
            "type": "array",
            "description": "Add 1 to 1,000 public YouTube channel URLs or handles. Duplicate inputs are checked once. Each unique input creates one result row and adds usage.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [
              "https://www.youtube.com/@MrBeast"
            ],
            "prefill": [
              "https://www.youtube.com/@MrBeast"
            ],
            "minItems": 1,
            "maxItems": 1000
          }
        },
        "required": [
          "startUrls"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "properties": {
          "dataset": {
            "type": "string",
            "title": "Channel snapshots",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          },
          "summary": {
            "type": "string",
            "title": "Run summary",
            "template": "{{links.apiRunKeyValueStoreUrl}}/records/OUTPUT"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "fields": {
            "$schema": "http://json-schema.org/draft-07/schema#",
            "type": "object",
            "properties": {
              "platform": {
                "type": "string",
                "title": "Platform",
                "description": "Source platform."
              },
              "input": {
                "type": "string",
                "title": "Original Input",
                "description": "Channel URL or handle supplied by the customer."
              },
              "channelId": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Channel ID",
                "description": "Stable YouTube channel ID."
              },
              "channelUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Channel URL",
                "description": "Best public URL for the channel.",
                "format": "uri"
              },
              "handle": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Handle",
                "description": "Public YouTube handle, including @."
              },
              "ownerUrls": {
                "type": [
                  "array",
                  "null"
                ],
                "title": "Owner URLs",
                "description": "Public URLs YouTube lists for the channel owner.",
                "items": {
                  "type": "string"
                }
              },
              "rssUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "RSS URL",
                "description": "Public channel feed URL when exposed.",
                "format": "uri"
              },
              "uploadsPlaylistId": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Uploads Playlist ID",
                "description": "Stable YouTube uploads playlist ID derived from the channel ID."
              },
              "displayName": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Name",
                "description": "Public channel name."
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Description",
                "description": "Public channel description."
              },
              "detectedEmails": {
                "type": [
                  "array",
                  "null"
                ],
                "title": "Detected Emails",
                "description": "Unverified email-like strings detected in the public channel description.",
                "items": {
                  "type": "string"
                }
              },
              "detectedLinks": {
                "type": [
                  "array",
                  "null"
                ],
                "title": "Detected Links",
                "description": "Unverified web links detected in the public description or exposed by the channel.",
                "items": {
                  "type": "string"
                }
              },
              "keywords": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Keywords",
                "description": "Channel keywords when YouTube exposes them."
              },
              "country": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Country",
                "description": "Country declared on the channel page."
              },
              "defaultLanguage": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Default Language",
                "description": "Default channel language when exposed."
              },
              "availableCountryCodes": {
                "type": [
                  "array",
                  "null"
                ],
                "title": "Available Countries",
                "description": "Country codes where YouTube says the channel is available.",
                "items": {
                  "type": "string"
                }
              },
              "joinedAt": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Joined At",
                "description": "Join date parsed from YouTube's public text.",
                "format": "date"
              },
              "externalLinks": {
                "type": [
                  "array",
                  "null"
                ],
                "title": "External Links",
                "description": "Public links shown on the channel page.",
                "items": {
                  "type": "object"
                }
              },
              "hasBusinessEmail": {
                "type": [
                  "boolean",
                  "null"
                ],
                "title": "Business Email Listed",
                "description": "True when YouTube shows a business email contact action; the email itself may require sign-in."
              },
              "avatarUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Avatar",
                "description": "Best public avatar URL.",
                "format": "uri"
              },
              "bannerUrl": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Banner",
                "description": "Best public channel banner URL.",
                "format": "uri"
              },
              "isVerified": {
                "type": [
                  "boolean",
                  "null"
                ],
                "title": "Verified",
                "description": "True when YouTube shows a verified badge."
              },
              "isFamilySafe": {
                "type": [
                  "boolean",
                  "null"
                ],
                "title": "Family Safe",
                "description": "YouTube's public family-safe flag."
              },
              "isUnlisted": {
                "type": [
                  "boolean",
                  "null"
                ],
                "title": "Unlisted",
                "description": "YouTube's public unlisted flag when exposed."
              },
              "subscribersCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "title": "Subscribers",
                "description": "Subscriber count parsed from public display text and possibly rounded."
              },
              "subscribersText": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Subscribers (Display)",
                "description": "Subscriber count exactly as YouTube displays it."
              },
              "videosCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "title": "Videos",
                "description": "Video count parsed from public display text."
              },
              "videosText": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Videos (Display)",
                "description": "Video count exactly as YouTube displays it."
              },
              "viewsCount": {
                "type": [
                  "integer",
                  "null"
                ],
                "title": "Views",
                "description": "Total channel views parsed from public display text."
              },
              "viewsText": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Views (Display)",
                "description": "Total channel views exactly as YouTube displays them."
              },
              "countPrecision": {
                "type": [
                  "object",
                  "null"
                ],
                "title": "Count Precision",
                "description": "For each count: exact, display_rounded, or unavailable."
              },
              "status": {
                "type": "string",
                "title": "Row Status",
                "description": "Result state for this input."
              },
              "statusReason": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Status Reason",
                "description": "Plain reason when the row is not fully available."
              },
              "isBillable": {
                "type": "boolean",
                "title": "Billable",
                "description": "True only when this row creates a profile charge."
              },
              "observedAt": {
                "type": "string",
                "title": "Collected At",
                "description": "Time this channel snapshot was collected.",
                "format": "date-time"
              }
            }
          },
          "views": {
            "overview": {
              "title": "Channel snapshots",
              "transformation": {
                "fields": [
                  "platform",
                  "input",
                  "channelId",
                  "channelUrl",
                  "handle",
                  "displayName",
                  "country",
                  "subscribersCount",
                  "videosCount",
                  "viewsCount",
                  "status",
                  "isBillable",
                  "observedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "platform": {
                    "label": "Platform",
                    "format": "text"
                  },
                  "input": {
                    "label": "Original Input",
                    "format": "text"
                  },
                  "channelId": {
                    "label": "Channel ID",
                    "format": "text"
                  },
                  "channelUrl": {
                    "label": "Channel URL",
                    "format": "link"
                  },
                  "handle": {
                    "label": "Handle",
                    "format": "text"
                  },
                  "displayName": {
                    "label": "Name",
                    "format": "text"
                  },
                  "country": {
                    "label": "Country",
                    "format": "text"
                  },
                  "subscribersCount": {
                    "label": "Subscribers",
                    "format": "number"
                  },
                  "videosCount": {
                    "label": "Videos",
                    "format": "number"
                  },
                  "viewsCount": {
                    "label": "Views",
                    "format": "number"
                  },
                  "status": {
                    "label": "Row Status",
                    "format": "text"
                  },
                  "isBillable": {
                    "label": "Billable",
                    "format": "boolean"
                  },
                  "observedAt": {
                    "label": "Collected At",
                    "format": "date"
                  }
                }
              }
            }
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "readme": "# YouTube Channel Scraper – Profiles & Stats\n\n## 📊 What does YouTube Channel Scraper do?\n\nPaste public YouTube channel URLs or handles and get clean channel profiles in\nbulk. Use the data to enrich creator lists, compare audiences, find public\nidentity links, and refresh channel records.\n\nEvery unique input gets one flat, matched row. The row keeps the original\n`input`, canonical `channelUrl`, stable channel identity, public profile facts,\naudience counts, precision labels, and a clear `status` and `statusReason`.\n\nThis Actor does not log in, use cookies, download videos, collect private\nsubscriber lists, or access YouTube Studio. It reads public channel pages only.\n\nWith YouTube Channel Scraper, you can:\n\n- 🆔 Match channels with stable IDs, handles, and canonical URLs.\n- 📈 Compare subscriber, video, and total view counts.\n- 🔗 Find public owner links, websites, and social profiles.\n- 🌏 Collect declared country, language, keywords, and join date.\n- 🖼️ Save public avatar and banner URLs.\n- 🚦 Keep missing, blocked, and unavailable profiles as clear status rows.\n- 📦 Export results as JSON, JSONL, CSV, Excel, XML, RSS, or HTML.\n\n## 📦 What YouTube channel data can I extract?\n\nEach dataset row represents one attempted YouTube channel input.\n\n| Data group      | Example fields                                                     |\n| --------------- | ------------------------------------------------------------------ |\n| 🆔 Identity     | `channelId`, `channelUrl`, `handle`, `rssUrl`, `uploadsPlaylistId` |\n| 🧾 Profile      | `displayName`, `description`, `detectedEmails`, `detectedLinks`    |\n| 🔗 Public links | `ownerUrls`, `externalLinks`, `hasBusinessEmail`                   |\n| 🖼️ Media        | `avatarUrl`, `bannerUrl`                                           |\n| 📊 Counts       | `subscribersCount`, `videosCount`, `viewsCount`                    |\n| 🎯 Quality      | `countPrecision`, display-text count fields                        |\n| 🚦 Result       | `status`, `statusReason`, `observedAt`                             |\n\nMissing public values stay `null`. Rounded public counts are labeled\n`display_rounded`; they are not presented as exact values.\n\n## ⚙️ Can I use this Actor through an API?\n\nYes. Run it in Apify Console or through the Apify API, Python SDK, Node.js SDK,\nwebhooks, schedules, and Apify integrations.\n\n## 🎯 Why collect YouTube channel profiles?\n\n| Use case               | How the data helps                                                        |\n| ---------------------- | ------------------------------------------------------------------------- |\n| 📋 Creator enrichment  | Add stable IDs, audience size, links, and channel facts to creator lists. |\n| 📣 Campaign planning   | Compare channel fit and public reach before outreach.                     |\n| 🕵️ Competitor research | Track public channel size and activity over time.                         |\n| 🔗 Identity matching   | Use owner links to connect a channel with public profiles elsewhere.      |\n| 🧱 Data products       | Load stable profile rows into databases, dashboards, and internal tools.  |\n\n## 💵 Pricing\n\nEach useful profile row triggers one `profile` event. Prices per 1,000 useful\nrows are:\n\n| Plan                    | Price |\n| ----------------------- | ----: |\n| Free                    | $0.50 |\n| Bronze                  | $0.45 |\n| Silver                  | $0.40 |\n| Gold, Platinum, Diamond | $0.35 |\n\nApify platform usage is charged separately. There is no paid Actor start event.\nOne useful row is an `ok` or `partial` channel snapshot written to the default\ndataset. Invalid, missing, blocked, and failed inputs are not charged as profile\nresults. Each dataset row includes `isBillable` so this rule is visible.\n\n## 🚀 How do I use YouTube Channel Scraper?\n\n1. Open **YouTube Channel Scraper – Profiles & Stats** in Apify Console.\n2. Paste one or more public channel URLs or handles.\n3. Click **Start**.\n4. Open **Output** to inspect the rows and run summary.\n5. Download the dataset or connect it to your workflow.\n\n## ⬇️ Input\n\nAdd 1 to 1,000 values in `startUrls`:\n\n```json\n{\n  \"startUrls\": [\"https://www.youtube.com/@MrBeast\", \"@HikakinTV\"]\n}\n```\n\nAccepted inputs include channel URLs, `@handles`, and channel URLs ending in\n`/videos`, `/shorts`, `/streams`, or `/about`. Exact duplicate values run once.\n\n## ⬆️ Output sample\n\n```json\n{\n  \"platform\": \"youtube\",\n  \"input\": \"https://www.youtube.com/@MrBeast\",\n  \"channelId\": \"UCX6OQ3DkcsbYNE6H8uQQuVA\",\n  \"uploadsPlaylistId\": \"UUX6OQ3DkcsbYNE6H8uQQuVA\",\n  \"channelUrl\": \"https://www.youtube.com/@MrBeast\",\n  \"handle\": \"@MrBeast\",\n  \"displayName\": \"MrBeast\",\n  \"subscribersCount\": 508000000,\n  \"subscribersText\": \"508M subscribers\",\n  \"countPrecision\": {\n    \"subscribersCount\": \"display_rounded\"\n  },\n  \"status\": \"ok\",\n  \"statusReason\": null,\n  \"observedAt\": \"2026-07-16T00:00:00.000Z\"\n}\n```\n\n### 📌 Run summary\n\nThe `OUTPUT` record reports input counts, output rows, billable rows, status\ncounts, useful rates, and run time. It does not contain raw pages, cookies, or\nprivate request details.\n\n## 🎯 Status and quality fields\n\n- `ok`: the public channel identity was found.\n- `partial`: useful public channel facts were found, but some facts are missing.\n- `not_found`, `private`, or `login_required`: YouTube did not expose a usable\n  public profile for this request.\n- `blocked`, `challenge`, or `rate_limited`: the public source refused the\n  request at that time.\n- `parser_miss`: a page loaded, but the Actor could not safely tie profile facts\n  to the requested channel.\n- `invalid_input` or `failed`: the input was not a channel or the request failed.\n\n## 🔒 Source boundary and limits\n\n- Public logged-out channel pages only.\n- Subscriber lists are private to the channel owner and are not returned.\n- Public subscription lists may exist for channels that choose to show them,\n  but this Actor does not return a full following graph.\n- Business email text may require owner or viewer sign-in. The Actor reports\n  only whether YouTube shows the public contact action.\n- `detectedEmails` and `detectedLinks` are unverified clues from the public\n  description and public link fields. They can be missing or wrong.\n- The Actor does not open or crawl detected links.\n- YouTube can hide, delay, or round public values.\n\n## ❓ FAQ\n\n### Does this Actor need login, cookies, or an API key?\n\nNo.\n\n### Why are some fields missing?\n\nYouTube did not expose those fields publicly for that channel at collection\ntime. Check `status`, `statusReason`, and `countPrecision`.\n\n### How are duplicates handled?\n\nExact duplicate inputs are checked once. Use `channelId` as the strongest\ncross-run dedupe key when it is present.\n\n## 🛟 Support\n\nSend the run ID, input URL, expected channel, and observed row. Do not send\npasswords, cookies, or account credentials.\n\n## 🔗 Related social media scrapers\n\nContinue the same workflow on this platform or compare public data across\nplatforms.\n\n### Continue on YouTube\n\n- [YouTube Search Scraper](https://apify.com/chronometrica/youtube-search-scraper)\n  — find public videos, Shorts, channels, and metrics by keyword.\n- [YouTube Metrics Scraper](https://apify.com/chronometrica/youtube-metrics-scraper)\n  — collect public video, Short, channel, and engagement metrics.\n- [YouTube Comments Scraper](https://apify.com/chronometrica/youtube-comments-scraper)\n  — collect public comments, replies, authors, likes, pins, and creator\n  hearts.\n- [YouTube Transcript Scraper](https://apify.com/chronometrica/youtube-transcript-scraper)\n  — extract public captions as text, timestamps, SRT, VTT, or JSON.\n\n### Compare profiles across platforms\n\n- [Facebook Page Scraper](https://apify.com/chronometrica/facebook-channel-scraper)\n  — collect public Page details, links, and audience stats.\n- [Instagram Profile Scraper](https://apify.com/chronometrica/instagram-channel-scraper)\n  — collect public profile details, links, and audience stats.\n- [TikTok Profile Scraper](https://apify.com/chronometrica/tiktok-channel-scraper)\n  — collect public creator details, links, and audience stats.\n- [LinkedIn Profile Scraper](https://apify.com/chronometrica/linkedin-profile-scraper)\n  — collect public profile identity, headlines, and visible profile facts.\n- [X Profile Metrics Scraper](https://apify.com/chronometrica/x-profile-metrics)\n  — collect public profile details, audience counts, and activity stats.\n"
    },
    "buildNumber": "0.1.21",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "0.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.07031555555555556
    }
  }
}