---
title: "Channel Promotions"
description: "See how a YouTube channel actually makes money beyond AdSense: its own products (courses, ebooks, communities, SaaS, merch), sponsorships, and affiliate deals — with prices, landing-page funnel data (member counts, monthly pricing), and which videos drove each promotion."
source: "https://dashboard.nexlev.io/docs/mcp/channel-promotions"
---

# Channel Promotions

See how a YouTube channel actually makes money **beyond AdSense**: its own products (courses, ebooks, communities, SaaS, merch), sponsorships, and affiliate deals — with prices, landing-page funnel data (member counts, monthly pricing), and which videos drove each promotion.

Two tools work together. `get_channel_promotions` answers everything from NexLev's pre-scraped promotions database — instantly and cheaply. `get_channel_promotions_realtime` is the fallback for channels that **haven't been analyzed yet**: it reads the channel live and saves the result, so every follow-up question is served from the database.

## Prerequisites

- **Connected AI assistant** — Claude, ChatGPT, or any other supported platform
- **Active NexLev account** — [Connect to your AI assistant](/docs/mcp/quickstart) to get started. [Upgrade to Pro](?required_nexlev_lite_pro_access=true) for higher quota limits.

> **Info**
>
> Works with **both API-key and OAuth connections**. Your AI assistant picks the
> right query mode automatically — just ask the question in plain language.

> **Note**
>
> Both tools need the 24-character `UC…` channel ID. If you only have a URL or
> an `@handle`, your assistant resolves it first with [Channel
> Resolver](/docs/mcp/channel-resolver) — no extra work for you.

## Tools

### Channel Promotions

#### `get_channel_promotions`

Queries NexLev's promotions database. One tool, four **query modes** — your assistant chooses based on what you asked.

| Mode               | Question it answers                                   | Requires      |
| ------------------ | ----------------------------------------------------- | ------------- |
| `channelProfile`   | What does **this channel** promote and sell?          | `channelId`   |
| `brandSearch`      | Which **brands** promote across the most channels?    | —             |
| `priceBenchmark`   | What does a **product type** sell for across YouTube? | `productType` |
| `videoAttribution` | Which **videos** on a channel drove product mentions? | `channelId`   |

##### `channelProfile` — one channel's full monetization picture

Everything a single channel promotes, plus a rollup: what it sells, store URLs, self-promo vs sponsor counts, and a recurring-revenue signal.

**Example prompts:**

```
What does @AliAbdaal sell outside of ads?
```

```
Show me every product this channel promotes, with prices: https://www.youtube.com/@channelname
```

```
Does this channel have a paid community or membership, and what does it cost?
```

```
List only the sponsors on this channel — not their own products
```

```
What courses does this channel sell, and include the per-video mentions
```

##### `brandSearch` — platform-wide brand intelligence

Which brands run third-party promotions (sponsorships, affiliate deals, partner mentions) across the most channels, with up to 10 sample channel IDs per brand. Does **not** take a `channelId`.

**Example prompts:**

```
Which VPN brands sponsor the most channels?
```

```
Which brands sponsor the most channels in the SaaS space — paid sponsorships only
```

```
Find brands that appear on at least 20 different channels
```

```
Is NordVPN sponsoring many channels? Show me examples
```

##### `priceBenchmark` — what a product type sells for

Median, min, max, and average prices for one product type across every scraped channel, grouped by billing period **and** currency.

**Example prompts:**

```
What do creators typically charge for a community membership?
```

```
Benchmark course prices across YouTube — one-time payments only
```

```
What's the typical monthly price for a creator SaaS product?
```

##### `videoAttribution` — which videos drove the promotion

The videos on a channel that mentioned products, sorted by views.

**Example prompts:**

```
Which of this channel's videos push their course?
```

```
Show me which videos drove the most views to their paid community
```

```
Which videos on this channel contain sponsorships?
```

**Parameters:**

