# Vyro Clipping Campaigns Scraper: CPM, Budgets & Follower Reqs (`getascraper/vyro-clipping-campaigns-scraper`) Actor

Scrape Vyro's public clipping campaign board (MrBeast's clipping marketplace): CPM per 1,000 views, budget spent vs remaining, minimum follower requirement, target topics, and posting rules. Flags new campaigns and ones that closed since your last scheduled run. JSON, CSV, or Excel export.

- **URL**: https://apify.com/getascraper/vyro-clipping-campaigns-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.88 / 1,000 campaign rows

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/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

## 🎬 Vyro Clipping Campaigns Scraper: CPM Rates, Budgets & Creator Requirements

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:24px 28px;background:#ECFDF5;border:1px solid #A7F3D0;border-top:4px solid #059669;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Never miss a paying Vyro campaign again</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">See every open campaign's pay rate, budget left, and follower requirement in one dataset, and get told the moment one closes or a new one opens.</span>
</td>
</tr>
</table>

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7F3D0;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#047857">💰 See the real payout</span><br>
<span style="font-size:12px;color:#57534E">Pay rate per 1,000 views, total budget, and how much is already spent, for every open campaign.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7F3D0;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#047857">✅ Skip campaigns you can't join</span><br>
<span style="font-size:12px;color:#57534E">Follower minimums and creator targeting up front, before you waste a submission.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7F3D0;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#047857">🕒 Know what changed</span><br>
<span style="font-size:12px;color:#57534E">New campaigns and campaigns that closed since your last run, flagged automatically.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #A7F3D0;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#047857">📋 Every posting rule in one place</span><br>
<span style="font-size:12px;color:#57534E">Clip length, formats, hashtags, and disclosure rules, no digging through campaign pages.</span>
</td>
</tr>
</table>

