# Rumble Video Scraper (Cheap) (`data_api/rumble-video-scraper-cheap`) Actor

Extract complete Rumble video data, rumbles, views, comments, and channel statistics in seconds. Zero proxy configuration or complex setups required.

- **URL**: https://apify.com/data\_api/rumble-video-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** Videos, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Rumble Video Scraper

![Rumble Video Scraper](cover.jpg)

Rumble buries the numbers you actually want behind an endless scroll. Watching view counts, upvotes, and comment totals climb one card at a time is no way to study a channel or a topic. Hand this scraper a keyword, a video link, or a channel URL and it walks the result pages for you, then returns every video as a clean row: title, link, thumbnail, length, upload time, creator, votes, views, and comments. Pass one search or a whole list, and pull back as many videos per entry as you need.

### What you get

Each video on the page becomes one row with the same set of columns every time, so results drop straight into a sheet or database without reshaping. Every run gives you:

- **Video basics** — `clipTitle`, `clipUrl`, `previewImage`, `runTime`, `publishedAt`, `publishedLabel`
- **Creator** — `creatorName`, `creatorUrl`, `creatorVerified`
- **Engagement** — `upvotes`, `downvotes`, `viewLabel`, `commentTotal`
- **Run metadata** — `collectedAt`, plus `searchInput` and `errorMessage` on any row that hit a problem

### Quick start

1. Click **Try for free** and open the input form.
2. Add your searches to **Search terms or Rumble URLs** — one keyword, video link, or channel link per line.
3. Set **Videos per entry** to cap how many videos come back for each line.
4. Hit **Start**, then export as JSON, CSV, Excel, or XML once the run finishes.

![How it works](how-it-works.jpg)

### Use cases

- **Creator research** — track how a channel's views, votes, and comments trend across its catalog
- **Topic monitoring** — pull every video for a keyword and watch what gains traction
- **Competitive analysis** — line up rival channels side by side on engagement and upload cadence
- **Content discovery** — surface the top videos in a niche to plan your own uploads
- **Trend reporting** — feed video stats into dashboards for weekly or monthly recaps
- **Archival** — keep a dated snapshot of a channel's videos and their numbers over time

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchTerms` | array of strings | Yes | Keywords, video URLs, or channel URLs, one per line. Each entry is scraped on its own. |
| `resultsLimit` | integer | No | Most videos to collect per entry. Default `25`; lower it for quick tests. |
| `timeoutSeconds` | integer | No | Seconds to wait on a single request before giving up. Default `45`; raise it on slow connections. |

#### Example input

```json
{
    "searchTerms": [
        "election debate",
        "https://rumble.com/c/Bongino"
    ],
    "resultsLimit": 25,
    "timeoutSeconds": 45
}
````

### Output

Every video found across the result pages becomes one row. Successful rows carry the full set of video, creator, and engagement fields; if an entry fails, you get a row with `searchInput` and `errorMessage` so nothing fails silently.

#### Example output