| Parameter          | Type    | Description                                                                                                                                                                      |
| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query`            | enum    | **Required.** `channelProfile`, `brandSearch`, `priceBenchmark`, or `videoAttribution`                                                                                           |
| `channelId`        | string  | 24-char `UC…` ID. Required for `channelProfile` and `videoAttribution`                                                                                                           |
| `productType`      | enum    | Single type to benchmark. Required for `priceBenchmark`                                                                                                                          |
| `dealTypes`        | enum[]  | `sponsorship`, `affiliate`, `selfPromo`, `promo`, `collaboration`, `partnerMention`, `other`                                                                                     |
| `productTypes`     | enum[]  | `course`, `ebook`, `digitalProduct`, `saas`, `toolSoftware`, `physical`, `merch`, `community`, `membership`, `newsletter`, `serviceLeadgen`, `licensing`, `sponsorLink`, `other` |
| `brand`            | string  | `brandSearch` only — match a brand by name, e.g. `"NordVPN"`                                                                                                                     |
| `brandDomain`      | string  | `brandSearch` only — match a brand domain, e.g. `"nordvpn.com"`                                                                                                                  |
| `minChannels`      | number  | `brandSearch` only — only brands promoted on at least this many channels                                                                                                         |
| `pricePeriod`      | enum    | `priceBenchmark` only — `oneTime`, `monthly`, or `yearly`                                                                                                                        |
| `productSlug`      | string  | `videoAttribution` only — narrow attribution to one product                                                                                                                      |
| `creatorOwnedOnly` | boolean | Restrict to the creator's own products (`channelProfile`, `priceBenchmark`)                                                                                                      |
| `includeMentions`  | boolean | `channelProfile` only — include the 5 most recent per-video mentions per product. Default `false`                                                                                |
| `includePending`   | boolean | Also include lower-confidence rows (confidence < 0.85). Default `false`                                                                                                          |
| `limit`            | number  | Max results — 1–50, default 20                                                                                                                                                   |

> **Tip**
>
> **`selfPromo` vs the rest.** `selfPromo` is the creator's own product;
> `sponsorship`, `affiliate`, and `partnerMention` are someone else's. To
> separate "what they built" from "who pays them", ask for one or the other
> explicitly — e.g. _"only their own products"_ or _"only paid sponsors"_.

### Live Analysis

#### `get_channel_promotions_realtime`

The fallback for channels **not yet in the promotions database**. It analyzes the channel live — reading recent video descriptions and the product landing pages they link to — and returns the same off-platform earnings breakdown.

> **Warning**
>
> **Slow and expensive by design.** One call takes **20–60 seconds** and
> analyzes **one channel**. Its daily quota is much smaller than
> `get_channel_promotions`, and over-limit calls cost more. Use it only when the
> database has no data for a channel you specifically need.

**How you'll normally use it:** you don't call it directly. When `get_channel_promotions` reports a channel hasn't been analyzed yet (`scraped: false`), your assistant offers the live analysis as the fallback.

**Example prompts:**

```
This channel isn't covered yet — run a live analysis and tell me what they sell
```

```
Analyze this channel live and read its last 20 videos instead of just 5
```

```
Run the live promotions analysis but skip the landing pages — I just want the product names fast
```

**What happens next:** the result is **saved to the database**, so every follow-up question about that channel is answered instantly by `get_channel_promotions` — filters, attribution, everything — without spending another live-analysis call.

**Parameters:**

| Parameter      | Type    | Description                                                                                                         |
| -------------- | ------- | ------------------------------------------------------------------------------------------------------------------- |
| `channelId`    | string  | **Required.** 24-char `UC…` ID. `@handles` are not supported — resolve first                                        |
| `limit`        | number  | How many recent long-form videos to read — 1–50. Defaults to **5**. More videos = more products found, but slower   |
| `enrich`       | boolean | Fetch product landing pages — **this is where prices come from**. Default `true`                                    |
| `maxPages`     | number  | Cap on landing pages fetched per call — 0–50, default 10                                                            |
| `minDuration`  | number  | Ignore videos shorter than this many seconds (Shorts filter). Default 60                                            |
| `withComments` | boolean | Also read the creator's pinned comment. Default `false`                                                             |
| `maxAgeHours`  | number  | If already analyzed within this many hours (0–8760), return stored data instantly — but it **still consumes quota** |

> **Note**
>
> **Never run two live analyses for the same channel at once** — concurrent runs
> interfere with each other. And don't loop it over many channels; for
> cross-channel questions (brand rankings, price benchmarks) use
> [`get_channel_promotions`](#channel-promotions), which is built for that and
> far cheaper.

## Example Workflows

### Full monetization teardown of a competitor

```
Analyze how @channelname makes money — their own products with prices, who sponsors them, and which videos push each product hardest
```

Your assistant resolves the handle, runs `channelProfile`, then `videoAttribution` for the products worth digging into.

### Find sponsors to pitch in your niche

```
Which brands sponsor the most personal finance channels? For the top 3, show me example channels they've sponsored and roughly what those channels look like
```

`brandSearch` first, then [Channel Analytics](/docs/mcp/channel-analytics) on the sample channel IDs it returns.

### Price your own product

```
I'm launching a paid community. What do creators typically charge monthly, and what do the top-earning communities in my niche include?
```

`priceBenchmark` with `pricePeriod: monthly`, then `channelProfile` on comparable channels.

### Cover a channel that isn't in the database yet

```
What does this channel sell? If it hasn't been analyzed, run the live analysis and then break down their products by price
```

`get_channel_promotions` → `scraped: false` → `get_channel_promotions_realtime` → follow-ups served from the database.

## Good to Know

- **No data ≠ sells nothing.** An empty result means the channel **hasn't been analyzed yet**. Check the `scraped` flag before drawing conclusions, and use the live analysis if you need that specific channel. Coverage grows continuously.
- **High-confidence by default.** Results include only rows at confidence ≥ 0.85. Ask to "include lower-confidence results" to see rows still pending review.
- **Prices are scraped signals, not verified revenue.** They come from the product landing pages the analysis visited.
- **Never mix price groups.** Benchmarks are split by billing period **and** currency — one-time and monthly prices are never summed, and currencies are never converted.

## Troubleshooting

**"Channel not found" or an empty profile**

- The channel isn't in the promotions database yet. Ask for a live analysis — see [Live Analysis](#promotions-realtime).

**`@handle` rejected**

- Both tools need the 24-character `UC…` ID. Ask your assistant to resolve the handle first with [Channel Resolver](/docs/mcp/channel-resolver).

**`brandSearch` returns nothing for a brand you know exists**

- `brandSearch` covers **third-party** promotions only. Try the brand domain instead of the display name, drop `minChannels`, or check the channel directly with `channelProfile`.

**`priceBenchmark` returns very few rows**

- Some product types are rarely priced publicly. Drop `pricePeriod`, or set `creatorOwnedOnly` to `false` to widen the pool.

**Live analysis found no products**

- The default is the **5 most recent long-form videos**. Ask for more coverage (up to 50) if the channel only promotes occasionally, and make sure landing-page enrichment is on — prices come from those pages.

**Live analysis is taking a long time**

- 20–60 seconds is normal; a real analysis is running. Lower `maxPages` or turn off `enrich` if you want speed over prices.

**Quota limit reached**

- If you've hit your daily limit, [Upgrade to Pro](?required_nexlev_lite_pro_access=true) for higher quota limits, or enable **usage credits** to keep going past it.

## Rate Limits

| Tool | Free | Lite | Pro |
| --- | --- | --- | --- |
| Channel promotions (`get_channel_promotions`) | 5 | 100 | 250 |
| Live promotions analysis (`get_channel_promotions_realtime`) | 2 | 10 | 20 |

### Beyond your allowance (pay as you go)

With **usage credits** enabled in your NexLev account, calls past your daily limit are billed from your credit balance:

| Tool                              | Over-limit price |
| --------------------------------- | ---------------- |
| `get_channel_promotions`          | $0.02 per call   |
| `get_channel_promotions_realtime` | $0.05 per call   |

Without usage credits, both tools pause at your daily limit and tell you when it resets.

## What's Next?

- **[CMS Networks](/docs/mcp/cms-networks)** — Find which YouTube network a channel is signed to
- **[Monetization](/docs/mcp/monetization)** — AdSense-side signals: eligibility, RPM, and revenue estimates
- **[Channel Analytics](/docs/mcp/channel-analytics)** — Size up the channels behind the brands and products
- **[Niche Overview](/docs/mcp/niche-overview)** — Audience profile and brand fit for any niche
- **[Channel Resolver](/docs/mcp/channel-resolver)** — Turn any URL or `@handle` into the `UC…` ID these tools need
