# Whop Clipping Content Rewards Scraper (`lurkapi/whop-clipping-content-rewards-scraper`) Actor

Find and compare public Whop Content Rewards clipping and UGC campaigns.

- **URL**: https://apify.com/lurkapi/whop-clipping-content-rewards-scraper.md
- **Developed by:** [LurkAPI](https://apify.com/lurkapi) (community)
- **Categories:** Agents, Social media, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.09 / 1,000 campaign results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Whop Clipping Content Rewards Scraper

Track every public Whop Content Rewards clipping and UGC campaign in one place. Rank campaigns by reward, budget left, or lowest competition, and pull requirements, payout rules, and resource links on demand.

_A DIY dashboard for clippers and UGC creators picking their next campaign, and for brands watching what competitors are paying._

### 🎯 What it does

Most Content Rewards trackers show you campaigns one page at a time. The signal you actually want lives across the whole board: which campaign pays the most per 1K views, which still has real budget left, which one has the fewest creators fighting for it, which one just launched.

This scraper is built around comparison:

- **Directory scan**: pulls every public campaign in one run, ready to sort in a spreadsheet
- **Exact URL mode**: paste the campaigns you already care about and get clean, normalized rows for each
- **Low-competition finder**: filter to campaigns with few participating creators and rank the easiest wins first
- **Fresh money watch**: sort by newest funding date to catch campaigns before they saturate

Built for clippers hunting the best-paying campaigns, UGC creators screening briefs, and agencies tracking competitor spend.

### 📋 How to use it

#### Step 1: Pick your inputs

**Option A: Scan the whole directory.** Leave **Exact campaign URLs** empty and hit Start. You get up to 500 current campaigns in one export.

**Option B: Scrape specific campaigns.** Paste public campaign URLs, one per line:
`https://contentrewards.com/discover/{campaign-id}`

You can also mix mode B with the filters below to run a targeted comparison across your saved list.

#### Step 2: Filter and sort

Combine any of these filters (each counts once per saved row):

- **Search text** across title, brand, category, and description
- **Campaign type**: Clipping, UGC, or Both
- **Accepted platform**: TikTok, Instagram, YouTube, X, Facebook
- **Category** name (case-insensitive)
- **Status**: Active (free), Completed or paused, All
- **Minimum reward per 1K views**
- **Minimum budget left**
- **Maximum budget spent %**
- **Maximum creators** (helps find low-competition campaigns; loads each page, slightly slower)

Sort options:

- **Budget left** (default, free)
- **Highest reward**
- **Newest**
- **Lowest budget spent**
- **Fewest creators** (loads every matching page, slower)
- **Highest success rate** (loads every matching page, slower)

#### Step 3: Run and read results

Click **Start**. The Output tab has two ready-made views:

- **Overview**: economics and competition signals at a glance
- **Details**: descriptions, requirements, payout rules, and public links

Always check the `status` field first. `success` means the row is a real campaign. Anything else explains what happened and is not billed.

#### Example output

A complete row from a directory scan with **Include campaign details** turned on. Requirements, payout rules, and resource links only appear when the add-on is enabled.

```json
{
    "status": "success",
    "campaignId": "188c3e39-7850-4896-94df-e7a5be0cfec3",
    "title": "Boxabl Official Clipping",
    "brand": "Clip Farm",
    "campaignStatus": "active",
    "detailsIncluded": true,
    "scrapedAt": "2026-07-23T04:05:42.328Z",
    "error": null,
    "description": "Boxabl makes foldable homes. They have a 20x20 foot home called the Casita that ships flat and unfolds on-site. You're clipping from a list of pre-approved YouTube videos including factory tours and walkthroughs from major creators. Your job is to clip the best moments and post to short-form (TikTok, Instagram Reels, YouTube Shorts, and X) to drive views and brand awareness.",
    "campaignType": "clipping",
    "category": "Entertainment",
    "sourceStatus": "active",
    "rewardPerThousandUsd": 0.5,
    "totalBudgetUsd": 85000,
    "budgetSpentUsd": 2123.83,
    "budgetLeftUsd": 82876.17,
    "progressPercentage": 2,
    "socialPlatforms": ["youtube", "tiktok", "instagram"],
    "creatorsCount": 1871,
    "viewCount": 4200000,
    "viewCountDisplay": "4.2M",
    "successRate": 30,
    "engagementUsd": 2123.83,
    "isVerified": true,
    "fundedAt": "2026-07-18T01:01:25.547Z",
    "campaignUrl": "https://contentrewards.com/discover/188c3e39-7850-4896-94df-e7a5be0cfec3",
    "whopUrl": "https://whop.com/clip-farm-d5/",
    "thumbnailUrl": "https://cdn.contentrewards.com/user_OcrJjJleyCAyi/1784333743622.jpg",
    "brandAvatarUrl": "https://assets-2-prod.whop.com/public/uploads/user_2427402/image/bots/2025-08-17/52e2b90e-e670-46b5-9bdb-167c91b8ec59",
    "companyId": "biz_11XCiCYU5NQqLk",
    "experienceId": "da051a5b-cadb-4ea0-a3cc-34b59367eec5",
    "whopExperienceId": "exp_sKCcnfigfcLoSb",
    "whopProductRoute": "clip-farm-d5",
    "totalBudgetDisplay": "$85,000",
    "budgetSpentDisplay": "$2,123.83",
    "rewardDisplay": "$0.50",
    "requirements": [
        { "isMandatory": true, "platform": "all", "text": "40% Tier 1 Audience (US/CAN/AUS/UK)" },
        { "isMandatory": true, "platform": "all", "text": "Tag @boxabl in every caption" },
        { "isMandatory": true, "platform": "all", "text": "No mocking or negativity toward the brand or featured talent" }
    ],
    "payouts": [
        { "platform": "youtube", "cpmUsd": 0.5, "cpmDisplay": "$0.50", "minViews": 2000, "maxPayoutUsd": 500, "maxPayoutDisplay": "$500.00" },
        { "platform": "tiktok", "cpmUsd": 0.5, "cpmDisplay": "$0.50", "minViews": 2000, "maxPayoutUsd": 500, "maxPayoutDisplay": "$500.00" },
        { "platform": "instagram", "cpmUsd": 0.5, "cpmDisplay": "$0.50", "minViews": 2000, "maxPayoutUsd": 500, "maxPayoutDisplay": "$500.00" }
    ],
    "resources": [
        { "label": "BRIEF", "description": null, "platform": "google_drive", "url": "https://docs.google.com/document/d/1DP7iD-sndoSnaihYhwppziogPXi5ZT3OkTHiOQI__X0/edit?usp=sharing" },
        { "label": "FOOTAGE", "description": null, "platform": "google_drive", "url": "https://docs.google.com/document/d/1QwGNf5KW_ACPqlkLpVvraUXlM8-lJz170yz2YOuR-SE/edit?usp=sharing" }
    ]
}
````

### 💎 Add-ons

Optional extras, all off by default. Turn on only what a run needs.

- **Include campaign details** *(paid)*: Adds public requirements (what the brand demands from a clip), per-platform payout rules (CPM, minimum views, maximum payout), and resource links (briefs, content banks, footage folders). Only saved rows where the details actually loaded are billed.

### 💰 Pricing

Pay only for results you actually get back. No subscription, no minimum.

| Event | Price | When |
|---|---|---|
| Campaign result | **$1.09 per 1,000 campaigns** | per public campaign snapshot saved to the dataset |
| Filter applied | **$0.10 per 1,000 results** | per active filter, per saved row (multiple choices inside one filter still count as one) |
| Sort applied | **$0.10 per 1,000 results** | per saved row, when a non-default sort is used |
| Campaign details | **$0.10 per 1,000 results** | per saved row where the details enrichment succeeded |

No charge for filtered-out campaigns, invalid input, empty results, or unavailable exact URLs. Apify's default start event may still apply.

### 💡 Good to know

- **500 campaigns per run.** The public directory currently holds around this number of live campaigns, so a default run captures the market.
- **No history kept.** Every run is a fresh snapshot. Schedule runs and compare `campaignId` values across snapshots in your own tool to track changes.
- **Dedup is automatic.** The same campaign submitted twice (in different case, with `www`, etc.) is only fetched and billed once.
- **Fewest-creators and Highest-success-rate sorts are slower.** They need to load every matching campaign page to rank. Use them when you want quality signal, not raw speed.
- **Field coverage matches the site.** If a campaign owner did not publish a value, the field comes back `null`.
- **Output toggles** let you trim each row to just the fields you actually need.
- Files and datasets live in your Apify storage. How long they are kept depends on your Apify plan.

### ❓ FAQ

**Does it track a campaign over time?**
No. Every run is a current public snapshot. To watch a campaign, schedule runs and compare `campaignId`, budget, progress, or creators count across snapshots in your own tool.

**Why is a field null?**
Not every brand publishes every value. Null means the field was requested but the public page did not include it at scrape time.

**Do I need a Whop account?**
No. Only public pages are read.

**Can I scrape private, paid, or member-only content?**
No. Login-gated and member-only content is out of scope.

**Which proxy should I use?**
Nothing on your side. Networking is managed by the actor automatically.

**Can I run this on a schedule?**
Yes. Use Apify Schedules to run the actor on any cadence (hourly, daily, custom cron).

**How long are my results stored?**
Results live in your Apify dataset. How long they are kept depends on your Apify plan.

### ⚖️ Legal Disclaimer

This actor is for educational, research, and market-intelligence use. It extracts public commercial data (campaign titles, brands, budgets, rewards, requirements, and public links) from publicly accessible Content Rewards pages. The developer does not host, store, or possess any output; all data is delivered to your Apify dataset. No personal user data is collected.

By running this actor, **you assume full responsibility** for compliance with applicable laws, Whop and Content Rewards Terms of Service, and any data-protection regulations in your target jurisdiction (e.g. GDPR, CCPA). The developer assumes **no liability** for platform blocks, bans, regulatory actions, or any other consequences of your use.

This software is provided **"as-is"** with no warranty. Rewards, budgets, creator counts, and other exposed metrics are public snapshots, not audited figures. Data availability depends on the source at run time.

**Keywords:** Whop scraper, Content Rewards scraper, Whop clipping campaigns, UGC campaigns, clipping campaign finder, TikTok clipping payouts, Instagram Reels payouts, YouTube Shorts campaigns, UGC brief finder, brand campaign spy, creator economy data, CPM tracker, brand budget tracker, campaign discovery, clipping payouts.

# Actor input Schema

## `startUrls` (type: `array`):

Public Content Rewards campaign URLs, one per line. Format: https://contentrewards.com/discover/{campaign-id}. Leave empty to scan the full public directory instead.

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

How many campaign snapshots to return. Default and product limit is 500 per run.

## `includeDetails` (type: `boolean`):

Adds public requirements, per-platform payout rules, and campaign resource links. Charged only for saved results where enrichment succeeded.

## `searchText` (type: `string`):

Keep campaigns whose title, brand, category, or description contains this text. Case-insensitive.

## `campaignTypes` (type: `array`):

Keep campaigns of the selected types. Picking several still counts as one filter.

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

Keep campaigns that accept posts on the selected platforms.

## `categories` (type: `array`):

Keep campaigns whose category matches any name in the list. Case-insensitive. One per line.

## `status` (type: `string`):

Active is free. Completed or paused and All each count as one filter.

## `minRewardPerThousandUsd` (type: `number`):

Keep campaigns paying at least this USD amount per 1,000 views.

## `minBudgetLeftUsd` (type: `number`):

Keep campaigns with at least this much unspent budget.

## `maxProgressPercentage` (type: `number`):

Keep campaigns at or below this budget-spent percentage.

## `maxCreators` (type: `integer`):

Keep campaigns with no more than this many participating creators. Requires loading each campaign page, so the run takes slightly longer.

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

Budget left is free. Any other sort adds one sorting event per saved result. Fewest creators and Highest success rate need to load every matching campaign page, so those runs take longer.

## `outputDescription` (type: `boolean`):

Include the public campaign description.

## `outputCampaignType` (type: `boolean`):

Include clipping, UGC, or both.

## `outputCategory` (type: `boolean`):

Include the campaign category name.

## `outputSourceStatus` (type: `boolean`):

Include the raw status value published by the source.

## `outputRewardPerThousandUsd` (type: `boolean`):

Include the numeric USD reward per 1,000 views.

## `outputTotalBudgetUsd` (type: `boolean`):

Include the numeric total campaign budget.

## `outputBudgetSpentUsd` (type: `boolean`):

Include the numeric amount already spent.

## `outputBudgetLeftUsd` (type: `boolean`):

Include the calculated unspent budget.

## `outputProgressPercentage` (type: `boolean`):

Include the percentage of budget spent.

## `outputSocialPlatforms` (type: `boolean`):

Include the list of accepted platforms.

## `outputCreatorsCount` (type: `boolean`):

Include the count of participating creators.

## `outputViewCount` (type: `boolean`):

Include the normalized numeric view count.

## `outputViewCountDisplay` (type: `boolean`):

Include the original abbreviated view-count string (e.g. 103.5M).

## `outputSuccessRate` (type: `boolean`):

Include the reported submission success rate.

## `outputEngagementUsd` (type: `boolean`):

Include the numeric engagement value published by the source.

## `outputIsVerified` (type: `boolean`):

Include whether the brand is verified.

## `outputFundedAt` (type: `boolean`):

Include the campaign funding timestamp.

## `outputCampaignUrl` (type: `boolean`):

Include the direct public Content Rewards URL.

## `outputWhopUrl` (type: `boolean`):

Include the related public Whop page URL when available.

## `outputThumbnailUrl` (type: `boolean`):

Include the campaign thumbnail image URL.

## `outputBrandAvatarUrl` (type: `boolean`):

Include the brand avatar image URL.

## `outputCompanyId` (type: `boolean`):

Include the public Whop company ID.

## `outputExperienceId` (type: `boolean`):

Include the public campaign experience ID.

## `outputWhopExperienceId` (type: `boolean`):

Include the related Whop experience ID.

## `outputWhopProductRoute` (type: `boolean`):

Include the related Whop product route.

## `outputTotalBudgetDisplay` (type: `boolean`):

Include the original total-budget string.

## `outputBudgetSpentDisplay` (type: `boolean`):

Include the original budget-spent string.

## `outputRewardDisplay` (type: `boolean`):

Include the original reward-per-1K string.

## `outputRequirements` (type: `boolean`):

Include enriched requirements. Only present when details are enabled.

## `outputPayouts` (type: `boolean`):

Include enriched per-platform payout rules. Only present when details are enabled.

## `outputResources` (type: `boolean`):

Include enriched public resource links. Only present when details are enabled.

## Actor input object example

```json
{
  "startUrls": [
    "https://contentrewards.com/discover/dd9f7918-e51d-4935-9f23-5935c783774a"
  ],
  "maxItems": 20,
  "includeDetails": false,
  "campaignTypes": [],
  "platforms": [],
  "categories": [],
  "status": "active",
  "sortBy": "budgetLeft",
  "outputDescription": true,
  "outputCampaignType": true,
  "outputCategory": true,
  "outputSourceStatus": true,
  "outputRewardPerThousandUsd": true,
  "outputTotalBudgetUsd": true,
  "outputBudgetSpentUsd": true,
  "outputBudgetLeftUsd": true,
  "outputProgressPercentage": true,
  "outputSocialPlatforms": true,
  "outputCreatorsCount": true,
  "outputViewCount": true,
  "outputViewCountDisplay": true,
  "outputSuccessRate": true,
  "outputEngagementUsd": true,
  "outputIsVerified": true,
  "outputFundedAt": true,
  "outputCampaignUrl": true,
  "outputWhopUrl": true,
  "outputThumbnailUrl": true,
  "outputBrandAvatarUrl": true,
  "outputCompanyId": true,
  "outputExperienceId": true,
  "outputWhopExperienceId": true,
  "outputWhopProductRoute": true,
  "outputTotalBudgetDisplay": true,
  "outputBudgetSpentDisplay": true,
  "outputRewardDisplay": true,
  "outputRequirements": true,
  "outputPayouts": true,
  "outputResources": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `details` (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 = {
    "startUrls": [
        "https://contentrewards.com/discover/dd9f7918-e51d-4935-9f23-5935c783774a"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("lurkapi/whop-clipping-content-rewards-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 = {
    "startUrls": ["https://contentrewards.com/discover/dd9f7918-e51d-4935-9f23-5935c783774a"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("lurkapi/whop-clipping-content-rewards-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://contentrewards.com/discover/dd9f7918-e51d-4935-9f23-5935c783774a"
  ],
  "maxItems": 20
}' |
apify call lurkapi/whop-clipping-content-rewards-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lurkapi/whop-clipping-content-rewards-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Whop Clipping Content Rewards Scraper",
        "description": "Find and compare public Whop Content Rewards clipping and UGC campaigns.",
        "version": "0.0",
        "x-build-id": "63qAOWN0QBvKgil1F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lurkapi~whop-clipping-content-rewards-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lurkapi-whop-clipping-content-rewards-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lurkapi~whop-clipping-content-rewards-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lurkapi-whop-clipping-content-rewards-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lurkapi~whop-clipping-content-rewards-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lurkapi-whop-clipping-content-rewards-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Exact campaign URLs",
                        "maxItems": 500,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Public Content Rewards campaign URLs, one per line. Format: https://contentrewards.com/discover/{campaign-id}. Leave empty to scan the full public directory instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Maximum campaigns",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "How many campaign snapshots to return. Default and product limit is 500 per run.",
                        "default": 500
                    },
                    "includeDetails": {
                        "title": "Include campaign details ($)",
                        "type": "boolean",
                        "description": "Adds public requirements, per-platform payout rules, and campaign resource links. Charged only for saved results where enrichment succeeded.",
                        "default": false
                    },
                    "searchText": {
                        "title": "Search text ($)",
                        "maxLength": 200,
                        "type": "string",
                        "description": "Keep campaigns whose title, brand, category, or description contains this text. Case-insensitive."
                    },
                    "campaignTypes": {
                        "title": "Campaign type ($)",
                        "maxItems": 3,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Keep campaigns of the selected types. Picking several still counts as one filter.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "clipping",
                                "ugc",
                                "both"
                            ],
                            "enumTitles": [
                                "Clipping",
                                "UGC",
                                "Both"
                            ]
                        },
                        "default": []
                    },
                    "platforms": {
                        "title": "Accepted platform ($)",
                        "maxItems": 5,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Keep campaigns that accept posts on the selected platforms.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "tiktok",
                                "instagram",
                                "youtube",
                                "x",
                                "facebook"
                            ],
                            "enumTitles": [
                                "TikTok",
                                "Instagram",
                                "YouTube",
                                "X",
                                "Facebook"
                            ]
                        },
                        "default": []
                    },
                    "categories": {
                        "title": "Category ($)",
                        "maxItems": 100,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Keep campaigns whose category matches any name in the list. Case-insensitive. One per line.",
                        "items": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 100
                        },
                        "default": []
                    },
                    "status": {
                        "title": "Campaign status",
                        "enum": [
                            "active",
                            "completed",
                            "all"
                        ],
                        "type": "string",
                        "description": "Active is free. Completed or paused and All each count as one filter.",
                        "default": "active"
                    },
                    "minRewardPerThousandUsd": {
                        "title": "Minimum reward per 1K views ($)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Keep campaigns paying at least this USD amount per 1,000 views."
                    },
                    "minBudgetLeftUsd": {
                        "title": "Minimum budget left ($)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Keep campaigns with at least this much unspent budget."
                    },
                    "maxProgressPercentage": {
                        "title": "Maximum budget spent % ($)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "number",
                        "description": "Keep campaigns at or below this budget-spent percentage."
                    },
                    "maxCreators": {
                        "title": "Maximum creators ($)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep campaigns with no more than this many participating creators. Requires loading each campaign page, so the run takes slightly longer."
                    },
                    "sortBy": {
                        "title": "Sort by",
                        "enum": [
                            "budgetLeft",
                            "reward",
                            "newest",
                            "progress",
                            "creators",
                            "successRate"
                        ],
                        "type": "string",
                        "description": "Budget left is free. Any other sort adds one sorting event per saved result. Fewest creators and Highest success rate need to load every matching campaign page, so those runs take longer.",
                        "default": "budgetLeft"
                    },
                    "outputDescription": {
                        "title": "Output: description",
                        "type": "boolean",
                        "description": "Include the public campaign description.",
                        "default": true
                    },
                    "outputCampaignType": {
                        "title": "Output: campaign type",
                        "type": "boolean",
                        "description": "Include clipping, UGC, or both.",
                        "default": true
                    },
                    "outputCategory": {
                        "title": "Output: category",
                        "type": "boolean",
                        "description": "Include the campaign category name.",
                        "default": true
                    },
                    "outputSourceStatus": {
                        "title": "Output: source status",
                        "type": "boolean",
                        "description": "Include the raw status value published by the source.",
                        "default": true
                    },
                    "outputRewardPerThousandUsd": {
                        "title": "Output: reward per 1K (USD)",
                        "type": "boolean",
                        "description": "Include the numeric USD reward per 1,000 views.",
                        "default": true
                    },
                    "outputTotalBudgetUsd": {
                        "title": "Output: total budget (USD)",
                        "type": "boolean",
                        "description": "Include the numeric total campaign budget.",
                        "default": true
                    },
                    "outputBudgetSpentUsd": {
                        "title": "Output: budget spent (USD)",
                        "type": "boolean",
                        "description": "Include the numeric amount already spent.",
                        "default": true
                    },
                    "outputBudgetLeftUsd": {
                        "title": "Output: budget left (USD)",
                        "type": "boolean",
                        "description": "Include the calculated unspent budget.",
                        "default": true
                    },
                    "outputProgressPercentage": {
                        "title": "Output: budget progress %",
                        "type": "boolean",
                        "description": "Include the percentage of budget spent.",
                        "default": true
                    },
                    "outputSocialPlatforms": {
                        "title": "Output: platforms",
                        "type": "boolean",
                        "description": "Include the list of accepted platforms.",
                        "default": true
                    },
                    "outputCreatorsCount": {
                        "title": "Output: creators count",
                        "type": "boolean",
                        "description": "Include the count of participating creators.",
                        "default": true
                    },
                    "outputViewCount": {
                        "title": "Output: view count",
                        "type": "boolean",
                        "description": "Include the normalized numeric view count.",
                        "default": true
                    },
                    "outputViewCountDisplay": {
                        "title": "Output: view count display",
                        "type": "boolean",
                        "description": "Include the original abbreviated view-count string (e.g. 103.5M).",
                        "default": true
                    },
                    "outputSuccessRate": {
                        "title": "Output: success rate",
                        "type": "boolean",
                        "description": "Include the reported submission success rate.",
                        "default": true
                    },
                    "outputEngagementUsd": {
                        "title": "Output: engagement value",
                        "type": "boolean",
                        "description": "Include the numeric engagement value published by the source.",
                        "default": true
                    },
                    "outputIsVerified": {
                        "title": "Output: verified flag",
                        "type": "boolean",
                        "description": "Include whether the brand is verified.",
                        "default": true
                    },
                    "outputFundedAt": {
                        "title": "Output: funded date",
                        "type": "boolean",
                        "description": "Include the campaign funding timestamp.",
                        "default": true
                    },
                    "outputCampaignUrl": {
                        "title": "Output: campaign URL",
                        "type": "boolean",
                        "description": "Include the direct public Content Rewards URL.",
                        "default": true
                    },
                    "outputWhopUrl": {
                        "title": "Output: Whop URL",
                        "type": "boolean",
                        "description": "Include the related public Whop page URL when available.",
                        "default": true
                    },
                    "outputThumbnailUrl": {
                        "title": "Output: thumbnail URL",
                        "type": "boolean",
                        "description": "Include the campaign thumbnail image URL.",
                        "default": true
                    },
                    "outputBrandAvatarUrl": {
                        "title": "Output: brand avatar URL",
                        "type": "boolean",
                        "description": "Include the brand avatar image URL.",
                        "default": true
                    },
                    "outputCompanyId": {
                        "title": "Output: company ID",
                        "type": "boolean",
                        "description": "Include the public Whop company ID.",
                        "default": true
                    },
                    "outputExperienceId": {
                        "title": "Output: experience ID",
                        "type": "boolean",
                        "description": "Include the public campaign experience ID.",
                        "default": true
                    },
                    "outputWhopExperienceId": {
                        "title": "Output: Whop experience ID",
                        "type": "boolean",
                        "description": "Include the related Whop experience ID.",
                        "default": true
                    },
                    "outputWhopProductRoute": {
                        "title": "Output: Whop product route",
                        "type": "boolean",
                        "description": "Include the related Whop product route.",
                        "default": true
                    },
                    "outputTotalBudgetDisplay": {
                        "title": "Output: total budget display",
                        "type": "boolean",
                        "description": "Include the original total-budget string.",
                        "default": true
                    },
                    "outputBudgetSpentDisplay": {
                        "title": "Output: budget spent display",
                        "type": "boolean",
                        "description": "Include the original budget-spent string.",
                        "default": true
                    },
                    "outputRewardDisplay": {
                        "title": "Output: reward display",
                        "type": "boolean",
                        "description": "Include the original reward-per-1K string.",
                        "default": true
                    },
                    "outputRequirements": {
                        "title": "Output: requirements",
                        "type": "boolean",
                        "description": "Include enriched requirements. Only present when details are enabled.",
                        "default": true
                    },
                    "outputPayouts": {
                        "title": "Output: payout rules",
                        "type": "boolean",
                        "description": "Include enriched per-platform payout rules. Only present when details are enabled.",
                        "default": true
                    },
                    "outputResources": {
                        "title": "Output: resources",
                        "type": "boolean",
                        "description": "Include enriched public resource links. Only present when details are enabled.",
                        "default": true
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
