Home » Android » How to search videos with youtube data API in Android

How to search videos with youtube data API in Android

Posted by: admin June 15, 2020 Leave a comment


I’m developing an application in Android which needs to search for videos of YouTube by Keyword. I have used Youtube data API with the code below:

    try {
        youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
            public void initialize(HttpRequest request) throws IOException {

        // Define the API request for retrieving search results.
        YouTube.Search.List search = youtube.search().list("id,snippet");

        // Set your developer key from the Google Cloud Console for
        // non-authenticated requests. See:
        // https://cloud.google.com/console

        // Restrict the search results to only include videos. See:
        // https://developers.google.com/youtube/v3/docs/search/list#type

        // To increase efficiency, only retrieve the fields that the
        // application uses.

        SearchListResponse searchResponse = search.execute();
        List<SearchResult> lista = searchResponse.getItems();

    } catch (GoogleJsonResponseException e) {
        System.err.println("There was a service error: " + e.getDetails().getCode() + " : "
                + e.getDetails().getMessage());
    } catch (IOException e) {
        System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage());
    } catch (Throwable t) {

For de DEVELOPER_KEY I have used a public API access at google developer console.

But when I execute the program there is a problem in the line:

SearchListResponse searchResponse = search.execute();

In the android manifest.xml I have these permissions:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

I would be very grateful if anybody could help me

How to&Answers:

You can compare your project against YouTube Direct Lite for Android. Yes, instead of OAuth2, setting API key would be enough.


Another way of achieving this would be getting results from this:


You can play with parameters to get what you actually need. You also need an API key from https://console.developers.google.com/.


Generally, this error occurs when someone tries to perform network calls on UI Thread, which is not allowed in Android.
check logcat if you get this error – (error-android-os-networkonmainthreadexception)
Go through this answer for the solution to this problem – fix of neworkonmainthreadexception