We are updating the Data API to match how YouTube counts views for Shorts.
Learn more
Subscribe to Push Notifications
Stay organized with collections
Save and categorize content based on your preferences.
The YouTube Data API (v3) supports push notifications via PubSubHubbub, a server-to-server publish/subscribe protocol for Web-accessible resources. Notifications are pushed out to subscribers via HTTP webhooks, which is much more efficient than polling-based solutions. With PubSubHubbub, your server finds out about events in near real-time, without having to determine the optimal polling interval or repeatedly fetching data that hasn’t changed.
Your PubSubHubbub callback server receives Atom feed notifications when a channel does any of the following activities:
- uploads a video
- updates a video's title
- updates a video's description
The following steps explain how to subscribe to notifications:
-
Set up a callback server that can handle incoming Atom feed notifications.
-
Use the Google hub to subscribe to receive push notifications:
-
Set the mode to subscribe
. (Or set the mode to unsubscribe
to cancel a subscription.)
-
Set the callback URL to the URL that you set up in step 1.
-
Set the topic URL to https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
, where CHANNEL_ID
is the YouTube channel ID for which you want to retrieve push notifications.
-
Process notifications sent to your callback server. The notification format is shown below. Note that you can use the <yt:videoId>
element's value to identify the newly added or updated video. You can also use the <yt:channelId>
element's value to identify the channel that owns that video.
<feed xmlns:yt="http://www.youtube.com/xml/schemas/2015"
xmlns="http://www.w3.org/2005/Atom">
<link rel="hub" href="https://pubsubhubbub.appspot.com"/>
<link rel="self" href="https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID"/>
<title>YouTube video feed</title>
<updated>2015-04-01T19:05:24.552394234+00:00</updated>
<entry>
<id>yt:video:VIDEO_ID</id>
<yt:videoId>VIDEO_ID</yt:videoId>
<yt:channelId>CHANNEL_ID</yt:channelId>
<title>Video title</title>
<link rel="alternate" href="http://www.youtube.com/watch?v=VIDEO_ID"/>
<author>
<name>Channel title</name>
<uri>http://www.youtube.com/channel/CHANNEL_ID</uri>
</author>
<published>2015-03-06T21:40:57+00:00</published>
<updated>2015-03-09T19:05:24.552394234+00:00</updated>
</entry>
</feed>
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-28 UTC.
[null,null,["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe YouTube Data API v3 uses PubSubHubbub for push notifications, enabling near real-time updates without the need for constant polling.\u003c/p\u003e\n"],["\u003cp\u003eYour server will receive notifications when a YouTube channel uploads a video or updates a video's title or description.\u003c/p\u003e\n"],["\u003cp\u003eTo subscribe, set up a callback server, use the Google hub with the 'subscribe' mode, provide your callback URL, and specify the YouTube channel ID in the topic URL.\u003c/p\u003e\n"],["\u003cp\u003eNotifications are sent as Atom feeds, and the \u003ccode\u003e<yt:videoId>\u003c/code\u003e and \u003ccode\u003e<yt:channelId>\u003c/code\u003e elements within these feeds can be used to identify the specific video and channel.\u003c/p\u003e\n"]]],["The YouTube Data API uses PubSubHubbub for push notifications, sending Atom feed updates to subscribers' HTTP webhooks when a channel uploads a video, or updates a video's title or description. To subscribe, set up a callback server, then use the Google hub with `subscribe` mode, your server's callback URL, and a YouTube channel's ID-specific topic URL. Notifications, sent as Atom feeds, include the video and channel IDs, as well as video titles and other information.\n"],null,["# Subscribe to Push Notifications\n\nThe YouTube Data API (v3) supports push notifications via [PubSubHubbub](https://github.com/pubsubhubbub/), a server-to-server publish/subscribe protocol for Web-accessible resources. Notifications are pushed out to subscribers via HTTP webhooks, which is much more efficient than polling-based solutions. With PubSubHubbub, your server finds out about events in near real-time, without having to determine the optimal polling interval or repeatedly fetching data that hasn't changed.\n\nYour PubSubHubbub callback server receives Atom feed notifications when a channel does any of the following activities:\n\n\u003cbr /\u003e\n\n- uploads a video\n- updates a video's title\n- updates a video's description\n\n\u003cbr /\u003e\n\nThe following steps explain how to subscribe to notifications:\n\n1. Set up a callback server that can handle incoming Atom feed notifications.\n\n2. Use the [Google](https://pubsubhubbub.appspot.com/subscribe) hub to subscribe to receive push notifications:\n\n - Set the **mode** to `subscribe`. (Or set the mode to `unsubscribe` to cancel a subscription.)\n\n - Set the **callback URL** to the URL that you set up in step 1.\n\n - Set the **topic URL** to `https://www.youtube.com/feeds/videos.xml?channel_id=`**CHANNEL_ID**, where **CHANNEL_ID** is the [YouTube channel ID](/youtube/v3/docs/channels#id) for which you want to retrieve push notifications.\n\n3. Process notifications sent to your callback server. The notification format is shown below. Note that you can use the `\u003cyt:videoId\u003e` element's value to identify the newly added or updated video. You can also use the `\u003cyt:channelId\u003e` element's value to identify the channel that owns that video.\n\n ```\n \u003cfeed xmlns:yt=\"http://www.youtube.com/xml/schemas/2015\"\n xmlns=\"http://www.w3.org/2005/Atom\"\u003e\n \u003clink rel=\"hub\" href=\"https://pubsubhubbub.appspot.com\"/\u003e\n \u003clink rel=\"self\" href=\"https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID\"/\u003e\n \u003ctitle\u003eYouTube video feed\u003c/title\u003e\n \u003cupdated\u003e2015-04-01T19:05:24.552394234+00:00\u003c/updated\u003e\n \u003centry\u003e\n \u003cid\u003eyt:video:VIDEO_ID\u003c/id\u003e\n \u003cyt:videoId\u003eVIDEO_ID\u003c/yt:videoId\u003e\n \u003cyt:channelId\u003eCHANNEL_ID\u003c/yt:channelId\u003e\n \u003ctitle\u003eVideo title\u003c/title\u003e\n \u003clink rel=\"alternate\" href=\"http://www.youtube.com/watch?v=VIDEO_ID\"/\u003e\n \u003cauthor\u003e\n \u003cname\u003eChannel title\u003c/name\u003e\n \u003curi\u003ehttp://www.youtube.com/channel/CHANNEL_ID\u003c/uri\u003e\n \u003c/author\u003e\n \u003cpublished\u003e2015-03-06T21:40:57+00:00\u003c/published\u003e\n \u003cupdated\u003e2015-03-09T19:05:24.552394234+00:00\u003c/updated\u003e\n \u003c/entry\u003e\n \u003c/feed\u003e\n ```"]]