# Vyro Clipping Campaigns Scraper | CPM & Budget (`maximedupre/vyro-clipping`) Actor

Collect public Vyro clipping campaigns with payout rates, funding, brands, and posting rules when available. Filter by platform, payout, funding, date, or status to choose which campaign pages to review.

- **URL**: https://apify.com/maximedupre/vyro-clipping.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Business
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 campaigns

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

### 🎬 Review Vyro clipping campaigns before choosing what to post

Vyro Clipping Campaigns Scraper is for clippers, agencies, and campaign researchers. It collects public campaign names, payout terms, funding, brands, and posting rules when available. Review these details in one dataset to choose which campaign pages to check.

- Browse the public **[Vyro Clipping Platform](https://apify.com/maximedupre/vyro-clipping/examples/vyro-clipping-platform)** campaign board.
- Find **[Active Vyro Campaigns](https://apify.com/maximedupre/vyro-clipping/examples/active-vyro-campaigns)** to review campaigns marked active by Vyro.
- Set a minimum payout to find **[High Paying Vyro Campaigns](https://apify.com/maximedupre/vyro-clipping/examples/high-paying-vyro-campaigns)**.
- Review **[Funded Vyro Campaigns](https://apify.com/maximedupre/vyro-clipping/examples/funded-vyro-campaigns)** with unspent funding.
- Use a creation-date filter to find **[New Vyro Campaigns](https://apify.com/maximedupre/vyro-clipping/examples/new-vyro-campaigns)**.

#### 📋 Payout terms, funding, and posting rules

Each saved row describes one successfully read campaign from Vyro's public board. It keeps the source campaign ID and name, plus available payment terms, funding, dates, platforms, languages, and clip rules. Missing optional data stays absent.

Rows may also include public media references and validated observations from earlier runs. Media links point to the source files or pages. The Actor does not download or edit clips, enroll you in a campaign, or collect payments.

#### ▶️ Run a Vyro campaign search

1. Set the platform, payout, funding, or date filters you need, or leave them blank.
2. Turn on `activeOnly` if you only want campaigns that Vyro marks active.
3. Set `maxItems`, or leave it empty to return all available matches until the source is exhausted.
4. Start the Actor and open the campaign dataset to review or export the rows.

#### ⚙️ Input

All fields are optional. `activeOnly` defaults to `false`. The form prefills `maxItems` with `10`, but you can clear it.

| Field | Type | What it does |
| --- | --- | --- |
| `platforms` | array of strings | Include campaigns that support at least one listed posting platform. Leave blank to include all platforms. |
| `minPayoutPerThousandViews` | number | Minimum published payout in USD per 1,000 views. Must be at least 0. When set, campaigns with no stated rate are excluded. |
| `minAvailableFunding` | number | Minimum unspent funding in USD. Must be at least 0. Use a positive amount to require available funding. When set, campaigns with unknown funding are excluded. |
| `followerCount` | integer | Your follower count, at least 0. Exclude a campaign if its stated follower minimum exceeds this count. Campaigns with no stated minimum stay included; no minimum is guessed. |
| `createdAfter` | string | Include campaigns created on or after this date in `YYYY-MM-DD` form. When set, campaigns with no known creation date are excluded. |
| `activeOnly` | boolean | Include only campaigns that Vyro reports as active. Turn off to include all statuses. Default: `false`. |
| `maxItems` | integer | Stop after this many matching campaigns. Minimum: 1, with no fixed upper bound. Leave empty to return all available matches until the source is exhausted. |

This is the public input from the successful default-input run of the current beta build:

```json
{
  "activeOnly": false,
  "maxItems": 10
}
```

#### 🧾 Output

The `campaigns` output link opens the collected campaigns in the dataset. Each row has the shape below. Only `campaignId` and `name` are required. Other fields appear when available.

**Run output**

| Field | Type | What it does |
| --- | --- | --- |
| `campaigns` | string | Link to the collected campaign dataset. |

**Campaign row**

| Field | Type | What it does |
| --- | --- | --- |
| `campaignId` | string | Vyro campaign ID for joining campaign data. |
| `name` | string | Campaign name published by Vyro. |
| `paymentModel` | string | Payment model stated by the campaign. |
| `payoutPerThousandViews` | number | Published pay in USD per 1,000 verified views. |
| `funding` | object | Source-published funding amounts. |
| `funding.total` | number | Total campaign funding in USD. |
| `funding.spent` | number | Campaign funding spent in USD. |
| `brand` | object | Creator or brand named by the campaign. |
| `brand.name` | string | Creator or brand name. |
| `brand.imageUrl` | string | Source URL for the creator or brand image. |
| `status` | string | Campaign status published by Vyro. |
| `participationLocked` | boolean | Whether Vyro says participation is locked. |
| `createdAt` | string | Source-published creation date and time. |
| `updatedAt` | string | Source-published update date and time. |
| `startsAt` | string | Source-published start date and time. |
| `endsAt` | string | Source-published end date and time. |
| `platforms` | array of strings | Posting platforms supported by the campaign. |
| `languages` | array of strings | Languages stated by the campaign. |
| `clipRequirements` | object | Rules for the clips you post. |
| `clipRequirements.minimumViews` | integer | Minimum views required by the campaign. |
| `clipRequirements.minimumDurationSeconds` | number | Shortest allowed clip length in seconds. |
| `clipRequirements.formats` | array of strings | Required posting formats. |
| `hashtags` | array of strings | Required hashtags. |
| `adDisclosures` | array of objects | Source-published advertising disclosure rules. |
| `adDisclosures[].platform` | string | Posting platform covered by the rule. |
| `adDisclosures[].rule` | string | Required disclosure text or rule. |
| `postingRules` | object | Other posting rules stated by the campaign. |
| `postingRules.subtitles` | string | Stated subtitle rules. |
| `postingRules.freshProfile` | string | Stated rules for using a new profile. |
| `postingRules.collaboration` | string | Stated collaboration rules. |
| `postingRules.tagging` | string | Stated rules for tagging accounts. |
| `mediaReferences` | array of objects | Source-published footage or audio references. Files stay at the source. |
| `mediaReferences[].kind` | string | Media kind stated by the source. |
| `mediaReferences[].title` | string | Source-published media title. |
| `mediaReferences[].url` | string | Link to the media or its page. Required for each reference. |
| `observations` | array of objects | Validated campaign history. Board absence requires a successful complete-board comparison and does not prove closure or deletion. |
| `observations[].observedAt` | string | Observation date and time. Required for each observation. |
| `observations[].presentOnBoard` | boolean | Whether a successful complete-board read included the campaign. Absent when the board read was incomplete. |
| `observations[].funding` | object | Source-published funding at this observation. |
| `observations[].funding.total` | number | Total funding in USD at this observation. |
| `observations[].funding.spent` | number | Spent funding in USD at this observation. |

This complete row comes from the newest successful current-beta run. It shows payout terms, clip rules, and funding observations.

```json
{
  "campaignId": "6ac12cafbec7216b15f363db",
  "name": "5 Guys Face Their Crush",
  "paymentModel": "CPM",
  "payoutPerThousandViews": 1,
  "funding": {
    "total": 2000,
    "spent": 234.31
  },
  "brand": {
    "name": "Kevin Langue",
    "imageUrl": "https://cdn.vyro.com/3HN6WPJm/$3HN6WPJm.png"
  },
  "status": "active",
  "participationLocked": false,
  "createdAt": "2026-10-03T16:26:23.197Z",
  "updatedAt": "2026-10-04T23:14:12.771Z",
  "startsAt": "2026-10-03T16:44:25.674Z",
  "endsAt": "2026-10-17T13:00:00.000Z",
  "platforms": [
    "tiktok",
    "youtube",
    "instagram"
  ],
  "languages": [
    "en"
  ],
  "clipRequirements": {
    "minimumViews": 5000,
    "minimumDurationSeconds": 20,
    "formats": [
      "INSTAGRAM_REEL"
    ]
  },
  "hashtags": [
    "#kevinlangue"
  ],
  "adDisclosures": [
    {
      "platform": "tiktok",
      "rule": "either"
    },
    {
      "platform": "youtube",
      "rule": "either"
    },
    {
      "platform": "instagram",
      "rule": "either"
    }
  ],
  "postingRules": {
    "subtitles": "false",
    "freshProfile": "false",
    "collaboration": "false",
    "tagging": "false"
  },
  "mediaReferences": [
    {
      "url": "https://f.io/DvtfTpUk",
      "title": "5 Guys Face Their Crush.mp4",
      "kind": "video"
    }
  ],
  "observations": [
    {
      "observedAt": "2026-10-04T23:27:48.742Z",
      "funding": {
        "total": 2000,
        "spent": 234.31
      },
      "presentOnBoard": true
    },
    {
      "observedAt": "2026-10-04T23:28:38.497Z",
      "funding": {
        "total": 2000,
        "spent": 234.31
      }
    }
  ]
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. **Campaign** covers one public clipping campaign successfully read and saved with its available details. Check the Pricing tab for the rate for your plan. A run with no saved campaigns does not trigger this campaign event.

#### 🔌 Integrations

Read campaign rows through the Apify API or export the dataset as JSON, CSV, or a spreadsheet. Use `campaignId` to join the rows with your own campaign data. Apify schedules let you repeat a run with saved filters.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Why did a campaign disappear after I set a filter?

Payout, funding, and date filters exclude campaigns whose needed values are unknown. Platform filters keep campaigns that support at least one selected platform. Turn off `activeOnly` to allow every source status.

##### Does the follower filter prove that I can join a campaign?

No. It only excludes campaigns with a stated follower minimum above your count. The public campaigns checked so far state no minimum, so they stay included. Review the campaign's full terms before taking part.

##### Does a missing campaign mean it closed?

No. A board absence can be recorded only after a successful complete-board comparison with a prior observation. Absence does not prove closure or deletion. The Actor does not rebuild history from before validated observations began.

##### Can this edit videos or submit clips for me?

No. It returns campaign data and available source media references. It does not download, store, edit, or generate media, enroll you, submit clips, or collect payments.

##### Do I need a Vyro login?

No. The Actor reads publicly readable campaigns. Private campaigns are outside its scope.

##### Is Vyro legit, and will a campaign pay me?

The Actor reports the payout terms and funding that Vyro publishes. It does not verify a brand's claims or guarantee payment. Check the campaign terms and the source before deciding to post.

### 📝 Changelog

**v0.0** (04-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~vyro-clipping/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- Use [Whop Content Rewards Scraper for Campaigns](https://apify.com/maximedupre/whop-content-rewards-campaigns) to review payout and budget data on another creator campaign board.
- Use [YouTube Transcript API](https://apify.com/maximedupre/youtube-transcript-api) to read available captions and timings while reviewing public YouTube source videos.
- Use [YouTube Most Replayed Scraper](https://apify.com/maximedupre/youtube-most-replayed-scraper) to study replay peaks and moments in public YouTube videos.
- Compare [Whop Content Rewards + Vyro Clipping Campaigns Scraper](https://apify.com/literate_universe/whop-content-rewards-scraper) to review a combined campaign-board option.
- Compare [Clipping Campaigns Aggregator | 4 Boards, One Ranked Feed](https://apify.com/tactful_anvil/clipping-campaigns-aggregator) to review clipping campaigns across several boards.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

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

Include campaigns that support at least one of these posting platforms. Leave blank to include all platforms.

## `minPayoutPerThousandViews` (type: `number`):

Include campaigns that pay at least this amount per 1,000 views. Campaigns with no stated rate per 1,000 views are excluded when you set this filter.

## `minAvailableFunding` (type: `number`):

Include campaigns with at least this amount of unspent funding. Use a positive amount to require available funding. Campaigns with unknown funding are excluded when you set this filter.

## `followerCount` (type: `integer`):

The public campaigns checked so far state no follower minimum, so this filter keeps them included. If a campaign states a follower minimum greater than your count, this filter excludes it. No follower minimum is guessed.

## `createdAfter` (type: `string`):

Include campaigns created on or after this date. Campaigns with no known creation date are excluded when you set this filter.

## `activeOnly` (type: `boolean`):

Include only campaigns that Vyro reports as active. Turn off to include all campaign statuses.

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

Stop after collecting this many campaigns that match your filters. Leave blank to return all available matches until the source is exhausted.

## Actor input object example

```json
{
  "activeOnly": false,
  "maxItems": 10
}
```

# Actor output Schema

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

Open the collected campaigns and their available details.

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/vyro-clipping").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 = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/vyro-clipping").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 '{
  "maxItems": 10
}' |
apify call maximedupre/vyro-clipping --silent --output-dataset

```

## MCP server setup

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

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/pI2kfCAa0s6hte1ri/builds/umR4iw9pmyLhrXW55/openapi.json
