curl --request GET \
--url https://api.aisa.one/apis/v1/youtube/search \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/youtube/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/youtube/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/youtube/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/youtube/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/youtube/search")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/youtube/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"search_metadata": {
"id": "<string>",
"status": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"request_time_taken": 123,
"parsing_time_taken": 123,
"total_time_taken": 123,
"request_url": "<string>",
"html_url": "<string>",
"json_url": "<string>"
},
"search_parameters": {
"engine": "<string>",
"q": "<string>",
"sp": "<string>",
"hl": "<string>",
"gl": "<string>"
},
"search_information": {
"total_results": 123,
"state": "<string>",
"original_query": "<string>",
"original_query_sp": "<string>",
"corrected_query": "<string>"
},
"suggestions": [
"<string>"
],
"ads": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"website": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>"
},
"length": "<string>",
"thumbnail": "<string>"
}
],
"channels": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"is_verified": true,
"video_count": 123,
"subscribers": 123,
"thumbnail": {
"static": "<string>",
"rich": "<string>"
}
}
],
"movies": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"is_verified": true,
"link": "<string>"
},
"length": "<string>",
"metadata_items": {
"top": [
"<string>"
],
"bottom": [
"<string>"
]
},
"badges": [
"<string>"
],
"buttons": [
"<string>"
],
"thumbnail": "<string>"
}
],
"videos": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"views": 123,
"is_live": true,
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>",
"is_verified": true,
"thumbnail": "<string>"
},
"length": "<string>",
"published_time": "<string>",
"badges": [
"<string>"
],
"thumbnail": {
"static": "<string>",
"rich": "<string>"
},
"key_moments": [
{
"title": "<string>",
"start_seconds": 123,
"thumbnail": "<string>"
}
]
}
],
"playlists": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"video_count": 123,
"channel": {
"id": "<string>",
"title": "<string>",
"is_verified": true,
"link": "<string>"
},
"published_time": "<string>",
"videos": [
{
"id": "<string>",
"title": "<string>",
"link": "<string>",
"length": "<string>"
}
],
"thumbnail": "<string>"
}
],
"sections": [
{
"section_title": "<string>",
"position": 123,
"items": [
{
"id": "<string>",
"title": "<string>",
"link": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>"
},
"views": 123,
"published_time": "<string>",
"length": "<string>",
"thumbnail": "<string>"
}
]
}
],
"shorts": [
{
"section_title": "<string>",
"position": 123,
"items": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"duration": "<string>",
"views": 123,
"thumbnail": "<string>"
}
]
}
],
"posts": [
{
"section_title": "<string>",
"position": 123,
"items": [
{
"position": 123,
"id": "<string>",
"link": "<string>",
"text": "<string>",
"likes": "<string>",
"extracted_likes": 123,
"comments": "<string>",
"extracted_comments": 123,
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>",
"is_verified": true,
"thumbnail": "<string>"
},
"published_time": "<string>",
"thumbnail": "<string>"
}
]
}
],
"people_also_search_for": [
{
"query": "<string>",
"link": "<string>",
"thumbnail": "<string>"
}
],
"featured_channel": {
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"link": "<string>",
"highlighted_video": {
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"link": "<string>",
"length": "<string>"
},
"videos": [
{
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"link": "<string>",
"length": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>"
},
"thumbnail": "<string>"
}
]
},
"pagination": {
"next_page_token": "<string>"
},
"error": "<string>"
}Search Videos
Search YouTube and get back matching videos, channels, and playlists.
curl --request GET \
--url https://api.aisa.one/apis/v1/youtube/search \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.aisa.one/apis/v1/youtube/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.aisa.one/apis/v1/youtube/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/youtube/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/youtube/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.aisa.one/apis/v1/youtube/search")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/youtube/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"search_metadata": {
"id": "<string>",
"status": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"request_time_taken": 123,
"parsing_time_taken": 123,
"total_time_taken": 123,
"request_url": "<string>",
"html_url": "<string>",
"json_url": "<string>"
},
"search_parameters": {
"engine": "<string>",
"q": "<string>",
"sp": "<string>",
"hl": "<string>",
"gl": "<string>"
},
"search_information": {
"total_results": 123,
"state": "<string>",
"original_query": "<string>",
"original_query_sp": "<string>",
"corrected_query": "<string>"
},
"suggestions": [
"<string>"
],
"ads": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"website": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>"
},
"length": "<string>",
"thumbnail": "<string>"
}
],
"channels": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"is_verified": true,
"video_count": 123,
"subscribers": 123,
"thumbnail": {
"static": "<string>",
"rich": "<string>"
}
}
],
"movies": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"is_verified": true,
"link": "<string>"
},
"length": "<string>",
"metadata_items": {
"top": [
"<string>"
],
"bottom": [
"<string>"
]
},
"badges": [
"<string>"
],
"buttons": [
"<string>"
],
"thumbnail": "<string>"
}
],
"videos": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"description": "<string>",
"views": 123,
"is_live": true,
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>",
"is_verified": true,
"thumbnail": "<string>"
},
"length": "<string>",
"published_time": "<string>",
"badges": [
"<string>"
],
"thumbnail": {
"static": "<string>",
"rich": "<string>"
},
"key_moments": [
{
"title": "<string>",
"start_seconds": 123,
"thumbnail": "<string>"
}
]
}
],
"playlists": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"video_count": 123,
"channel": {
"id": "<string>",
"title": "<string>",
"is_verified": true,
"link": "<string>"
},
"published_time": "<string>",
"videos": [
{
"id": "<string>",
"title": "<string>",
"link": "<string>",
"length": "<string>"
}
],
"thumbnail": "<string>"
}
],
"sections": [
{
"section_title": "<string>",
"position": 123,
"items": [
{
"id": "<string>",
"title": "<string>",
"link": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>"
},
"views": 123,
"published_time": "<string>",
"length": "<string>",
"thumbnail": "<string>"
}
]
}
],
"shorts": [
{
"section_title": "<string>",
"position": 123,
"items": [
{
"position": 123,
"id": "<string>",
"title": "<string>",
"link": "<string>",
"duration": "<string>",
"views": 123,
"thumbnail": "<string>"
}
]
}
],
"posts": [
{
"section_title": "<string>",
"position": 123,
"items": [
{
"position": 123,
"id": "<string>",
"link": "<string>",
"text": "<string>",
"likes": "<string>",
"extracted_likes": 123,
"comments": "<string>",
"extracted_comments": 123,
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>",
"is_verified": true,
"thumbnail": "<string>"
},
"published_time": "<string>",
"thumbnail": "<string>"
}
]
}
],
"people_also_search_for": [
{
"query": "<string>",
"link": "<string>",
"thumbnail": "<string>"
}
],
"featured_channel": {
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"link": "<string>",
"highlighted_video": {
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"link": "<string>",
"length": "<string>"
},
"videos": [
{
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"link": "<string>",
"length": "<string>",
"channel": {
"id": "<string>",
"title": "<string>",
"link": "<string>"
},
"thumbnail": "<string>"
}
]
},
"pagination": {
"next_page_token": "<string>"
},
"error": "<string>"
}engine=youtube and pass the query in q; both are required. Optionally narrow by country (gl) and interface language (hl), or pass a YouTube filter token in sp for pagination and advanced filters such as upload date, duration, or result type. Use this to find video content on a topic, track a channel’s recent uploads, or gauge how much video coverage a subject has.
Note: this is served through the AIsa mapped path /apis/v1/youtube/search; the upstream provider’s canonical path is not mounted directly.
https://mcp.aisa.one/mcp — Claude
Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client
opens a browser, you click Allow once, and there is no key to paste. Your
agent then reaches every endpoint through five tools: search,
list_categories and get_details are free, use and batch_use are
billed per call. Setup per client is in
Connect via MCP; the live tool list and what each call
costs are on aisa.one/mcp.Cost and request rules
Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.0029
- Cost contract: fixed_success
- Published reference multiplier: 1.0
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
SearchApi engine identifier. Use youtube for this YouTube endpoint.
youtube Country code (e.g. us, jp)
Interface language
Search query. Required by runtime and upstream SearchApi.
YouTube filter token (pagination or advanced filters)
Response
Successful response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Search query suggestions
Advertisement results
Show child attributes
Show child attributes
YouTube channel results
Show child attributes
Show child attributes
Movie results
Show child attributes
Show child attributes
Video search results
Show child attributes
Show child attributes
Playlist results
Show child attributes
Show child attributes
Section results
Show child attributes
Show child attributes
YouTube Shorts results
Show child attributes
Show child attributes
Community post results
Show child attributes
Show child attributes
Related search suggestions
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Error message if the search failed