Whop Content Rewards Scraper
Pricing
from $1.10 / 1,000 campaigns
Whop Content Rewards Scraper
Scrape the Whop Content Rewards directory: reward per 1K views, budget left, burn rate, days of runway, creators, payout per creator and a 0-100 opportunity score. Filter and sort. JSON, CSV, Excel.
Pricing
from $1.10 / 1,000 campaigns
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
3
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
Whop Content Rewards Scraper
Scrape the Whop Content Rewards directory (contentrewards.com) into structured, ranked data — reward per 1,000 views, budget left, daily burn rate, days of runway, creator count, payout per creator, and a documented 0–100 opportunity score.
| Pull the featured Content Rewards board in one run, then filter by reward rate, remaining budget, competition, proof of payout and runway — or sort every campaign by a single opportunity score. Export JSON, CSV, Excel. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Apify Actor: parsebird/whop-content-rewards-scraper — scrapes the Whop Content Rewards directory (contentrewards.com/discover; follows the "load more" to the full ~500-campaign board, each enriched from its detail endpoint) and derives burn-rate / competition metrics + a 0-100 opportunity score, then filters and sorts. Call: ApifyClient("TOKEN").actor("parsebird/whop-content-rewards-scraper").call(run_input={"status":"active","minRewardPerThousand":2,"minPayoutPerCreatorUsd":5,"maxCreators":300,"minEstimatedDaysLeft":3,"sortBy":"opportunity","maxItems":25}). Inputs: status ("active"|"all"), minRewardPerThousand, minBudgetLeftUsd, maxProgressPercentage, maxCreators, minPayoutPerCreatorUsd, minEstimatedDaysLeft, minOpportunityScore, platforms[] (tiktok|instagram|youtube|x|facebook), payoutTypes[] (cpm|retainer|hybrid|placement|bounty), categories[], searchText, sortBy (budgetLeft|opportunity|reward|payoutPerCreator|burn|daysLeft|fewestCreators|newest|progress), maxItems (you are only charged for returned results). Output per campaign: title, brand, opportunityScore, rewardPerThousandViews, totalBudgetUsd, budgetSpentUsd, budgetLeftUsd, dailyBurnUsd, estimatedDaysLeft, budgetPace (draining|healthy|slow|stalled), payoutPerCreatorUsd, viewsPerCreator, estimatedViewsRemaining, progressPercentage, ageDays, status, payoutType, categories[], platforms[], creators, approvedSubmissions, totalViews, payouts[], topEarners[], listedAt, campaignUrl, description, detailFetched. Any field the site does not publish comes back null, never a fabricated zero. API docs: https://docs.apify.com/api/v2 Token: https://console.apify.com/settings/integrations
What does Whop Content Rewards Scraper do?
The Whop Content Rewards Scraper reads the public campaign directory that powers Whop Content Rewards — the same information an unauthenticated visitor sees, then does the maths the directory does not:
- 💰 Budget math —
budgetLeftUsd(the "is it still worth posting" number),dailyBurnUsd(live, from the daily-views chart),estimatedDaysLeftof runway,budgetPacebucket - 🏆 Competition signals —
creators,payoutPerCreatorUsd(proof someone is getting paid),viewsPerCreator,estimatedViewsRemaining - 📊 One score —
opportunityScore, a transparent 0–100 composite (see below) so you can rank the board instead of eyeballing it - 🎯 Filters — reward rate, budget left, progress, creator cap, payout proof, runway, score, platform, payout type, category, free-text search
- ↕️ Sorts —
budgetLeft,opportunity,reward,payoutPerCreator,burn,daysLeft,fewestCreators,newest,progress
Any field the site does not publish for a campaign comes back null — never a fabricated zero.
Run it on a schedule, pull results through the Apify API, and connect it to Make, Zapier, Google Sheets or Slack. Export to JSON, CSV, Excel or HTML.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
status | string | No | active | active or all (includes ended/paused campaigns the directory still lists). |
minRewardPerThousand | number | No | — | Minimum USD paid per 1,000 views. |
minBudgetLeftUsd | number | No | — | Minimum unspent budget. |
maxProgressPercentage | number | No | — | Maximum share of budget already consumed. |
maxCreators | number | No | — | Cap the competition (e.g. 300 = campaigns clippers have not piled into). |
minPayoutPerCreatorUsd | number | No | — | Proof of payout — average USD earned per creator so far. |
minEstimatedDaysLeft | number | No | — | Skip campaigns that will drain within this many days at the current burn rate. |
minOpportunityScore | number | No | — | One number instead of five filters. |
platforms | array | No | — | tiktok, instagram, youtube, x, facebook — keep campaigns accepting at least one. |
payoutTypes | array | No | — | cpm, retainer, hybrid, placement, bounty. Most campaigns are cpm. |
categories | array | No | — | Free-text; keep campaigns tagged with at least one (most are untagged). |
searchText | string | No | — | Case-insensitive match on title, brand, description. |
sortBy | string | No | budgetLeft | Order of returned campaigns (best first). |
includeMetrics | boolean | No | true | Fetch each campaign's detail endpoint for real budget/creator/views numbers, per-platform payouts, top earners and a live burn rate. |
maxItems | integer | No | — | Maximum campaigns to return. You are only charged for returned results. The directory currently exposes the full active board (~500+ campaigns). |
Example — the low-competition, proven-payer query
{"status": "active","minRewardPerThousand": 2,"minPayoutPerCreatorUsd": 5,"maxCreators": 300,"minEstimatedDaysLeft": 3,"sortBy": "opportunity","maxItems": 25}
Output example
{"id": "1db63081-715e-4e04-9b11-fbc1d4e8e700","title": "Backyard Breaks [Clipping Campaign]","brand": "ClipHouse","opportunityScore": 57.6,"rewardPerThousandViews": 2.0,"rewardPerThousandMinUsd": 0.5,"rewardPerThousandMaxUsd": 2.0,"totalBudgetUsd": 130000,"budgetSpentUsd": 107043.63,"budgetLeftUsd": 8728.95,"paidOutUsd": 96403.24,"dailyBurnUsd": 229.9,"estimatedDaysLeft": 38.0,"budgetPace": "healthy","payoutPerCreatorUsd": 773.97,"viewsPerCreator": 145862,"estimatedViewsRemaining": 4364475,"progressPercentage": 82.34,"ageDays": 118.7,"status": "active","payoutType": "cpm","categories": null,"platforms": ["instagram", "tiktok", "youtube"],"creators": 26,"approvedSubmissions": 5337,"totalViews": 3792419,"requiresApplication": false,"isVerified": true,"listedAt": "2026-05-06T18:26:10.000Z","campaignUrl": "https://contentrewards.com/discover/1db63081-715e-4e04-9b11-fbc1d4e8e700","description": "full rules text — hook / format / whitelist requirements","payouts": [{ "platform": "instagram", "payoutType": "cpm", "ratePer1000Usd": 2.0, "minPayoutUsd": 4.5, "maxPayoutUsd": 2500 }],"topEarners": [{ "rank": 1, "username": "clipper01", "earnedUsd": 4244.95, "totalViews": 5784198 }],"detailFetched": true}
Data fields
| Field | Notes |
|---|---|
id, title, brand, payoutType, categories | payoutType is usually cpm |
opportunityScore | 0–100 composite, or null when reward rate or budget is missing |
rewardPerThousandViews | headline USD per 1,000 views; rewardPerThousand{Min,Max}Usd give the per-platform range |
totalBudgetUsd, budgetSpentUsd, budgetLeftUsd, paidOutUsd | |
dailyBurnUsd | USD/day from the campaign's trailing 7-day daily-views chart (falls back to spent-since-listing when the chart is unavailable) |
estimatedDaysLeft | runway at the current burn rate; null means nothing is being paid out |
budgetPace | draining (<3d) / healthy (3–60d) / slow (60–180d) / stalled |
payoutPerCreatorUsd | average USD an entered creator has earned so far |
viewsPerCreator, estimatedViewsRemaining | competition / feasibility signals |
progressPercentage, ageDays | % of budget consumed; days since the campaign was listed |
creators, approvedSubmissions, totalViews | campaign metrics from the detail endpoint |
payouts | per-platform rate + min/max payout |
topEarners | up to 3 top creators with earnings and views |
platforms, requiresApplication, isVerified | |
status | active |
listedAt | ISO timestamp — spot fresh campaigns |
campaignUrl | link to the campaign on contentrewards.com |
description | rules text as shown on the directory |
detailFetched | false if the per-campaign detail endpoint could not be reached (numbers then come from the directory only) |
How the opportunity score works
Deliberately simple, documented, and reproducible so you can argue with it:
- 35% reward rate — $/1K views, saturating at $5/1K
- 25% budget headroom — budget left, saturating at $25,000
- 25% low competition —
100 / (100 + creators), so 100 creators = half marks. Capped at half marks while a campaign has never paid anyone: an empty board that has paid $0 is untested, not uncontested, and the data cannot tell those apart - 15% payout velocity — full marks for 3–60 days of runway; penalised both when a campaign drains within a day and when it is effectively stalled (a big budget nobody is being paid from is not an opportunity)
Campaigns with no reward rate or no budget data score null rather than a misleading number. Unproven campaigns are not hidden — a fresh board with a good rate and real budget is a genuine opportunity and still ranks; it just does not outrank a campaign that is provably paying out.
How it works
- Loads the public Content Rewards directory and follows its "load more" (a Next.js server action) to the end of the board — the full active campaign list (~500), no login. Each campaign is then enriched from its own detail endpoint.
- Campaigns are de-duplicated by ID; if the "load more" mechanism can't be reached the run falls back to the first page instead of failing.
- Burn rate, runway, payout-per-creator and the opportunity score are computed from the published metrics.
- Your filters are applied, the list is sorted, and
maxItemstrims it — you are charged only for what is returned.
How much does it cost?
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
campaign | $0.0014 | $0.0013 | $0.0012 | $0.0011 |
One event per campaign returned. A full board pull (~500 campaigns) costs about $0.70 on the Free plan; a filtered query of 25 costs a few cents.
Related actors
FAQ
Where does the data come from? The public Whop Content Rewards directory at contentrewards.com — the same campaign cards an unauthenticated visitor sees. No login, no private API.
How many campaigns are there? The directory currently exposes the full active board (~500+ campaigns). One run collects all of them before filtering.
Why is estimatedDaysLeft sometimes huge or null?
It is uncapped on purpose. A huge number means a large budget is barely being paid out (stalled); null means the burn rate is zero. Both show up as budgetPace: "stalled".
Why did a campaign score high with almost no budget left?
The score rewards a high reward rate, low competition and proven payouts even when headroom is near zero. Add minBudgetLeftUsd if you want to exclude nearly-drained campaigns.
Can I get ended campaigns?
Set status to all. The directory only lists a small number of ended/paused campaigns, so most results will still be active.
Can I schedule it?
Yes. Use Apify Schedules to re-run daily and track new campaigns via listedAt or sortBy: "newest".
Something looks wrong. Open an issue on the Issues tab with your input and the run URL.
Legal and compliance
This actor collects publicly available campaign listing data from the Whop Content Rewards directory. It does not log in, access private accounts, or bypass paywalls. You are responsible for using the exported data in compliance with Whop's terms and applicable laws. Use it for lawful purposes such as market research and campaign selection. See Apify's guide on the legality of web scraping.