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{
"ads": [
{
"channel": {
"id": "<string>",
"link": "<string>",
"title": "<string>"
},
"description": "<string>",
"id": "<string>",
"length": "<string>",
"link": "<string>",
"position": 123,
"thumbnail": "<string>",
"title": "<string>",
"website": "<string>"
}
],
"channels": [
{
"description": "<string>",
"id": "<string>",
"is_verified": true,
"link": "<string>",
"position": 123,
"subscribers": 123,
"thumbnail": {
"rich": "<string>",
"static": "<string>"
},
"title": "<string>",
"video_count": 123
}
],
"error": "<string>",
"featured_channel": {
"highlighted_video": {
"id": "<string>",
"length": "<string>",
"link": "<string>",
"subtitle": "<string>",
"title": "<string>"
},
"id": "<string>",
"link": "<string>",
"subtitle": "<string>",
"title": "<string>",
"videos": [
{
"channel": {
"id": "<string>",
"link": "<string>",
"title": "<string>"
},
"id": "<string>",
"length": "<string>",
"link": "<string>",
"subtitle": "<string>",
"thumbnail": "<string>",
"title": "<string>"
}
]
},
"movies": [
{
"badges": [
"<string>"
],
"buttons": [
"<string>"
],
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"title": "<string>"
},
"description": "<string>",
"id": "<string>",
"length": "<string>",
"link": "<string>",
"metadata_items": {
"bottom": [
"<string>"
],
"top": [
"<string>"
]
},
"position": 123,
"thumbnail": "<string>",
"title": "<string>"
}
],
"pagination": {
"next_page_token": "<string>"
},
"people_also_search_for": [
{
"link": "<string>",
"query": "<string>",
"thumbnail": "<string>"
}
],
"playlists": [
{
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"title": "<string>"
},
"id": "<string>",
"link": "<string>",
"position": 123,
"published_time": "<string>",
"thumbnail": "<string>",
"title": "<string>",
"video_count": 123,
"videos": [
{
"id": "<string>",
"length": "<string>",
"link": "<string>",
"title": "<string>"
}
]
}
],
"posts": [
{
"items": [
{
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"thumbnail": "<string>",
"title": "<string>"
},
"comments": "<string>",
"extracted_comments": 123,
"extracted_likes": 123,
"id": "<string>",
"likes": "<string>",
"link": "<string>",
"position": 123,
"published_time": "<string>",
"text": "<string>",
"thumbnail": "<string>"
}
],
"position": 123,
"section_title": "<string>"
}
],
"search_information": {
"corrected_query": "<string>",
"original_query": "<string>",
"original_query_sp": "<string>",
"state": "<string>",
"total_results": 123
},
"search_metadata": {
"created_at": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": "<string>",
"html_url": "<string>",
"json_url": "<string>",
"parsing_time_taken": 123,
"request_time_taken": 123,
"request_url": "<string>",
"total_time_taken": 123
},
"search_parameters": {
"engine": "<string>",
"gl": "<string>",
"hl": "<string>",
"q": "<string>",
"sp": "<string>"
},
"sections": [
{
"items": [
{
"channel": {
"id": "<string>",
"link": "<string>",
"title": "<string>"
},
"id": "<string>",
"length": "<string>",
"link": "<string>",
"published_time": "<string>",
"thumbnail": "<string>",
"title": "<string>",
"views": 123
}
],
"position": 123,
"section_title": "<string>"
}
],
"shorts": [
{
"items": [
{
"duration": "<string>",
"id": "<string>",
"link": "<string>",
"position": 123,
"thumbnail": "<string>",
"title": "<string>",
"views": 123
}
],
"position": 123,
"section_title": "<string>"
}
],
"suggestions": [
"<string>"
],
"videos": [
{
"badges": [
"<string>"
],
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"thumbnail": "<string>",
"title": "<string>"
},
"description": "<string>",
"id": "<string>",
"is_live": true,
"key_moments": [
{
"start_seconds": 123,
"thumbnail": "<string>",
"title": "<string>"
}
],
"length": "<string>",
"link": "<string>",
"position": 123,
"published_time": "<string>",
"thumbnail": {
"rich": "<string>",
"static": "<string>"
},
"title": "<string>",
"views": 123
}
]
}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{
"ads": [
{
"channel": {
"id": "<string>",
"link": "<string>",
"title": "<string>"
},
"description": "<string>",
"id": "<string>",
"length": "<string>",
"link": "<string>",
"position": 123,
"thumbnail": "<string>",
"title": "<string>",
"website": "<string>"
}
],
"channels": [
{
"description": "<string>",
"id": "<string>",
"is_verified": true,
"link": "<string>",
"position": 123,
"subscribers": 123,
"thumbnail": {
"rich": "<string>",
"static": "<string>"
},
"title": "<string>",
"video_count": 123
}
],
"error": "<string>",
"featured_channel": {
"highlighted_video": {
"id": "<string>",
"length": "<string>",
"link": "<string>",
"subtitle": "<string>",
"title": "<string>"
},
"id": "<string>",
"link": "<string>",
"subtitle": "<string>",
"title": "<string>",
"videos": [
{
"channel": {
"id": "<string>",
"link": "<string>",
"title": "<string>"
},
"id": "<string>",
"length": "<string>",
"link": "<string>",
"subtitle": "<string>",
"thumbnail": "<string>",
"title": "<string>"
}
]
},
"movies": [
{
"badges": [
"<string>"
],
"buttons": [
"<string>"
],
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"title": "<string>"
},
"description": "<string>",
"id": "<string>",
"length": "<string>",
"link": "<string>",
"metadata_items": {
"bottom": [
"<string>"
],
"top": [
"<string>"
]
},
"position": 123,
"thumbnail": "<string>",
"title": "<string>"
}
],
"pagination": {
"next_page_token": "<string>"
},
"people_also_search_for": [
{
"link": "<string>",
"query": "<string>",
"thumbnail": "<string>"
}
],
"playlists": [
{
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"title": "<string>"
},
"id": "<string>",
"link": "<string>",
"position": 123,
"published_time": "<string>",
"thumbnail": "<string>",
"title": "<string>",
"video_count": 123,
"videos": [
{
"id": "<string>",
"length": "<string>",
"link": "<string>",
"title": "<string>"
}
]
}
],
"posts": [
{
"items": [
{
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"thumbnail": "<string>",
"title": "<string>"
},
"comments": "<string>",
"extracted_comments": 123,
"extracted_likes": 123,
"id": "<string>",
"likes": "<string>",
"link": "<string>",
"position": 123,
"published_time": "<string>",
"text": "<string>",
"thumbnail": "<string>"
}
],
"position": 123,
"section_title": "<string>"
}
],
"search_information": {
"corrected_query": "<string>",
"original_query": "<string>",
"original_query_sp": "<string>",
"state": "<string>",
"total_results": 123
},
"search_metadata": {
"created_at": "2023-11-07T05:31:56Z",
"id": "<string>",
"status": "<string>",
"html_url": "<string>",
"json_url": "<string>",
"parsing_time_taken": 123,
"request_time_taken": 123,
"request_url": "<string>",
"total_time_taken": 123
},
"search_parameters": {
"engine": "<string>",
"gl": "<string>",
"hl": "<string>",
"q": "<string>",
"sp": "<string>"
},
"sections": [
{
"items": [
{
"channel": {
"id": "<string>",
"link": "<string>",
"title": "<string>"
},
"id": "<string>",
"length": "<string>",
"link": "<string>",
"published_time": "<string>",
"thumbnail": "<string>",
"title": "<string>",
"views": 123
}
],
"position": 123,
"section_title": "<string>"
}
],
"shorts": [
{
"items": [
{
"duration": "<string>",
"id": "<string>",
"link": "<string>",
"position": 123,
"thumbnail": "<string>",
"title": "<string>",
"views": 123
}
],
"position": 123,
"section_title": "<string>"
}
],
"suggestions": [
"<string>"
],
"videos": [
{
"badges": [
"<string>"
],
"channel": {
"id": "<string>",
"is_verified": true,
"link": "<string>",
"thumbnail": "<string>",
"title": "<string>"
},
"description": "<string>",
"id": "<string>",
"is_live": true,
"key_moments": [
{
"start_seconds": 123,
"thumbnail": "<string>",
"title": "<string>"
}
],
"length": "<string>",
"link": "<string>",
"position": 123,
"published_time": "<string>",
"thumbnail": {
"rich": "<string>",
"static": "<string>"
},
"title": "<string>",
"views": 123
}
]
}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 a few meta tools: search,
list_categories, get_details and batch_quote are free, batch_use is
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.Request contract
- Method and path: GET /apis/v1/youtube/search
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/youtube/search
- engine: query; required
- gl: query; optional
- hl: query; optional
- q: query; required
- sp: query; optional
- Runtime facts: 7856a6c3cdb43dbf15e31461496a037f7df2217d189dadb9d27f406316aa651d
{
"operationId": "get_youtube_search",
"method": "GET",
"path": "/apis/v1/youtube/search",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"description": "SearchApi engine identifier. Use `youtube` for this YouTube endpoint.",
"in": "query",
"name": "engine",
"required": true,
"schema": {
"enum": [
"youtube"
],
"type": "string"
}
},
{
"description": "Country code (e.g. us, jp)",
"in": "query",
"name": "gl",
"required": false,
"schema": {
"type": "string"
}
},
{
"description": "Interface language",
"in": "query",
"name": "hl",
"required": false,
"schema": {
"type": "string"
}
},
{
"description": "Search query. Required by runtime and upstream SearchApi.",
"in": "query",
"name": "q",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "YouTube filter token (pagination or advanced filters)",
"in": "query",
"name": "sp",
"required": false,
"schema": {
"type": "string"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.0029,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.0029 USD per successful request. Account-specific pricing and final settlement may differ. 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
Advertisement results
Show child attributes
Show child attributes
YouTube channel results
Show child attributes
Show child attributes
Error message if the search failed
Show child attributes
Show child attributes
Movie results
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Related search suggestions
Show child attributes
Show child attributes
Playlist results
Show child attributes
Show child attributes
Community post results
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Section results
Show child attributes
Show child attributes
YouTube Shorts results
Show child attributes
Show child attributes
Search query suggestions
Video search results
Show child attributes
Show child attributes