Whop Content Rewards Scraper
Pricing
from $1.05 / 1,000 campaigns
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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
| Field | Default | What it does |
|---|---|---|
| Search text | empty | Name, brand, or description |
| Campaign URLs | empty | Fetch these campaigns only |
| Campaign types | all | clipping, ugc, sound, logo, slideshows, reposting, youtube-long-form |
| Categories | all | Category id, such as gaming or music |
| Platforms | all | tiktok, instagram, youtube, x, facebook |
| Payout models | both | cpm or perPost |
| Min reward per 1,000 views | none | USD |
| Min budget left | none | USD still unspent |
| Max budget spent | none | Percent already spent |
| Max creators | none | Competition cap |
| Min payout per creator | none | Spend divided by creators |
| Min days of budget left | none | From spend since listing |
| Min opportunity score | none | 0–100 |
| Listed after / max age | none | Drop older campaigns |
| Only new campaigns | off | Later runs keep campaigns that were not on the baseline |
| Track trends | off | Budget, creator, and view change versus the previous run |
| Include posting rules | on | Guidelines and requirement flags. Still one charge per saved campaign |
| Max campaigns | 100 | You are charged only for saved rows |
| Proxy | off | Leave 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.
| Field | Meaning |
|---|---|
name, brand, campaignUrl | Title, organization, public page |
rewardPerThousandUsd | Headline USD per 1,000 views |
effectiveRewardPerThousandUsd | Paid out ÷ views × 1,000 |
platformPayouts | Rate plus min and max payout on each platform |
budgetLeftUsd, progressPercentage, dailyBurnUsd, estimatedDaysLeft | What is left and how fast it is moving |
payoutPerCreatorUsd, creatorCount, paidOutUsd | Whether creators have actually been paid |
viewsByDay, viewsLast7Days, topClips, topEarners | View history and who is earning |
guidelines, faceOnCamera, linkInBio, preApproval | Posting rules |
opportunityScore | 0–100 |
isNew, trendSignal | Set 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 ApifyClientclient = 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().itemsprint(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.