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 tounsubscribe
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
, whereCHANNEL_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>