Emanuel
Emanuel

Reputation: 1861

Youtube API search auto-complete

I'm using Youtube API, I'd like to have a search auto-complete feature, just like on YouTube, when you type into the search input box, it gives you search suggestions. I've read the docs, but still missing, Is this possible using the API?

Upvotes: 25

Views: 31985

Answers (8)

Talha Ayub
Talha Ayub

Reputation: 1

if someone api not working from above!

i use personally this suggestion api but i use cors before it, so then it working otherwise it will decline the api call!

  • use this with corsproxy "https://corsproxy.io/?http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q=" + query;

Upvotes: 0

ahmed sobh
ahmed sobh

Reputation: 11

After making the fetch request

const res = await fetch(
    `https://clients1.google.com/complete/search?client=youtube&gs_ri=youtube&ds=yt&q=${searchTerm}`,
  );
const str = await res.text();

// const str = window.google.ac.h(["faded",[["faded",0,[433]],["faded alan walker lyrics",0,[433]],["faded remix",0,[433]],["faded 8d",0,[433]],["faded piano",0,[433]],["faded wheel free fire",0],["faded karaoke",0,[433]],["faded ringtone",0,[433]],["faded instrumental",0,[433]],["faded live",0,[433]],["faded piano tutorial",0,[433]],["faded whatsapp status",0,[433]],["faded dhol cover",0,[433]],["faded dance",0,[433]]],{"k":1,"q":"_sPyvXmmbfcsVtfP4sgjOdKQAvg"}])'

You can parse the response directly by first cutting the unnecessary pieces

const arr = JSON.parse(str.substring(str.indexOf("["), str.indexOf("])") + 1));

Here is the shape of the result

let suggestionsTuple: [string, number, number[]][] = [];

All we need is to filter out the strings

if (Array.isArray(arr) && Array.isArray(arr.at(1))) {
    suggestionsTuple = arr.at(1);
}

const suggestions = suggestionsTuple.flatMap((suggestion) => suggestion).filter((suggestion) => typeof suggestion === "string"); // ["faded" ,"faded alan walker lyrics", ...]

Upvotes: 1

nopenope
nopenope

Reputation: 41

The official one:

https://suggestqueries-clients6.youtube.com/complete/search?client=youtube-reduced&hl=en&gs_ri=youtube-reduced&ds=yt&cp=3&gs_id=100&q=Nectar&xhr=t&xssi=t&gl=us

You can choose country too.

P.S. I searched for Nectar in country US

Upvotes: 0

Gream Smith
Gream Smith

Reputation: 1

Also you can use JSON:

url: "https://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=" + i,
        dataType: "jsonp",

Upvotes: 0

Vikram Sapate
Vikram Sapate

Reputation: 1297

Above all apis are old and give google search suggestion not youtube search suggestion

Use this:

https://clients1.google.com/complete/search?client=youtube&gs_ri=youtube&ds=yt&q=faded

Extract suggestions using following JS code:

//  data is response of above api
   const data = 'window.google.ac.h(["faded",[["faded",0,[433]],["faded alan walker lyrics",0,[433]],["faded remix",0,[433]],["faded 8d",0,[433]],["faded piano",0,[433]],["faded wheel free fire",0],["faded karaoke",0,[433]],["faded ringtone",0,[433]],["faded instrumental",0,[433]],["faded live",0,[433]],["faded piano tutorial",0,[433]],["faded whatsapp status",0,[433]],["faded dhol cover",0,[433]],["faded dance",0,[433]]],{"k":1,"q":"_sPyvXmmbfcsVtfP4sgjOdKQAvg"}])';

    const searchSuggestions = [];
    data.split('[').forEach((ele, index) => {
      if (!ele.split('"')[1] || index === 1) return;
        return searchSuggestions.push(ele.split('"')[1]);
    });
    console.log(searchSuggestions);

Upvotes: 4

user7212232
user7212232

Reputation: 115

Check Out YouTube AutoComplete Keyword Scraper . Not really sure of the context the person asking the question wants YouTube auto complete solution for but I thought I would throw this out there.

Upvotes: 0

Emanuel
Emanuel

Reputation: 1861

Ok I found this URL:

http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q=Query

It isn't part of Youtube API, but still works, returns a JSON response.

Upvotes: 65

Related Questions