Skip to content
Eden Engine

YouTube Video Search (by Keyword)

omnial/youtube-web-search-video

Given a search keyword, returns a page of matching YouTube videos with title, uploading channel name, view count, duration, publish time, and thumbnail sizes, plus a continuation token to fetch the next page. When the search finds nothing, returns a `message` ("Query[...] is not valid") instead of a videos list, without error.

activeper callv2

Price

Up to $0.00205 per call; you pay what the call used

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

YouTube

Data from YouTube.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/youtube-web-search-video" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/youtube-web-search-video" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/youtube-web-search-video", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/youtube-web-search-video", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.00205
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "search_query"
  ],
  "properties": {
    "order_by": {
      "type": "string",
      "default": "this_month",
      "description": "Order by"
    },
    "country_code": {
      "type": "string",
      "default": "us",
      "description": "Country code"
    },
    "search_query": {
      "type": "string",
      "examples": [
        "Minecraft"
      ],
      "description": "Search keyword"
    },
    "language_code": {
      "type": "string",
      "default": "en",
      "description": "Language code"
    },
    "continuation_token": {
      "type": "string",
      "description": "Pagination token"
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "lang": {
      "type": "string",
      "description": "Language code used for the search, e.g. 'en'."
    },
    "query": {
      "type": "string",
      "description": "The search keyword this result set is for."
    },
    "videos": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Typically 'NORMAL'; other values (e.g. shorts, live) are not documented."
          },
          "title": {
            "type": "string"
          },
          "author": {
            "type": "string",
            "description": "The uploading channel's public display name."
          },
          "category": {
            "type": [
              "string",
              "null"
            ],
            "description": "Usually `null`; the shape of a populated value is not documented."
          },
          "keywords": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Usually empty."
          },
          "video_id": {
            "type": "string",
            "description": "The YouTube video id, e.g. 'JCy5R45b7k0'."
          },
          "channel_id": {
            "type": "string",
            "description": "The uploading channel's YouTube channel id."
          },
          "thumbnails": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Withheld -- the thumbnail image address is stripped before delivery; only whether a thumbnail exists at that size is observable."
                },
                "width": {
                  "type": "number"
                },
                "height": {
                  "type": "number"
                }
              },
              "additionalProperties": true
            },
            "description": "The same video thumbnail at multiple resolutions."
          },
          "description": {
            "type": "string",
            "description": "The video's own description snippet."
          },
          "video_length": {
            "type": "string",
            "description": "e.g. '19:53', '2:12:13'."
          },
          "published_time": {
            "type": "string",
            "description": "Relative, e.g. '8 days ago', '2 weeks ago' -- not an absolute timestamp."
          },
          "is_live_content": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Usually `null` -- whether this is ever populated true/false (for a livestream) is not documented."
          },
          "number_of_views": {
            "type": "number"
          }
        },
        "additionalProperties": true
      },
      "description": "One entry per matching video on this page."
    },
    "country": {
      "type": "string",
      "description": "Country code used for the search, e.g. 'US'."
    },
    "message": {
      "type": "string",
      "description": "A short status message from the search endpoint, present instead of `videos` when a search matches nothing. Observed value: \"Query[...] is not valid\"-style text for a query string the endpoint could not match against anything -- treat its presence as 'no results', not as a thrown error (the call itself still completes normally)."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone the result timestamps are interpreted in, e.g. 'America/New_York'."
    },
    "number_of_videos": {
      "type": "number",
      "description": "Count of videos included in this page of results."
    },
    "estimated_results": {
      "type": "number",
      "description": "The search engine's own estimated total match count across all pages."
    },
    "continuation_token": {
      "type": "string",
      "description": "Opaque pagination token. Pass it back as this tool's `continuation_token` input to fetch the next page of results."
    }
  },
  "description": "The search-result document. When the search query matches no videos, there is no `videos` field and only a `message` field is present.",
  "additionalProperties": true
}