Whop Content Rewards Scraper avatar

Whop Content Rewards Scraper

Pricing

from $1.05 / 1,000 campaigns

Go to Apify Store
Whop Content Rewards Scraper

Whop Content Rewards Scraper

Scrape public Whop Content Rewards clipping and UGC campaigns. Export CPM, budget left, platforms, 30-day views, top clips, and posting rules as JSON.

Pricing

from $1.05 / 1,000 campaigns

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Whop Inc. or its affiliates. Data is read from the public Content Rewards campaign directory only. No login. You are responsible for complying with applicable law (including GDPR where a public creator username appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Scrape public Whop Content Rewards campaigns — clipping, UGC, sound, logo, and slideshow briefs — into one dataset. Each row has the rate per 1,000 views, budget left, daily burn, platforms, a 30-day view series, top clips, top earners, and the posting rules (face on camera, link in bio, pre-approval).

Clippers use it to skip campaigns that look funded but do not pay. Brands use it to benchmark CPM and budget. It is an HTTP Content Rewards API alternative: Python, Node.js, cURL, or an MCP client. Export JSON or CSV from the dataset.

When to use

Use this Actor when you need the live public directory: rates, remaining budget, who already got paid, and the rules before you join.

Skip it for private campaigns, member emails, or anything behind a Whop login. Those are not on the public directory.

Key features

  • Search, category, platform, payout model (CPM or per post), and campaign type, including slideshows, logo, sound, reposting, and YouTube long-form
  • Budget left, spend, paid-out total, daily burn, estimated days left, and payout per creator
  • Opportunity score from rate, budget headroom, creator count, and runway
  • 30-day view series, views in the last 7 and 30 days, and effective rate (what 1,000 views actually paid)
  • Top clips (platform, views, post link) and top earners (username and amount paid)
  • Posting rules on each saved row: guidelines, face on camera, link in bio, pre-approval, no reposts
  • Per-platform min and max payout, not only the headline rate
  • Monitor mode for campaigns that were not on the directory last time, plus a trend signal between runs
  • Sort by featured, newest, budget, trending, paid out, CPM, budget left, opportunity, or fewest creators

Input

FieldDefaultWhat it does
Search textemptyName, brand, or description
Campaign URLsemptyFetch these campaigns only
Campaign typesallclipping, ugc, sound, logo, slideshows, reposting, youtube-long-form
CategoriesallCategory id, such as gaming or music
Platformsalltiktok, instagram, youtube, x, facebook
Payout modelsbothcpm or perPost
Min reward per 1,000 viewsnoneUSD
Min budget leftnoneUSD still unspent
Max budget spentnonePercent already spent
Max creatorsnoneCompetition cap
Min payout per creatornoneSpend divided by creators
Min days of budget leftnoneFrom spend since listing
Min opportunity scorenone0–100
Listed after / max agenoneDrop older campaigns
Only new campaignsoffLater runs keep campaigns that were not on the baseline
Track trendsoffBudget, creator, and view change versus the previous run
Include posting rulesonGuidelines and requirement flags. Still one charge per saved campaign
Max campaigns100You are charged only for saved rows
ProxyoffLeave off unless a run returns zero campaigns
{
"campaignTypes": ["clipping"],
"platforms": ["tiktok", "instagram"],
"minRewardPerThousand": 1,
"minBudgetLeftUsd": 500,
"sortBy": "budgetLeft",
"maxItems": 50,
"includeDetails": true
}

One campaign by URL:

{
"startUrls": [
{ "url": "https://contentrewards.com/discover/bdebe4a4-be6c-4110-81a5-b598a3e1badc" }
],
"maxItems": 1
}

Output

One campaign per dataset row. Nested clips and earners are part of that row, not extra charges.

FieldMeaning
name, brand, campaignUrlTitle, organization, public page
rewardPerThousandUsdHeadline USD per 1,000 views
effectiveRewardPerThousandUsdPaid out ÷ views × 1,000
platformPayoutsRate plus min and max payout on each platform
budgetLeftUsd, progressPercentage, dailyBurnUsd, estimatedDaysLeftWhat is left and how fast it is moving
payoutPerCreatorUsd, creatorCount, paidOutUsdWhether creators have actually been paid
viewsByDay, viewsLast7Days, topClips, topEarnersView history and who is earning
guidelines, faceOnCamera, linkInBio, preApprovalPosting rules
opportunityScore0–100
isNew, trendSignalSet when monitor or trends are on
{
"name": "Example clipping campaign",
"brand": "Example brand",
"rewardPerThousandUsd": 1.5,
"budgetLeftUsd": 4200,
"progressPercentage": 16,
"platforms": ["tiktok", "instagram"],
"opportunityScore": 72,
"requiresApplication": false,
"faceOnCamera": false,
"preApproval": false,
"viewsLast7Days": 180000,
"campaignUrl": "https://contentrewards.com/discover/00000000-0000-4000-8000-000000000001"
}

Use cases

  • Pick clipping campaigns that still have budget and a rate worth the edit
  • Drop briefs that require an application, a face on camera, or a link in bio
  • Watch for new listings on a schedule and send the dataset to Sheets or a webhook
  • Compare CPM across gaming, music, and personal-brand categories
  • Check top clips and top earners before joining a board that has not paid anyone

Integration examples

Replace YOUR_TOKEN and the Actor id after you open the Actor in Apify Console. These calls start a run and do not set a price.

Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_TOKEN" });
const run = await client.actor("crawloop/whop-content-rewards-scraper").call({
campaignTypes: ["clipping"],
minBudgetLeftUsd: 500,
sortBy: "newest",
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/whop-content-rewards-scraper").call(run_input={
"campaignTypes": ["clipping"],
"minBudgetLeftUsd": 500,
"sortBy": "newest",
"maxItems": 50,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl -X POST "https://api.apify.com/v2/acts/crawloop~whop-content-rewards-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"campaignTypes":["clipping"],"minBudgetLeftUsd":500,"sortBy":"newest","maxItems":50}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name.

Example prompts:

  • "Run Whop Content Rewards Scraper for clipping campaigns with at least $500 budget left and return the top 20 by opportunity score as JSON"
  • "Find Content Rewards campaigns that pay on TikTok, do not require a face on camera, and still have budget"
  • "List new Whop clipping campaigns since yesterday and include the rate, budget left, and guidelines"

FAQ

Does this need a Whop login or API key?
No. It reads the public campaign directory.

What is one charged result?
One saved campaign. Top clips, earners, and the daily view series sit on that same row.

Why did a monitor run save campaigns I have already seen?
The first run is the baseline. It saves up to Max campaigns and marks the rest of the directory as seen, so the next run only returns campaigns that were not on the board. Turn on Reset monitor memory to start over.

Can I get ended campaigns?
The public directory lists campaigns that are still shown. Campaigns removed from that directory are not returned.