Vyro is MrBeast's clipping marketplace: brands post campaigns, clippers turn long-form video into short clips, and get paid per 1,000 verified views. This Actor scrapes [Vyro's public campaign board](https://vyro.com/campaigns) and turns it into structured data ready to filter, sort, and export from the Apify platform, with scheduling and API access built in.

### 🔍 What does Vyro Clipping Campaigns Scraper do?

It reads Vyro's live campaign board and returns every open campaign with its pay rate, budget, and full posting requirements, no manual page-by-page clicking required. Unlike other Vyro trackers, it also surfaces each campaign's creator eligibility rules (minimum followers, target topics, languages, and locations) so you can rule out campaigns you don't qualify for before you apply.

Run it on a schedule and it remembers what it saw last time: brand-new campaigns get flagged, and campaigns that closed or ran out of budget since your last check show up too, all from the same request that pulls today's board.

### 💡 Why use Vyro Clipping Campaigns Scraper?

**Solo clippers.** You've got a following and ten minutes between edits. Filter out campaigns that need more followers than you have, sort by pay rate or budget left, and only look at the ones you can actually join.

**Clipping agencies.** You're placing clips for several creators across multiple boards. Get every open Vyro campaign's budget, pay rate, and requirements in one export instead of checking the site by hand for each client.

**Scheduled monitoring.** You want first pick of new campaigns before the good ones fill up. Run this on an hourly or daily schedule and let it tell you what's new and what just closed, instead of refreshing the page yourself.

### 🚀 How to use it

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #A7F3D0;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#059669;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Pick platforms, a minimum pay rate, and the most followers a campaign can require.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #A7F3D0;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#059669;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the Actor</span><br>
<span style="font-size:12px;color:#57534E">Every open campaign comes back in a clean dataset, usually in under a minute.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#ECFDF5;border:1px solid #A7F3D0;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#059669;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Check back on a schedule</span><br>
<span style="font-size:12px;color:#57534E">Re-run it daily or hourly to catch new campaigns and see what closed.</span>
</td>
</tr>
</table>

### ⚙️ Input

| Field | Type | Required | Description |
|---|---|---|---|
| `platforms` | array | No | Only keep campaigns targeting TikTok, Instagram, YouTube, or X. Leave empty for every platform. |
| `minCpmUsd` | number | No | Minimum pay rate per 1,000 views to include. |
| `minRemainingBudgetUsd` | integer | No | Skip campaigns that are close to running out of money. |
| `maxRequiredFollowers` | integer | No | Exclude campaigns that require more followers than you have. Campaigns with no stated minimum always pass. |
| `freshWithinHours` | integer | No | Only keep campaigns first created within this many hours. |
| `sortBy` | enum | No | Order results by opportunity score, pay rate, budget left, newest, or ending soonest. |
| `maxItems` | integer | No | Maximum number of campaigns to return. |
| `includeClosedFromArchive` | boolean | No | Also include campaigns that were open on a previous run but have since closed or run out of budget. |
| `trackBudgetTrend` | boolean | No | Compute an observed budget-burn rate and flag campaigns that are new since your last run. |
| `proxyConfiguration` | object | No | Proxy settings. Datacenter is used by default and is enough for this target. |

### 📊 Output

```json
{
  "id": "6ab1c2b0cc4b8230185b216f",
  "url": "https://vyro.com/campaigns/cinematic-edits-njQgl-gP",
  "name": "Cinematic edits",
  "brandName": "Ketone-IQ",
  "cpmUsd": 1.5,
  "budgetUsd": 8000,
  "budgetSpentUsd": 143.45,
  "budgetRemainingUsd": 7856.55,
  "budgetSpentPct": 1.79,
  "estimatedRemainingViews": 5237700,
  "platforms": ["tiktok"],
  "minViewsPerClip": 5000,
  "minVideoLengthSec": 15,
  "hashtags": [],
  "ftcDisclosureHashtags": ["#KetoneIQPartner"],
  "endsInDays": 8.6,
  "opportunityScore": 66,
  "isNewSinceLastRun": true,
  "rowStatus": "active"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### 📋 Data table

| Field | Type | Description |
|---|---|---|
| `name` / `brandName` / `url` | string | Campaign name, the brand running it, and a link to the campaign page. |
| `cpmUsd` / `headlineRateUsd` | number | Pay rate per 1,000 verified views. |
| `budgetUsd` / `budgetSpentUsd` / `budgetRemainingUsd` / `budgetSpentPct` | number | Total budget, how much is spent, how much is left, and spend as a percentage. |
| `estimatedRemainingViews` | number | Roughly how many more paid views the remaining budget can cover at the current pay rate. |
| `platforms` / `languages` | array | Platforms and languages the campaign targets. |
| `minFollowersRequired` / `targetTopics` / `targetGender` / `targetCreatorLanguages` / `targetCreatorLocations` | various | Creator eligibility rules for the campaign, when the brand sets any. |
| `minViewsPerClip` / `minVideoLengthSec` / `requiredFormats` | various | Minimum performance and format requirements a clip must meet. |
| `hashtags` / `ftcDisclosureHashtags` / `ftcDisclosureModes` | array / object | Required hashtags and per-platform disclosure rules. |
| `subtitlesRequired` / `requireFreshProfile` / `allowCollabAndTagging` | boolean | Additional posting rules for the campaign. |
| `createdAt` / `endDate` / `ageHours` / `endsInDays` | string / number | When the campaign started, when it ends, and how much runway is left. |
| `opportunityScore` | number | This Actor's own 0-100 score combining pay rate, budget left, time remaining, and how accessible the follower requirement is. Not a number Vyro publishes. |
| `isNewSinceLastRun` / `burnRateUsdPerHour` / `budgetSpentDeltaSinceLastRunUsd` | boolean / number | How the campaign has changed since your last scheduled run. Empty on a first run. |
| `rowStatus` | string | `active` for campaigns currently on the board, `closed_since_last_run` for ones this Actor detected as gone since your last run. |

### 💰 Pricing

This Actor is pay per result. You only pay for the campaigns you actually collect, an empty run costs nothing, and there's no subscription to manage. Free plan runs are limited to 25 campaigns per run, 3 runs per day, and a short wait between runs.

### ⭐ Enjoying Vyro Clipping Campaigns Scraper?

<table width="100%" cellpadding="0" cellspacing="0" style="border-collapse:separate;border-spacing:0">
<tr>
<td style="padding:20px 24px 14px;background:#ECFDF5;border:1px solid #A7F3D0;border-left:5px solid #059669;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Finding campaigns before the budget runs out?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other clippers find this before their favorite campaigns fill up. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#059669;border:1px solid #A7F3D0;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/vyro-clipping-campaigns-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 💡 Tips

Turn on `includeClosedFromArchive` and `trackBudgetTrend` (both on by default) and run this on a schedule. The value compounds over time: the first run has nothing to compare against, but every run after that tells you what's new and what just closed. Set `maxRequiredFollowers` once to match your own follower count and every future run automatically skips campaigns you can't join.

### ❓ FAQ

**Do I need a Vyro account to use this?**
No. This Actor reads Vyro's public campaign board the same way a visitor would, with no login required.

**What is the opportunity score based on?**
It's this Actor's own score, not a number Vyro publishes. It weighs pay rate, budget remaining, time left on the campaign, and how accessible the follower requirement is, so you can sort a small board at a glance. Use it as a starting point, not the final word.

**Why do some campaigns show no follower requirement or creator targeting?**
Not every brand sets one. This Actor never fills in placeholder values. If a field is missing, it's because Vyro didn't return it for that campaign.

**How does it know a campaign closed?**
Vyro's own public board only ever lists currently open campaigns, it doesn't publish a history. This Actor keeps its own record of every campaign it has seen across your scheduled runs, so it can tell you when one has dropped off the board since you last checked.

**Can I see campaigns that closed a long time ago?**
No. This Actor only flags a campaign as closed the first time it notices the campaign is gone, on the run right after it disappears. It doesn't have a way to reconstruct history from before you started running it.

### 🔗 Other actors

- [Kick Trending Clips Scraper: Viral Clips by View Velocity](https://apify.com/getascraper/kick-trending-clips-scraper) ↗ - Find what to clip right now on Kick, ranked by view velocity.
- [Twitch Scraper: channels, live streams, clips and games](https://apify.com/getascraper/twitch-scraper) ↗ - Channels, streams, clips, and game data from Twitch.
- [ShopMy Creator Scraper](https://apify.com/getascraper/shopmy-creator-scraper) ↗ - Creator storefronts, picks, and brand deals from ShopMy.
- [Kick Video Downloader: Clips and VODs as MP4 with Watchlist](https://apify.com/getascraper/kick-video-downloader) ↗ - Download Kick clips and VODs for reuse in your own edits.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/vyro-clipping-campaigns-scraper/changelog.md

# Actor input Schema

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

Only keep campaigns that target at least one of these platforms. Leave empty to include campaigns for every platform.

## `minCpmUsd` (type: `number`):

Only keep campaigns paying at least this much per 1,000 verified views. Leave blank to include every payout rate.

## `minRemainingBudgetUsd` (type: `integer`):

Skip campaigns that are close to running out of money. Only keep campaigns with at least this much budget still unspent.

## `maxRequiredFollowers` (type: `integer`):

Exclude campaigns that require more followers than you have. Vyro's own API exposes a per-campaign minimum-follower requirement that the incumbent Vyro scraper on Apify never surfaces at all, so there was previously no way to filter these out before wasting time on a campaign you don't qualify for. Campaigns with no stated follower minimum always pass this filter. Leave blank to include every campaign regardless of follower requirement.

## `freshWithinHours` (type: `integer`):

Only keep campaigns first created within this many hours, useful for scheduled runs that only care about brand-new campaigns. Leave blank to include campaigns of any age.

## `sortBy` (type: `string`):

How to order the campaigns in the output dataset.

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

Maximum number of active campaigns to return, applied after filtering and sorting. Vyro's public campaign board typically lists well under 25 active campaigns at any given time, so this cap rarely binds today. It exists as a safety limit for when the board grows, and does not limit campaigns added by 'Include Recently Closed Campaigns' below.

## `includeClosedFromArchive` (type: `boolean`):

Also include campaigns this Actor has previously seen active that have since disappeared from Vyro's public board (budget exhausted or campaign ended). This Actor keeps its own persisted history across scheduled runs in its key-value store, something the incumbent Vyro scraper on Apify does not do at all, so run-over-run scheduling can build a private archive of campaigns that rotated off the public page. Closed campaigns are marked with status 'closed\_since\_last\_run' and use their last-observed values. Has no effect on the very first run, since there is no prior history yet.

## `trackBudgetTrend` (type: `boolean`):

Compare each campaign against this Actor's own previous run to compute an observed budget-burn-rate in USD per hour and flag campaigns that are new since the last run. Reads only from this Actor's own key-value store snapshot, so it adds no extra HTTP requests and is safe to leave on. Fields stay empty until a second run has something to compare against.

## `proxyConfiguration` (type: `object`):

Vyro's campaign board is a fully public, unauthenticated JSON endpoint that responds normally even to a plain request with no browser-like headers, so a datacenter proxy is enough. Residential is not needed for this target.

## Actor input object example

```json
{
  "platforms": [],
  "sortBy": "opportunity",
  "maxItems": 25,
  "includeClosedFromArchive": true,
  "trackBudgetTrend": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `campaigns` (type: `string`):

No description

# 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 = {
    "platforms": [],
    "sortBy": "opportunity",
    "maxItems": 25,
    "includeClosedFromArchive": true,
    "trackBudgetTrend": true,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/vyro-clipping-campaigns-scraper").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 = {
    "platforms": [],
    "sortBy": "opportunity",
    "maxItems": 25,
    "includeClosedFromArchive": True,
    "trackBudgetTrend": True,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/vyro-clipping-campaigns-scraper").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 '{
  "platforms": [],
  "sortBy": "opportunity",
  "maxItems": 25,
  "includeClosedFromArchive": true,
  "trackBudgetTrend": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/vyro-clipping-campaigns-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/vyro-clipping-campaigns-scraper"
        }
    }
}
```

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/a8YqGvJfvsCQOdmj7/builds/qi9h5hCIlBsvJSa31/openapi.json
