# Rumble Engagement API. Send a handle or channel link.

Engagement rate from a channel's latest videos. We handle the proxies, blocks and platform changes.

[Get API key](https://socialtap.dev/signup/?next=%2Fplayground%2F%3Fendpoint%3Drumble.engagement)

## Rumble Engagement API at a glance

Returns a Rumble channel's or user's engagement rate per follower and per view, computed over its latest videos, shorts or live streams. The same request returns the profile, each video with its exact counts and its own rate compared with the account's typical video, views, likes, comments and reposts per video, median views, comment-to-like ratio, posting cadence, and the top and bottom video. Accepts a channel or user name, any channel or user link, or a channel ID.

GET `/v1/rumble/engagement`

[Read the API reference](https://socialtap.dev/docs/reference/rumble/engagement/index.md)

- **1 credit** per request, $0.75–$1.97 per 1,000 requests
- **12 typed fields** null when unknown
- **`handle`** is all it needs, e.g. `Bongino`
- **100 credits** free when you sign up, no card, so you can build before you spend

## Send one request. Get 12 fields back.

Copy the request in your language, or hand it to your agent. Sign up for an API key and your first 100 credits are free.

`$ npm install socialtap`

`handle = Bongino`

[Open in playground](https://socialtap.dev/playground/?endpoint=rumble.engagement)

cURL:

```shell
curl 'https://socialtap.dev/v1/rumble/engagement?handle=Bongino' \
  -H "x-api-key: $SOCIALTAP_API_KEY"
```

TypeScript SDK:

```typescript
import { SocialTap } from "socialtap";

const client = new SocialTap(); // apiKey defaults to process.env.SOCIALTAP_API_KEY

const res = await client.rumble.engagement.get({ handle: "Bongino" });
console.log(res.data);
console.log(res.credits.charged, res.meta.request_id);
```

Node.js (fetch):

```javascript
const params = new URLSearchParams({
  handle: "Bongino",
});
const res = await fetch(`https://socialtap.dev/v1/rumble/engagement?${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 (requests):

```python
import os

import requests

res = requests.get(
    "https://socialtap.dev/v1/rumble/engagement",
    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 (net/http):

```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://socialtap.dev/v1/rumble/engagement?"+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": [],
    "bottom_post_id": "v7gad48",
    "id": "_c276782",
    "metrics": {
      "comment_to_like_ratio": 0.30873,
      "comments_per_post": 1314.88,
      "counted_post_count": 25,
      "engagement_rate": 0.001517,
      "engagement_rate_stddev": 0.001491,
      "formats": [
        {
          "counted_post_count": 25,
          "engagement_rate": 0.001517,
          "interactions_per_post": 5573.88,
          "type": "video",
          "views_per_post": 410657.28
        }
      ],
      "interactions_per_post": 5573.88,
      "likes_per_post": 4259,
      "median_engagement_rate": 0.001104,
      "median_views_per_post": 340453,
      "posts_per_week": 0.24,
      "quotes_per_post": null,
      "rated_post_count": 25,
      "reposts_per_post": 4,
      "sampled_post_count": 25,
      "saves_per_post": null,
      "shares_per_post": null,
      "view_engagement_rate": 0.011385,
      "views_per_post": 410657.28
    },
    "newest_post_at": "2026-10-31T11:00:00Z",
    "oldest_post_at": "2024-11-15T15:30:00Z",
    "platform": "rumble",
    "platform_specific": {},
    "posts": [
      {
        "engagement_rate": 0.000292,
        "engagement_vs_median": 0.26,
        "is_counted": true,
        "post": {
          "approximate_fields": [],
          "author": {
            "avatar_url": "https://hugh.cdn.rumble.cloud/video/z8/U/K/d/b/UKdba.baa.4-bongino-t8rqq7.jpeg",
            "display_name": "The Dan Bongino Show",
            "id": "_c276782",
            "is_verified": true,
            "url": "https://rumble.com/c/bongino",
            "username": "bongino"
          },
          "coauthors": [],
          "duration_ms": 3332000,
          "hashtags": [],
          "id": "v7hm5b6",
          "is_nsfw": false,
          "is_pinned": null,
          "is_sponsored": null,
          "language": null,
          "media": [
            {
              "alt_text": null,
              "duration_ms": 3332000,
              "expires_at": null,
              "height": 1080,
              "thumbnail_url": "https://hugh.cdn.rumble.cloud/video/fwe2/6a/s8/1/I/f/F/_/IfF_A.OvCc-small-Bongino-Weekend-Report-Week..jpg",
              "type": "video",
              "url": "https://hugh.cdn.rumble.cloud/video/fwe2/6a/s8/2/I/f/F/_/IfF_A.haa.mp4",
              "width": 1920
            }
          ],
          "mentions": [],
          "metrics": {
            "comment_count": 82,
            "like_count": 990,
            "quote_count": null,
            "repost_count": 0,
            "save_count": null,
            "share_count": null,
            "view_count": 100545
          },
          "platform": "rumble",
          "platform_specific": {
            "rumble": {
              "author_follower_count": 3674175,
              "caption_tracks": [],
              "category": null,
              "concurrent_viewer_count": null,
              "dislike_count": 9,
              "embed_id": "v7ffsdo",
              "embed_url": "https://rumble.com/embed/v7ffsdo/",
              "files": [],
              "is_age_restricted": false,
              "is_live_now": false,
              "keywords": [],
              "live_started_at": null,
              "numeric_id": "449194092",
              "scheduled_start_at": null,
              "secondary_category": null
            }
          },
          "platform_type": "video",
          "published_at": "2026-10-31T11:00:00Z",
          "text": null,
          "thumbnail_url": "https://hugh.cdn.rumble.cloud/video/fwe2/6a/s8/1/I/f/F/_/IfF_A.OvCc-small-Bongino-Weekend-Report-Week..jpg",
          "title": "Bongino Weekend Report - Week of 10/26/26",
          "type": "video",
          "unknown_fields": [
            "hashtags",
            "mentions",
            "platform_specific.rumble.keywords"
          ],
          "url": "https://rumble.com/v7hm5b6-bongino-weekend-report-week-of-102626.html"
        },
        "view_engagement_rate": 0.010662,
        "views_vs_median": 0.3
      },
      {
        "engagement_rate": 0.000363,
        "engagement_vs_median": 0.33,
        "is_counted": true,
        "post": {
          "approximate_fields": [],
          "author": {
            "avatar_url": "https://hugh.cdn.rumble.cloud/video/z8/U/K/d/b/UKdba.baa.4-bongino-t8rqq7.jpeg",
            "display_name": "The Dan Bongino Show",
            "id": "_c276782",
            "is_verified": true,
            "url": "https://rumble.com/c/bongino",
            "username": "bongino"
          },
          "coauthors": [],
          "duration_ms": 3233000,
          "hashtags": [],
          "id": "v7haadi",
          "is_nsfw": false,
          "is_pinned": null,
          "is_sponsored": null,
          "language": null,
          "media": [
            {
              "alt_text": null,
              "duration_ms": 3233000,
              "expires_at": null,
              "height": 1080,
              "thumbnail_url": "https://hugh.cdn.rumble.cloud/video/fww1/25/s8/1/g/a/y/9/gay9A.OvCc-small-Bongino-Weekend-Report-Week..jpg",
              "type": "video",
              "url": "https://hugh.cdn.rumble.cloud/video/fww1/25/s8/2/g/a/y/9/gay9A.haa.mp4",
              "width": 1920
            }
          ],
          "mentions": [],
          "metrics": {
            "comment_count": 82,
            "like_count": 1251,
            "quote_count": null,
            "repost_count": 3,
            "save_count": null,
            "share_count": null,
            "view_count": 254011
          },
          "platform": "rumble",
          "platform_specific": {
            "rumble": {
              "author_follower_count": 3674175,
              "caption_tracks": [],
              "category": null,
              "concurrent_viewer_count": null,
              "dislike_count": 17,
              "embed_id": "v7f3xg0",
              "embed_url": "https://rumble.com/embed/v7f3xg0/",
              "files": [],
              "is_age_restricted": false,
              "is_live_now": false,
              "keywords": [],
              "live_started_at": null,
              "numeric_id": "448640784",
              "scheduled_start_at": null,
              "secondary_category": null
            }
          },
          "platform_type": "video",
          "published_at": "2026-10-24T11:01:00Z",
          "text": null,
          "thumbnail_url": "https://hugh.cdn.rumble.cloud/video/fww1/25/s8/1/g/a/y/9/gay9A.OvCc-small-Bongino-Weekend-Report-Week..jpg",
          "title": "Bongino Weekend Report - Week of 10/19/26",
          "type": "video",
          "unknown_fields": [
            "hashtags",
            "mentions",
            "platform_specific.rumble.keywords"
          ],
          "url": "https://rumble.com/v7haadi-bongino-weekend-report-week-of-101926.html"
        },
        "view_engagement_rate": 0.005248,
        "views_vs_median": 0.75
      },
      {
        "engagement_rate": 0.000354,
        "engagement_vs_median": 0.32,
        "is_counted": true,
        "post": {
          "approximate_fields": [],
          "author": {
            "avatar_url": "https://hugh.cdn.rumble.cloud/video/z8/U/K/d/b/UKdba.baa.4-bongino-t8rqq7.jpeg",
            "display_name": "The Dan Bongino Show",
            "id": "_c276782",
            "is_verified": true,
            "url": "https://rumble.com/c/bongino",
            "username": "bongino"
          },
          "coauthors": [],
          "duration_ms": 3316000,
          "hashtags": [],
          "id": "v7gyjd4",
          "is_nsfw": false,
          "is_pinned": null,
          "is_sponsored": null,
          "language": null,
          "media": [
            {
              "alt_text": null,
              "duration_ms": 3316000,
              "expires_at": null,
              "height": 1080,
              "thumbnail_url": "https://hugh.cdn.rumble.cloud/video/fww1/bd/s8/1/i/k/s/7/iks7A.OvCc-small-Bongino-Weekend-Report-Week..jpg",
              "type": "video",
              "url": "https://hugh.cdn.rumble.cloud/video/fww1/bd/s8/2/i/k/s/7/iks7A.haa.mp4",
              "width": 1920
            }
          ],
          "mentions": [],
          "metrics": {
            "comment_count": 120,
            "like_count": 1180,
            "quote_count": null,
            "repost_count": 2,
            "save_count": null,
            "share_count": null,
            "view_count": 265997
          },
          "platform": "rumble",
          "platform_specific": {
            "rumble": {
              "author_follower_count": 3674175,
              "caption_tracks": [],
              "category": null,
              "concurrent_viewer_count": null,
              "dislike_count": 25,
              "embed_id": "v7es6fm",
              "embed_url": "https://rumble.com/embed/v7es6fm/",
              "files": [],
              "is_age_restricted": false,
              "is_live_now": false,
              "keywords": [],
              "live_started_at": null,
              "numeric_id": "448092562",
              "scheduled_start_at": null,
              "secondary_category": null
            }
          },
          "platform_type": "video",
          "published_at": "2026-10-17T13:00:00Z",
          "text": null,
          "thumbnail_url": "https://hugh.cdn.rumble.cloud/video/fww1/bd/s8/1/i/k/s/7/iks7A.OvCc-small-Bongino-Weekend-Report-Week..jpg",
          "title": "Bongino Weekend Report - Week of 10/12/26",
          "type": "video",
          "unknown_fields": [
            "hashtags",
            "mentions",
            "platform_specific.rumble.keywords"
          ],
          "url": "https://rumble.com/v7gyjd4-bongino-weekend-report-week-of-101226.html"
        },
        "view_engagement_rate": 0.004887,
        "views_vs_median": 0.78
      }
    ],
    "profile": {
      "approximate_fields": [
        "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": 3674175,
        "following_count": null,
        "post_count": 2150,
        "total_like_count": null,
        "total_view_count": 390223865
      },
      "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"
    },
    "top_post_id": "v5pcynb",
    "unknown_fields": [],
    "url": "https://rumble.com/c/bongino"
  },
  "meta": {
    "request_id": "req_3f9c2a7d1e8b4c6a9f0e2d4b6a8c0e1f",
    "platform": "rumble",
    "source": "page",
    "is_cached": false,
    "credits_charged": 1,
    "latency_ms": 723,
    "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": []
  }
}
```

Long arrays and strings are shortened here. Real responses are complete.

## One schema on 6 platforms.

The [response reference](https://socialtap.dev/docs/reference/rumble/engagement/index.md#response) lists every field, its type and when it is `null`. [See the full schema](https://socialtap.dev/resources/engagement/index.md).

- ### Null means unknown

  A field Rumble doesn't show is null, never zero or an empty string, so a real zero always means zero.
- ### What it accepts

  Rumble channel or user: a bare name (Bongino: a channel, else the user of that name), c/\<name> for a channel or user/\<name> for a user, any channel or user link with any tab after it (rumble.com/c/Bongino, rumble.com/c/Bongino/videos, rumble.com/user/vivafrei/about, the root rumble.com/Bongino link), or a channel's id as this API returns it (_c276782) or its c/c-\<channel id> name.
- ### Write one parser

  Rumble, TikTok, Instagram and 3 more platforms answer in these fields, so the code that reads one reads them all.

- **`platform`string**: Platform ID (tiktok, instagram, …).
- **`id`string**: Platform-native account ID (equals profile.id).
- **`url`string**: Canonical profile URL (equals profile.url).
- **`profile`object**: The account, as its profile endpoint returns it; its metrics.follower_count divides every engagement_rate.
- **`posts`object\[\]**: The sampled recent posts in the profile's order, each with its own figures. \[\] when none; \[\] and in unknown_fields when unreadable (a private account, a failed posts request).
- **`metrics`object**: Figures over the counted posts (by the account, not pinned); each null when no counted post has its inputs.
- **`oldest_post_at`string**: Publish time of the oldest counted post, RFC 3339 UTC: where the sample starts.
- **`newest_post_at`string**: Publish time of the newest counted post, RFC 3339 UTC: when the account last posted.

Live data from 33 platforms.

[TikTok](https://socialtap.dev/apis/tiktok/index.md) · [Instagram](https://socialtap.dev/apis/instagram/index.md) · [Facebook](https://socialtap.dev/apis/facebook/index.md) · [YouTube](https://socialtap.dev/apis/youtube/index.md) · [Reddit](https://socialtap.dev/apis/reddit/index.md) · [Threads](https://socialtap.dev/apis/threads/index.md) · [Spotify](https://socialtap.dev/apis/spotify/index.md) · [Amazon](https://socialtap.dev/apis/amazon/index.md) · [Apple Music](https://socialtap.dev/apis/applemusic/index.md) · [Pinterest](https://socialtap.dev/apis/pinterest/index.md) · [Rumble](https://socialtap.dev/apis/rumble/index.md) · [X](https://socialtap.dev/apis/x/index.md) · [Bluesky](https://socialtap.dev/apis/bluesky/index.md) · [Twitch](https://socialtap.dev/apis/twitch/index.md) · [LinkedIn](https://socialtap.dev/apis/linkedin/index.md) · [Telegram](https://socialtap.dev/apis/telegram/index.md) · [TikTok Shop](https://socialtap.dev/apis/tiktokshop/index.md) · [Kwai](https://socialtap.dev/apis/kwai/index.md) · [Snapchat](https://socialtap.dev/apis/snapchat/index.md) · [SoundCloud](https://socialtap.dev/apis/soundcloud/index.md) · [Truth Social](https://socialtap.dev/apis/truthsocial/index.md) · [Kick](https://socialtap.dev/apis/kick/index.md) · [Komi](https://socialtap.dev/apis/komi/index.md) · [Lnk.Bio](https://socialtap.dev/apis/linkbio/index.md) · [Linkme](https://socialtap.dev/apis/linkme/index.md) · [Linktree](https://socialtap.dev/apis/linktree/index.md) · [Pillar](https://socialtap.dev/apis/pillar/index.md) · [TikTok Ad Library](https://socialtap.dev/apis/tiktok-ad-library/index.md) · [Facebook Ad Library](https://socialtap.dev/apis/facebook-ad-library/index.md) · [Facebook Events](https://socialtap.dev/apis/facebook-events/index.md) · [Facebook Marketplace](https://socialtap.dev/apis/facebook-marketplace/index.md) · [Google Ads Transparency Center](https://socialtap.dev/apis/google-ads-transparency/index.md) · [LinkedIn Ad Library](https://socialtap.dev/apis/linkedin-ad-library/index.md)

## What teams build with the Rumble Engagement API.

- ### Vet creators before a sponsorship
- ### Compare engagement across a shortlist
- ### Track a channel's posting cadence
- ### Spot a creator's outlier videos

## Good to know before you build.

- The figures cover the account's latest uploads on one tab, the first page of the Rumble Channel Videos API: its Videos tab by default, or tab=shorts or tab=live (its Livestreams tab, where many Rumble shows are; a stream on air or scheduled is in the sample with its counts so far). The profile and each video are exactly what the Rumble Channel API and the Rumble Channel Videos API return.
- Engagement rate counts likes plus comments, per follower and per view, so it means the same on every platform. Reposts have their own average, and Rumble's dislikes are on each video (platform_specific.rumble.dislike_count), not in the rate.
- profile.metrics.follower_count is exact, read from the account's own videos in the sample, because Rumble's profile header cuts it to three significant figures. When the sample has none of the account's videos it is the header's count, listed in approximate_fields with every per-follower rate. View, like, comment and repost counts are exact.
- A user's Videos tab (user/\<name>) also lists the uploads of the channels it owns: those are in posts with is_counted false, since their followers are the channel's, and the figures cover the user's own uploads.
- When the profile's About tab can't be read, the profile comes from the account's home tab (no description, join date, or video and view counts, which a partial_data warning names) and the figures are the same. An account without uploads returns its profile with an empty sample.
- Names that are no channel or user return not_found.

## 1 credit per request. Failed requests are free.

Buy credits once and spend them on any endpoint, on any platform.

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

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

- Cache hits are free.
- Credits from packs and top-ups never expire.
- A monthly plan's credits are spent first, and what is left of them ends at each renewal.
- Prices exclude tax: sales tax is added at checkout where it applies.
- Outside the US, plans and packs are sold to businesses: checkout asks for your VAT, GST or other business tax ID.

## Questions about the Rumble Engagement API.

More in the [API reference](https://socialtap.dev/docs/reference/rumble/engagement/index.md).

**How is the engagement rate calculated?**

Likes plus comments, divided by followers and by views. It is worked out for each of the account's latest uploads on one tab, and you get the mean, median and spread. Reposts have their own average and dislikes are left out.

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

A request costs 1 credit. SocialTap credits cost $0.75–$1.97 per 1,000, depending on the plan or pack.

Other platforms

## Engagement stats on 5 more platforms.

- [TikTok Engagement API](https://socialtap.dev/apis/tiktok/engagement/index.md) (1 credit · `GET /v1/tiktok/engagement`)
- [Instagram Engagement API](https://socialtap.dev/apis/instagram/engagement/index.md) (1 credit · `GET /v1/instagram/engagement`)
- [Facebook Engagement API](https://socialtap.dev/apis/facebook/engagement/index.md) (1 credit · `GET /v1/facebook/engagement`)
- [YouTube Engagement API](https://socialtap.dev/apis/youtube/engagement/index.md) (1 credit · `GET /v1/youtube/engagement`)
- [Reddit Engagement API](https://socialtap.dev/apis/reddit/engagement/index.md) (1 credit · `GET /v1/reddit/engagement`)

More Rumble

## Rumble API. 7 endpoints, one key.

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

## Try it on an account you know.

Paste its handle or link in the playground, or copy the request into your code.

100free credits

- No credit card
- Failed requests are free
- Works on all 218 endpoints

[Start for free](https://socialtap.dev/signup/) [Read the docs](https://socialtap.dev/docs/index.md)

---

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