Whop Content Rewards Scraper avatar

Whop Content Rewards Scraper

Pricing

from $1.10 / 1,000 campaigns

Go to Apify Store
Whop Content Rewards Scraper

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

ParseBird

Maintained by Community

Actor 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 mathbudgetLeftUsd (the "is it still worth posting" number), dailyBurnUsd (live, from the daily-views chart), estimatedDaysLeft of runway, budgetPace bucket
  • 🏆 Competition signalscreators, payoutPerCreatorUsd (proof someone is getting paid), viewsPerCreator, estimatedViewsRemaining
  • 📊 One scoreopportunityScore, 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
  • ↕️ SortsbudgetLeft, 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

ParameterTypeRequiredDefaultDescription
statusstringNoactiveactive or all (includes ended/paused campaigns the directory still lists).
minRewardPerThousandnumberNoMinimum USD paid per 1,000 views.
minBudgetLeftUsdnumberNoMinimum unspent budget.
maxProgressPercentagenumberNoMaximum share of budget already consumed.
maxCreatorsnumberNoCap the competition (e.g. 300 = campaigns clippers have not piled into).
minPayoutPerCreatorUsdnumberNoProof of payout — average USD earned per creator so far.
minEstimatedDaysLeftnumberNoSkip campaigns that will drain within this many days at the current burn rate.
minOpportunityScorenumberNoOne number instead of five filters.
platformsarrayNotiktok, instagram, youtube, x, facebook — keep campaigns accepting at least one.
payoutTypesarrayNocpm, retainer, hybrid, placement, bounty. Most campaigns are cpm.
categoriesarrayNoFree-text; keep campaigns tagged with at least one (most are untagged).
searchTextstringNoCase-insensitive match on title, brand, description.
sortBystringNobudgetLeftOrder of returned campaigns (best first).
includeMetricsbooleanNotrueFetch each campaign's detail endpoint for real budget/creator/views numbers, per-platform payouts, top earners and a live burn rate.
maxItemsintegerNoMaximum 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

FieldNotes
id, title, brand, payoutType, categoriespayoutType is usually cpm
opportunityScore0–100 composite, or null when reward rate or budget is missing
rewardPerThousandViewsheadline USD per 1,000 views; rewardPerThousand{Min,Max}Usd give the per-platform range
totalBudgetUsd, budgetSpentUsd, budgetLeftUsd, paidOutUsd
dailyBurnUsdUSD/day from the campaign's trailing 7-day daily-views chart (falls back to spent-since-listing when the chart is unavailable)
estimatedDaysLeftrunway at the current burn rate; null means nothing is being paid out
budgetPacedraining (<3d) / healthy (3–60d) / slow (60–180d) / stalled
payoutPerCreatorUsdaverage USD an entered creator has earned so far
viewsPerCreator, estimatedViewsRemainingcompetition / feasibility signals
progressPercentage, ageDays% of budget consumed; days since the campaign was listed
creators, approvedSubmissions, totalViewscampaign metrics from the detail endpoint
payoutsper-platform rate + min/max payout
topEarnersup to 3 top creators with earnings and views
platforms, requiresApplication, isVerified
statusactive
listedAtISO timestamp — spot fresh campaigns
campaignUrllink to the campaign on contentrewards.com
descriptionrules text as shown on the directory
detailFetchedfalse 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 competition100 / (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

  1. 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.
  2. 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.
  3. Burn rate, runway, payout-per-creator and the opportunity score are computed from the published metrics.
  4. Your filters are applied, the list is sorted, and maxItems trims it — you are charged only for what is returned.

How much does it cost?

EventFreeBronzeSilverGold
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.

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.

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.