# Rumble Channel API

Beta

Returns a public Rumble channel or user: Rumble's own ID for it (the one Rumble's video data names the uploader by) and its name, display name, description, avatar, banner, verification badge, the social links it lists with their labels, its join date, follower count and exact video and lifetime view counts, and which kind of account it is with the ID of the user who owns it. Accepts a channel or user name, any channel or user link with any tab, or a channel's ID.

[Get 100 free credits](https://staging.socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Drumble.profile) · [API reference](https://staging.socialtap.dev/docs/reference/rumble/profile/index.md) · [Try it](https://staging.socialtap.dev/playground/?endpoint=rumble.profile)

- **Price**: From **1 credit** per request$0.75–$1.45 per 1,000 requests
- **Request**: `GET /v1/rumble/profile`One API key, one JSON schema
- **Input**: `handle`e.g. `Bongino`
- **Failed requests**: Free: 0 credits

Use cases

## What teams build with it. From one request.

- Track Rumble creators' growth over time
- Vet creators before a sponsorship
- Find a creator's other social accounts
- Compare a creator's Rumble audience with their YouTube or TikTok one

What you get

## Profiles in one schema. The same on every platform.

- **`platform`string**: Platform ID (tiktok, youtube, …).
- **`id`string**: Platform-native account ID (string; YouTube UC…, Reddit without t2_).
- **`username`string**: Handle without the @; null when the account has none.
- **`display_name`string**: Display name, channel title or page name; null when empty or not exposed.
- **`url`string**: Canonical profile URL.
- **`type`string**: Coarse account kind, as the platform labels it; unknown when it does not (TikTok labels organizations only). New values may be added; treat unknown values as unknown.
- **`bio`string**: Profile bio, channel description or page about text; null when empty or not exposed.
- **`avatar_url`string**: Profile picture URL (largest available). Platform CDN URLs can expire within hours.

Every field, its type and when it is `null`: [the response reference](https://staging.socialtap.dev/docs/reference/rumble/profile/index.md#response) and the [profile schema](https://staging.socialtap.dev/resources/profile/index.md).

## Example request

cURL:

```shell
curl -G 'https://staging.socialtap.dev/v1/rumble/profile' \
  --data-urlencode 'handle=Bongino' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
```

Node.js:

```javascript
const params = new URLSearchParams({
  handle: "Bongino",
});
const res = await fetch(`https://staging.socialtap.dev/v1/rumble/profile?${params}`, {
  headers: { "x-api-key": process.env.SOCIALTAP_API_KEY ?? "" },
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
const { data, meta } = body;
console.log(data, meta.credits_charged);
```

Python:

```python
import os

import requests

res = requests.get(
    "https://staging.socialtap.dev/v1/rumble/profile",
    params={"handle": "Bongino"},
    headers={"x-api-key": os.environ["SOCIALTAP_API_KEY"]},
)
body = res.json()
if not res.ok:
    raise RuntimeError(f"{body['error']['code']}: {body['error']['message']}")
data, meta = body["data"], body["meta"]
print(data, meta["credits_charged"])
```

Go:

```go
package main

import (
	"encoding/json"
	"fmt"
	"log"
	"net/http"
	"net/url"
	"os"
)

func main() {
	q := url.Values{}
	q.Set("handle", "Bongino")
	req, err := http.NewRequest("GET", "https://staging.socialtap.dev/v1/rumble/profile?"+q.Encode(), nil)
	if err != nil {
		log.Fatal(err)
	}
	req.Header.Set("x-api-key", os.Getenv("SOCIALTAP_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer res.Body.Close()
	var body struct {
		Data  json.RawMessage `json:"data"`
		Meta  map[string]any  `json:"meta"`
		Error *struct {
			Code    string `json:"code"`
			Message string `json:"message"`
		} `json:"error"`
	}
	if err := json.NewDecoder(res.Body).Decode(&body); err != nil {
		log.Fatal(err)
	}
	if body.Error != nil {
		log.Fatalf("%s: %s", body.Error.Code, body.Error.Message)
	}
	fmt.Println(string(body.Data), body.Meta["credits_charged"])
}
```

200 OK:

```json
{
  "data": {
    "approximate_fields": [
      "metrics.follower_count",
      "created_at"
    ],
    "avatar_url": "https://hugh.cdn.rumble.cloud/video/z8/U/K/d/b/UKdba.baa.4-bongino-t8rqq7.jpeg",
    "banner_url": "https://hugh.cdn.rumble.cloud/video/z8/U/K/d/b/UKdba.caa-bongino-tbhrxo.png",
    "bio": "The official channel for The Dan Bongino Show®. A former Deputy Director of the FBI, Secret Service Agent, NYPD officer, and best-selling author, Dan Bongino tackles the hot political issues, debunking both liberal and Republican establishment rhetoric.",
    "category": null,
    "country_code": null,
    "created_at": "2020-09-16T00:00:00Z",
    "display_name": "The Dan Bongino Show",
    "external_links": [
      {
        "title": "Twitter",
        "url": "https://twitter.com/dbongino"
      },
      {
        "title": "Facebook",
        "url": "https://facebook.com/danbongino"
      },
      {
        "title": "Instagram",
        "url": "https://instagram.com/dbongino"
      }
    ],
    "id": "_c276782",
    "is_private": false,
    "is_verified": true,
    "location": null,
    "metrics": {
      "follower_count": 3670000,
      "following_count": null,
      "post_count": 2136,
      "total_like_count": null,
      "total_view_count": 389354965
    },
    "platform": "rumble",
    "platform_specific": {
      "rumble": {
        "account_type": "channel",
        "numeric_id": "276782",
        "user_id": "_u169h4"
      }
    },
    "type": "unknown",
    "unknown_fields": [],
    "url": "https://rumble.com/c/bongino",
    "username": "bongino"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "rumble",
    "source": "page",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 0,
    "fetched_at": "2026-10-25T12:00:00Z",
    "input": {
      "kind": "profile",
      "id": "_c276782",
      "url": "https://rumble.com/c/bongino"
    },
    "credits_remaining": 9999,
    "client_request_id": null,
    "warnings": [],
    "mode": "live"
  }
}
```

Long arrays and strings are shortened for display; real responses are complete.

> [!NOTE]
>
> **Good to know**
>
> - Rumble has channels (rumble.com/c/\<name>) and users (rumble.com/user/\<name>, the uploader account that owns channels). A bare name is looked up as a channel first, then as a user; send c/\<name> or user/\<name> to choose. platform_specific.rumble.account_type says which one answered.
> - id is Rumble's own reference: _c\<channel number> for a channel, _u\<user number in base 36> for a user, the same string rumble.post and rumble.search_posts return as author.id. Channels and users are numbered separately (platform_specific.rumble.numeric_id), so only id is unambiguous. A channel's id is accepted as handle; a user's is not (send its name).
> - username is a channel's name as Rumble spells it, or user/\<name> for a user (a bare name is looked up as a channel first), the same as author.username on rumble.post and rumble.search_posts, so it can be sent back as handle.
> - metrics.follower_count is the count the page header shows: from a thousand up it is cut to three significant figures (a floor: it can be under the real count, never over; listed in approximate_fields). Video and view counts are exact.
> - created_at is the start, in UTC, of the day Rumble shows as the join date (listed in approximate_fields): Rumble shows the day only.
> - type is unknown, location, country_code and category are null, and metrics.following_count and metrics.total_like_count are null: Rumble does not show them. is_private is false: Rumble has no private accounts.
> - Names that are no channel or user answer not_found.

Pricing

## Pay per request. Only when it succeeds.

| Source | Price per successful request | Per 1,000 requests |
| --- | --- | --- |
| Public page `page` | 1 credit | $0.75–$1.45 |

- Failed requests are free: errors cost 0 credits.
- Cache hits are free: responses served from the cache cost 0 credits.
- Credits never expire.
- One credit balance for every endpoint and platform.

[Credit packs](https://staging.socialtap.dev/pricing/index.md) · [How this endpoint is priced](https://staging.socialtap.dev/docs/reference/rumble/profile/index.md#pricing) · [How credits work](https://staging.socialtap.dev/docs/credits/index.md)

FAQ

## Questions, answered.

**How much does the Rumble Channel API cost?**

1 credit for public page results (meta.source = page), charged only for successful requests. SocialTap credits cost $0.75–$1.45 per 1,000 depending on the pack.

**Am I charged for failed requests?**

No. Requests that return an error cost 0 credits. Responses served from the cache are free too.

Same schema, other platforms

## Profiles everywhere. One parser.

[Instagram Profile APIBetaProfile`GET /v1/instagram/profile`1 credit](https://staging.socialtap.dev/apis/instagram/profile/index.md) · [TikTok Profile APIBetaProfile`GET /v1/tiktok/profile`1 credit](https://staging.socialtap.dev/apis/tiktok/profile/index.md) · [YouTube Channel APIBetaProfile`GET /v1/youtube/profile`1 credit](https://staging.socialtap.dev/apis/youtube/profile/index.md)

More Rumble

## Rumble API. 6 endpoints, one key.

[Rumble Comments APIBetaComment`GET /v1/rumble/comments`1 credit / page](https://staging.socialtap.dev/apis/rumble/comments/index.md) · [Rumble Video APIBetaPost`GET /v1/rumble/post`1 credit](https://staging.socialtap.dev/apis/rumble/post/index.md) · [Rumble Channel Videos APIBetaPost`GET /v1/rumble/posts`1 credit / page](https://staging.socialtap.dev/apis/rumble/posts/index.md) · [Rumble Search APIBetaPost`GET /v1/rumble/search_posts`1 credit / page](https://staging.socialtap.dev/apis/rumble/search_posts/index.md) · [Rumble Transcript APIBetaTranscript`GET /v1/rumble/transcript`From 1 credit](https://staging.socialtap.dev/apis/rumble/transcript/index.md)

## Start with 100 free credits. No card required.

Test keys answer every endpoint from recorded responses, free, so you can build before you spend. Failed requests are always free.

[Get your API key](https://staging.socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Drumble.profile) · [Read the API reference](https://staging.socialtap.dev/docs/reference/rumble/profile/index.md)

---

[HTML version](https://staging.socialtap.dev/apis/rumble/profile/) · [Docs index for AI agents](https://staging.socialtap.dev/llms.txt) · [All docs in one file](https://staging.socialtap.dev/llms-full.txt)