```json
{
    "clipTitle": "Live: Full Debate Recap and Reaction",
    "clipUrl": "https://rumble.com/v6abcde-live-full-debate-recap-and-reaction.html",
    "previewImage": "https://1a-1791.com/video/s8/2/abc/def/ghi.oq1.jpg",
    "runTime": "1:12:40",
    "publishedAt": "2026-06-18T15:30:00+00:00",
    "publishedLabel": "1 week ago",
    "creatorName": "The Dan Bongino Show",
    "creatorUrl": "https://rumble.com/c/Bongino",
    "creatorVerified": true,
    "upvotes": 8420,
    "downvotes": 96,
    "viewLabel": "412K",
    "commentTotal": 1530,
    "collectedAt": "2026-06-29T12:00:00.000000+00:00",
    "searchInput": null,
    "errorMessage": null
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `clipTitle` | string | Headline text shown for the video |
| `clipUrl` | string | Direct link to the video on Rumble |
| `previewImage` | string | Link to the video thumbnail image |
| `runTime` | string | Video length, for example '14:22' or '1:05:00' |
| `publishedAt` | string | Exact ISO date and time the video went live |
| `publishedLabel` | string | Relative upload wording, such as '1 day ago' |
| `creatorName` | string | Display name of the channel that posted the video |
| `creatorUrl` | string | Rumble link to the posting channel |
| `creatorVerified` | boolean | True when the channel has a verification badge |
| `upvotes` | integer | Positive rumbles (likes) on the video |
| `downvotes` | integer | Negative rumbles (dislikes) on the video |
| `viewLabel` | string | View tally as shown, for example '12.4K' or '1.5M' |
| `commentTotal` | integer | Number of comments on the video |
| `collectedAt` | string | ISO timestamp of when the row was captured |
| `searchInput` | string | The term or URL behind the row; set only on error rows |
| `errorMessage` | string | Why an entry failed; set only when a run hit a problem |

### Tips for best results

- **Start small.** Run one or two searches with a low `resultsLimit` to confirm the columns fit your pipeline before scaling up.
- **Use channel URLs for full catalogs.** Paste a channel link to pull its videos rather than guessing keywords.
- **Mix searches in one run.** The input is a list, so keywords and URLs can sit side by side and each is handled on its own.
- **Watch the views field.** `viewLabel` keeps Rumble's own shorthand like '412K'; convert it yourself if you need a raw integer.
- **Raise `timeoutSeconds`** to around 60 if you see requests cut short on a slow connection.

### How can I use Rumble video data?

**How can I use the Rumble Video Scraper to track a channel's performance?**
Paste the channel URL and set `resultsLimit` high enough to cover its recent uploads. Each video returns as a row with `upvotes`, `downvotes`, `viewLabel`, `commentTotal`, and `publishedAt`, so you can chart engagement over time, spot which uploads land best, and rerun the scrape on a schedule to keep the dataset fresh.

**How can I collect Rumble videos for a keyword or topic?**
Drop a search term into `searchTerms` and the scraper walks Rumble's search pages, pulling every matching video with its title, link, creator, and stats. It's a quick way to gather a topic's videos for trend research, content planning, or a media monitoring feed without scrolling the site by hand.

**How can I export Rumble video stats to a spreadsheet?**
Run the scraper, then use the export menu to download JSON, CSV, Excel, or XML. Because every video comes back with the same fields, the file opens cleanly in Sheets or Excel — ready for pivot tables, charts, or a join against your own data.

**How can I compare creators on Rumble?**
Add several channel URLs to the list in one run. Each creator's videos return with matching engagement columns, so you can stack `creatorName` against `viewLabel`, `upvotes`, and upload frequency to see who's growing and what kind of content drives their numbers.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

## `searchQueries` (type: `array`):

List of search queries, video URLs, or channel URLs (one per line) to scrape in batch.

## `maxItems` (type: `integer`):

Maximum number of items to process per search query or URL.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "searchQueries": [
    "sponge bob",
    "https://rumble.com/c/TheBubbaArmy"
  ],
  "maxItems": 20,
  "requestTimeoutSecs": 60
}
```

# 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 = {
    "searchQueries": [
        "sponge bob"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/rumble-video-scraper-cheap").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 = { "searchQueries": ["sponge bob"] }

# Run the Actor and wait for it to finish
run = client.actor("data_api/rumble-video-scraper-cheap").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "sponge bob"
  ]
}' |
apify call data_api/rumble-video-scraper-cheap --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=data_api/rumble-video-scraper-cheap",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rumble Video Scraper (Cheap)",
        "description": "Extract complete Rumble video data, rumbles, views, comments, and channel statistics in seconds. Zero proxy configuration or complex setups required.",
        "version": "0.0",
        "x-build-id": "kVrSoFDq5Mtm3UKFm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/data_api~rumble-video-scraper-cheap/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-data_api-rumble-video-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/data_api~rumble-video-scraper-cheap/runs": {
            "post": {
                "operationId": "runs-sync-data_api-rumble-video-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/data_api~rumble-video-scraper-cheap/run-sync": {
            "post": {
                "operationId": "run-sync-data_api-rumble-video-scraper-cheap",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchQueries"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries or URLs List",
                        "type": "array",
                        "description": "List of search queries, video URLs, or channel URLs (one per line) to scrape in batch.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items per query",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of items to process per search query or URL.",
                        "default": 20
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout in seconds.",
                        "default": 60
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
