Hi, I'm Jeff Fisher, and in this video, we're going to talk about how to search for videos using the YouTube API
A common operation on YouTube is searching for videos
You search for videos in the API by using the videos feed.
We specify our search term with the 'q' parameter. You can specify
You can specify a more complicated search term by URL escaping it.
There are many versions of the API
which we can specify which version we want to use using the 'v' parameter, or a special header.
Since there are many cute puppy videos on YouTube, and we don't want to handle them all at once,
we can specify how many we want by using 'max-results.'
Since we only want 10 at once, but we might want to page to the next 10,
we can look at the feed that's returned to the API for a 'link' element with 'rel' equals 'next'
This will identify the next page of results, and is the proper way of paging through a feed.
If you look at that 'next' link, you'll notice it has a 'start-index' parameter, which identifies the beginning of the next page
However, you should not try to set this parameter manually and instead always extract the value of the 'next' link from the feed
Now let's talk about some other query parameters that you can use with the YouTube API
First, we're going to talk about 'orderby'. By default, results are returned in order of relevance
but you can also have them ordered by rating, view count, and the date they were published.
You can also search for all the videos uploaded by a particular YouTube user with the 'author' parameter.
This is equivalent to retrieving their uploads feed.
In version 2 of the API, we added location based search
where you can pass latitude and longitude information and find videos that occurred near that point.
Since a large number of videos only have descriptive locations, such as London,
if you only wish for videos with explicit latitude and longitude information to be returned,
add an exclamation point to your query.
To only show embeddable videos, such as for embedding on an external webpage, use the 'format' parameter.
If you only want results in a specific language, you can use language restrict.
Note this is only for video metadata, and not the audio track of the video
You can also specify a safeSearch value which defaults to 'moderate',
but can also be 'strict' or 'none' for filtering restricted content.
Some videos cannot be played in certain locales.
You can specify the locale of your user by passing in their country code or their IP address
in which case we'll figure out their country code for you.
Note this is only to improve the user experience, as it will filter out videos they cannot play.
Using this parameter will not affect the videos that they can play.
YouTube has a number of video categories, such as Comedy, News and Politics, and more.
If we only wanted videos in the Comedy category, we can use the 'category' parameter to retrieve them.
If you are familiar with other Google Data APIs, you can also use the below syntax.
If you want to do a tag search, you can use the same mechanism, such as searching for all videos that have the tag 'puppy'
Note that the video category started with an uppercase letter, whereas tags are all lowercase.
This means that the above search is for all videos in the Comedy category,
whereas the below search is for videos that have the tag 'comedy'.
You can also mix and match to combine the different query parameters we have discussed here.
For example, if you want to query for kitten videos in the Comedy category
that are embeddable on external webpages, you could use this query.
YouTube also provides lists of popular videos
These are exposed in the API as standard feeds.
Such as the top rated videos, the most viewed videos, and the most discussed videos.
We can also look at the top rated videos that were uploaded this week using the 'time' parameter.
We could also look at the top rated videos this month, or today.
You are also able to look at only the top rated videos in this particular category, such as Comedy.
Note that this is different from using the 'category' query parameter we talked about earlier.
The above feed is the top 100 rated videos in the Comedy category.
Whereas the bottom is -- of the top 100 rated videos on YouTube, which ones are in the Comedy category.
You can also look at regional versions of the different standard feeds, such as the top rated Comedy videos in Japan.
Hopefully, you're getting pretty excited about using the YouTube API
But before you get started, we want to go over a few simple caveats.
You cannot retrieve more than 1000 videos in a video search feed. This is the same as YouTube.com.
The openSearch totalResults value is an approximation.
This is part of why you should not do pagination manually, but instead use the 'next' link.
Let's go back to our earlier example about searching for cute puppy videos.
Because YouTube is a large video website, the search information may be cached.
This means that the most recently uploaded cute puppy videos may not be displayed in the results.
It also means that the information in these videos, such as the title and description,
may take a couple hours to be updated in the search index.
Also, statistics about the video, such as view count and favorite information may not be up to date.
For videos uploaded as private, and later made public, it will take even longer to enter into the search index.
What if you know the ID of a video you want to retrieve information on.
Similar to searching for videos on YouTube, this information will be cached.
This is also true if you retrieve it through the uploads feed for a user when you're not authenticated as them.
However, if you do authenticate as them, you will retrieve uncached information, which will be fresh.
Also, if you retrieve the uploads feed as the user, while authenticating as that user,
you will receive information about videos that is not cached.
This means it will the most recent information that YouTube has. It will be ordered by the published time.
However, if you add a query parameter, such as 'orderby' to this feed,
even though you're authenticated, the results will be cached.
Two query parameters that will not affect the caching process, are start-index and max-results,
so you can still page through a feed.
If you are using one of our provided client libraries,
there will be objects and methods which will help you build search queries on YouTube.
Please check the documentation for these client libraries for specifics.
All the information in this video is also available in our documentation on code.google.com.
Thanks for watching!