# Google Short Videos Search: TikTok, Reels, Shorts in One (`neonninja/google-short-videos`) Actor

Search Google's Short videos tab for any keywords and get TikTok, Instagram Reels, YouTube Shorts and Facebook videos in one de-duplicated list, with an only-new-videos monitoring mode.

- **URL**: https://apify.com/neonninja/google-short-videos.md
- **Developed by:** [Nick Young](https://apify.com/neonninja) (community)
- **Categories:** Social media, Videos, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 video returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Short Videos Search: TikTok, Reels, Shorts in One

Search Google's **Short videos** tab for any keywords and get **TikTok videos, Instagram Reels, YouTube Shorts and Facebook videos in one list**, with duplicates removed across platforms and URL formats.

Turn on **monitoring mode** and schedule it to receive only the videos that are new since your last run. That is useful for tracking a topic, a brand or a research question over weeks or months.

### Why use it

- **One search, four platforms.** Google already indexes short videos from TikTok, Instagram, YouTube and Facebook. This Actor reads that tab, so you don't need four separate scrapers.
- **Clean, de-duplicated links.** The same video often appears under several URLs, such as `/shorts/ID` and `/watch?v=ID`, or `/p/ID` and `/reel/ID`. Tracking parameters are stripped and each video appears once, keyed as `platform:videoId`.
- **Direct video URLs.** Google hides most links behind redirects. The Actor follows them and returns the real TikTok, Instagram or Facebook URL, ready for downloaders such as yt-dlp.
- **Only new videos.** In monitoring mode, runs that share a monitor name remember which videos they have already returned.

### Who uses it

- **Researchers** building datasets of social media videos on a health, parenting, political or consumer topic. The logic comes from a university research pipeline that tracks short videos about health supplements and parenting advice.
- **Brand and PR teams** watching for new videos that mention a product, a campaign or a competitor.
- **Marketers and agencies** finding creators who post about a niche, across all major short-video platforms at once.
- **Journalists and fact-checkers** monitoring how a claim spreads in short-form video.

### Input

```json
{
  "queries": ["gentle parenting timeout", "menopause supplements"],
  "platforms": ["youtube", "tiktok", "instagram", "facebook"],
  "maxPagesPerQuery": 5,
  "countryCode": "US",
  "languageCode": "en",
  "onlyNewResults": true,
  "monitorName": "parenting-study"
}
```

| Field | What it does |
|---|---|
| `queries` | Search terms, one per line. Required. |
| `platforms` | Keep only these platforms. Add `other` to also keep X, Snapchat, Pinterest, LinkedIn, Reddit, Vimeo and Dailymotion. |
| `maxPagesPerQuery` | Google shows about 10 to 12 videos per page. The Actor stops early when results run out. |
| `maxResultsPerQuery` | Optional cap per query. |
| `countryCode`, `languageCode` | Where to search from and the interface language. |
| `resolveLinks` | Follow Google's redirect links to get direct video URLs. On by default. Turn it off for much faster runs when titles and authors are enough. |
| `onlyNewResults`, `monitorName` | Monitoring mode. Runs with the same monitor name skip videos returned before. |

### Output

One item per unique video:

```json
{
  "query": "gentle parenting timeout",
  "position": 3,
  "page": 1,
  "platform": "tiktok",
  "title": "Dr. Becky Debunks Timeout, Tantrums & Gentle Parenting",
  "author": "unplanned_podcast",
  "source": "TikTok",
  "duration": "0:46",
  "durationSeconds": 46,
  "link": "https://www.tiktok.com/@unplanned_podcast/video/7696627644179156237",
  "linkResolved": true,
  "videoId": "7696627644179156237",
  "videoKey": "tiktok:7696627644179156237",
  "scrapedAt": "2026-10-31T12:31:02.118Z"
}
```

If a redirect cannot be followed, `linkResolved` is `false` and `link` holds Google's redirect URL, which still opens the video in a browser. A run summary is saved as `SUMMARY` in the key-value store.

### Pricing

You pay per unique video returned. Duplicates, filtered platforms and already-seen videos in monitoring mode are free. The price is on the Actor's pricing tab. Set a maximum cost per run and the Actor stops cleanly when it is reached.

### Tips

- Schedule a daily or weekly run with monitoring mode on to build a growing dataset without duplicates.
- Use several phrasings of the same topic. Duplicates across queries are removed automatically.
- Google returns different videos by country. Run the same queries with different `countryCode` values to compare markets.

### Limits

- Results are what Google shows on its Short videos tab, typically up to a few hundred videos per query.
- Google throttles its redirect links. Most are resolved, but some may come back as Google redirect URLs during busy periods.
- Titles for Instagram and some Facebook videos are caption snippets, because that is what Google displays.
- The Actor collects only what Google shows publicly in search results. It does not log in to any platform or download videos.

# Actor input Schema

## `queries` (type: `array`):

Keywords to search on Google's Short videos tab, one per line.

## `platforms` (type: `array`):

Keep only videos from these platforms. Choose 'Other' to also keep X, Snapchat, Pinterest, LinkedIn, Reddit, Vimeo and Dailymotion.

## `maxPagesPerQuery` (type: `integer`):

Google returns about 10 videos per page. Stops early when there are no more results.

## `maxResultsPerQuery` (type: `integer`):

Optional cap on videos returned per query. 0 means no cap.

## `countryCode` (type: `string`):

Two-letter country code to search from, such as US, GB, AU or NZ.

## `languageCode` (type: `string`):

Google interface language code, such as en, es or de.

## `resolveLinks` (type: `boolean`):

Turn Google's redirect links for TikTok, Instagram and Facebook results into direct video URLs. Slower; turn off if titles and authors are enough.

## `onlyNewResults` (type: `boolean`):

Return only videos that earlier runs with the same monitor name have not returned. Schedule the Actor to track new videos over time.

## `monitorName` (type: `string`):

Runs with the same monitor name share their list of already-seen videos. Use a different name per project.

## `saveHtml` (type: `boolean`):

For debugging: store each Google results page as HTML in the key-value store.

## Actor input object example

```json
{
  "queries": [
    "gentle parenting timeout"
  ],
  "platforms": [
    "youtube",
    "tiktok",
    "instagram",
    "facebook"
  ],
  "maxPagesPerQuery": 5,
  "maxResultsPerQuery": 0,
  "countryCode": "US",
  "languageCode": "en",
  "resolveLinks": true,
  "onlyNewResults": false,
  "monitorName": "default",
  "saveHtml": false
}
```

# Actor output Schema

## `videos` (type: `string`):

Unique short videos found, with platform, title, author, duration and link.

## `summary` (type: `string`):

Pages fetched, videos returned, duplicates and already-seen videos skipped, and failed queries.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "gentle parenting timeout"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neonninja/google-short-videos").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "queries": ["gentle parenting timeout"] }

# Run the Actor and wait for it to finish
run = client.actor("neonninja/google-short-videos").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "gentle parenting timeout"
  ]
}' |
apify call neonninja/google-short-videos --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neonninja/google-short-videos"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/5fmgu0JzUwesiCeWv/builds/mkmEMnHeIcFHhR2bb/openapi.json
