# Search Google Videos

Returns Google Videos results for a query, with source, channel and duration. Use it to see which videos rank for a search.

Tool `google.serp.videos` on Google. Contract version 1, released 2026-10-27.

## Example call

Over REST, send the input in the body. Over MCP, pass the same input to `call_tool`.

cURL:

```bash
curl https://api.voxoria.ai/v1/tools/google.serp.videos/calls \
  -H "Authorization: Bearer $VOXORIA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input":{"query":"how to change a bike tyre","country":"gb"}}'
```

Python:

```python
import os

import httpx

response = httpx.post(
    "https://api.voxoria.ai/v1/tools/google.serp.videos/calls",
    headers={"Authorization": f"Bearer {os.environ['VOXORIA_API_KEY']}"},
    json={
        "input": {"query": "how to change a bike tyre", "country": "gb"},
    },
    timeout=60,
)
print(response.json())
```

TypeScript:

```ts
const response = await fetch("https://api.voxoria.ai/v1/tools/google.serp.videos/calls", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.VOXORIA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "input": {"query": "how to change a bike tyre", "country": "gb"},
  }),
});
console.log(await response.json());
```

MCP (`tools/call` params):

```json
{
  "name": "call_tool",
  "arguments": {
    "tool": "google.serp.videos",
    "input": {
      "query": "how to change a bike tyre",
      "country": "gb"
    }
  }
}
```

Both return [the full response](/docs/call-response.md): the call's ID, status and cost, with this tool's result in `output`.

## Input

| Input | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `query` | string | Yes |  | The search query. |
| `country` | string | No | `us` | Two-letter ISO 3166-1 country code. Case-insensitive. One of the 249 values of the `countries` list: ISO 3166-1 alpha-2 country codes, lowercase. |
| `language` | string | No | `en` | Two-letter ISO 639-1 language code. Case-insensitive. One of the 184 values of the `languages` list: ISO 639-1 two-letter language codes, lowercase. |
| `location` | string | No |  | Google location name, such as "New York, New York, United States". |
| `page` | integer | No | `1` | Page of results. At least 1. |
| `time_range` | string | No |  | Only videos from the last hour, day, week, month or year. One of `hour`, `day`, `week`, `month`, `year`. |
| `autocorrect` | boolean | No |  | Whether Google may correct the spelling of the query. |

## Output

A successful call returns these blocks in its `output`. A field not marked required can be `null`.

### results

A list of rows. Always present, possibly empty.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `position` | integer | No | Rank among video results, starting at 1. |
| `title` | string | Yes |  |
| `url` | string | Yes | Address of the page the video plays on. |
| `snippet` | string | No |  |
| `source` | string | No | Name of the site hosting the video, such as "YouTube". |
| `channel` | string | No | Name of the channel or account that published the video. |
| `duration` | string | No | Length of the video as Google shows it, such as "52:39". Not parsed. |
| `published_label` | string | No | Date or age of the video as Google shows it, such as "Oct 6, 2025" or "2 weeks ago". Not a timestamp. |
| `image_url` | string | No | Address of the video's thumbnail image. |

## Example output

The `output` of a real call, each list cut to 3 items.

```json
{
  "results": [
    {
      "position": 1,
      "title": "How To Change A Bike Tyre",
      "url": "https://www.youtube.com/watch?v=sGdu4fkrQ9M",
      "snippet": "Find out how to change a bike tire! Click here to subscribe to GCN: http://gcn.eu/SubscribeToGCN Changing a bike tyre is one of the things ...",
      "source": "YouTube",
      "channel": "Global Cycling Network",
      "duration": "7:12",
      "published_label": "Nov 2, 2015",
      "image_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSjQZr0Wslmx3Xbc5V0ivh8Bc-ZrFu3hmCmZLwyvaCELTp_xpuW2k6tkA&s"
    },
    {
      "position": 2,
      "title": "How to Remove and Install a Bicycle Tire & Tube",
      "url": "https://www.youtube.com/watch?v=eqR6nlZNeU8",
      "snippet": "This video will guide you through the complete process of removing and installing a tire and tube on a bicycle rim.",
      "source": "YouTube",
      "channel": "Park Tool",
      "duration": "9:39",
      "published_label": "Jul 6, 2016",
      "image_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTCvRekg0dkCaozbqIZ1w_Mx4P1HOMiLo4XhDoFJjyqspqhKuAAXrJyIA&s"
    },
    {
      "position": 3,
      "title": "How To Change A Bike Tyre Easily",
      "url": "https://www.youtube.com/watch?v=a2KirSsd8j4",
      "snippet": "Got a flat tyre that needs fixing or replacing? Neil Donoghue shows everything you need to know on how to replace your bike tyre in this ...",
      "source": "YouTube",
      "channel": "Global Mountain Bike Network",
      "duration": "16:47",
      "published_label": "May 13, 2024",
      "image_url": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQMGaJsg-JtHpWJh9nEyEXv7pgBuhS7C4fywsCJ4kdOFXiRFtextjACFA&s"
    }
  ]
}
```
