# Whop Marketplace Scraper (`maximedupre/whop-scraper`) Actor

Find public Whop products by keyword, URL, category, or leaderboard. Get available prices, company and creator details, ratings, reviews, and GMV, or collect daily keyword GMV reports for market research.

- **URL**: https://apify.com/maximedupre/whop-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** E-commerce, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.10 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🛍️ Find Whop products for market research

For market researchers and teams building lead lists, this Whop marketplace scraper collects public product details in a dataset. Compare available prices, companies, creators, ratings, reviews, and gross merchandise value (GMV) without copying each listing by hand.

- Find offers for a niche with **[Whop product search](https://apify.com/maximedupre/whop-scraper/examples/whop-product-search)**.
- Review ranked offers with the **[Whop leaderboard](https://apify.com/maximedupre/whop-scraper/examples/whop-leaderboard)**.
- Find recent listings with **[Whop new products](https://apify.com/maximedupre/whop-scraper/examples/whop-new-products)**.
- Compare public ratings with **[Whop top rated products](https://apify.com/maximedupre/whop-scraper/examples/whop-top-rated-products)**.
- Study daily sales value by term with **[Whop keyword GMV](https://apify.com/maximedupre/whop-scraper/examples/whop-keyword-gmv)**.

#### 📊 Product details and daily keyword GMV

Choose product rows or keyword GMV reports. Product rows include available listing, company, creator, plan, media, and review data. Keyword reports contain available daily observations for the past 90 days. Missing public values may be absent. An unknown GMV is not changed to zero.

#### ▶️ Run a Whop product search

Open the input form, choose a result type, and add keywords, public Whop URLs, or categories. Start the run, then open the dataset to review or export the rows. Set `maxItems` to cap the total output. The same product is saved once per run, even when several inputs find it.

#### ⚙️ Input

`resultType` is required. The form prefills `products`, the keyword `trading`, and a limit of `4`; these are UI prefills, not schema defaults. Omitted lists are empty. Omitted filters do not restrict results. Product mode combines keyword, product URL, company URL, and leaderboard inputs. Categories drive discovery only when those inputs are empty and the leaderboard is off; otherwise they filter products.

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | `products` or `keywordGmv`. Reports use only `keywords` and `maxItems`; product options are ignored. |
| `productUrls` | array | Public HTTPS Whop product URLs, as strings or objects with `url`. Omitted: empty. |
| `companyUrls` | array | Public HTTPS Whop company or community URLs, as strings or objects with `url`. Omitted: empty. |
| `categories` | array of strings | Exact current Whop category names or slugs. Empty allows any category. An unknown category stops product collection. |
| `leaderboard` | boolean | Include marketplace leaderboard products. Default: `false`. Product filters still apply. |
| `sortBy` | string | `relevance` (default), `newest`, `rating`, or `gmv`. See the order rules below. |
| `verification` | string | `all` (default), `verified`, or `unverified`. |
| `pricing` | string | `all` (default), `free`, or `paid`. Match products offering that kind of plan. |
| `planTypes` | array of strings | Match any of `subscription`, `oneTime`, or `splitPayment`. Empty allows all. |
| `minPrice` | number | Nonnegative minimum plan price in USD. Omitted: no lower bound. |
| `maxPrice` | number | Nonnegative maximum plan price in USD. The same plan must meet both price bounds. Omitted: no upper bound. |
| `minRating` | number | Minimum public product rating, from 0 to 5. |
| `minReviews` | integer | Nonnegative minimum published product review count. |
| `minActiveUsers` | integer | Nonnegative minimum public product active-user count. |
| `minGmv` | number | Nonnegative minimum product GMV for the last 24 hours, in USD. Missing GMV does not match. |
| `maxGmv` | number | Nonnegative maximum product GMV for the last 24 hours, in USD. Missing GMV does not match. |
| `createdAfter` | string | Include products created on or after this UTC date, in `YYYY-MM-DD` format. |
| `createdBefore` | string | Include products created on or before this UTC date, in `YYYY-MM-DD` format. |
| `keywords` | array of strings | Product search terms or keyword report terms. At least one is needed for reports. Omitted: empty. |
| `maxItems` | integer | Nonnegative total row limit. Zero or omission collects all available rows until none remain. One report counts as one row. |

**Order and filter rules**

Company URLs require `relevance`. Keyword searches allow `relevance` or `newest`. `newest` requires the leaderboard to be off. `rating` requires keywords and company URLs to be empty. `gmv` requires categories, empty keyword and URL lists, and the leaderboard off. It combines the selected categories using reported 24-hour product GMV in USD.

Minimums must not exceed their maximums, and the start date must not follow the end date. Price filters use a renewal plan's renewal amount and other plans' initial amount, in USD. Returned plan amounts retain their own currency. Public URL inputs must use `https://whop.com`, with no query, fragment, or login details. Company URLs have one path part; product URLs have two, or three with `products` in the middle.

**Default-run input**

This public input comes from a successful current-beta run:

```json
{
  "resultType": "products",
  "leaderboard": false,
  "keywords": [
    "trading"
  ],
  "maxItems": 4
}
```

#### 🧾 Output

The `results` output link opens the default dataset. Each row has one of the two shapes below. Only `resultType`, `name`, and `url` are required for products. Other product fields depend on public data.

**Product row**

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | Always `product`. |
| `productId` | string | Whop product ID. |
| `name` | string | Product name. |
| `url` | string | Public Whop product page. |
| `description` | string | Public listing description. |
| `company` | object | Linked company or community. |
| `company.id` | string | Whop company ID. |
| `company.name` | string | Company name. |
| `company.businessClassification` | string | Public business class. |
| `company.industry` | string | Public industry. |
| `company.memberCount` | integer | Company member count. |
| `company.onlineMemberCount` | integer | Members reported online. |
| `company.rating` | number | Company rating out of five. |
| `company.reviewCount` | integer | Company review count. |
| `company.createdAt` | string | Company creation date. |
| `company.logoUrl` | string | Company logo link. |
| `company.relatedProductNames` | array of strings | Linked product and bundle names. |
| `company.reviews` | array of objects | Available public company reviews. |
| `company.reviews[].text` | string | Review text. |
| `company.reviews[].rating` | number | Review rating out of five. |
| `company.reviews[].author` | object | Public review author. |
| `company.reviews[].author.name` | string | Author name. |
| `company.reviews[].author.username` | string | Whop username. |
| `company.reviews[].author.profileUrl` | string | Whop profile link. |
| `company.reviews[].publishedAt` | string | Review publication date. |
| `creator` | object | Public creator details. |
| `creator.name` | string | Creator name. |
| `creator.username` | string | Whop username. |
| `creator.biography` | string | Public biography. |
| `creator.url` | string | Whop profile link. |
| `creator.imageUrl` | string | Profile image link. |
| `creator.createdAt` | string | Profile creation date. |
| `plans` | array of objects | Available public plans. |
| `plans[].type` | string | `subscription`, `oneTime`, or `splitPayment`. |
| `plans[].currency` | string | Currency code for plan amounts. |
| `plans[].initialPrice` | number | Initial amount in the plan currency. |
| `plans[].renewalPrice` | number | Renewal amount in the plan currency. |
| `plans[].billingPeriod` | string | Billing period label or length. |
| `plans[].trial` | object | Available trial terms. |
| `plans[].trial.duration` | number | Trial length. |
| `plans[].trial.durationUnit` | string | Trial time unit. |
| `plans[].trial.price` | number | Trial amount in the plan currency. |
| `plans[].releaseTerms` | string | Public release terms. |
| `categories` | array of strings | Product categories. |
| `isVerified` | boolean | Whop verification state. |
| `rating` | number | Product rating out of five. |
| `reviewCount` | integer | Product review count. |
| `activeUserCount` | integer | Public product active users, distinct from company members. |
| `marketplaceRank` | integer | Reported marketplace position. |
| `gmvUsd` | number | Product GMV for the last 24 hours in USD. Unknown values are omitted. |
| `createdAt` | string | Product creation date. |
| `approvedAt` | string | Product approval date. |
| `media` | object | Public product media links. |
| `media.imageUrl` | string | Listing image. |
| `media.bannerUrl` | string | Banner image. |
| `media.galleryImageUrls` | array of strings | Gallery images. |
| `media.promotionalVideoUrl` | string | Promotional video link. |

This genuine product row comes from a successful current-beta run.

```json
{
  "resultType": "product",
  "productId": "prod_yV4aw8qkWGk1R",
  "name": "Orderflow Trading Bot",
  "url": "https://whop.com/trading-0ee1/orderflow-trading-bot/",
  "description": "What you get:\n- The full bot files (Python, runs on Windows) and a step-by-step setup guide (PDF)\n- It trades gold (XAUUSD) on your MT5 account using live CME gold futures order-flow data: order-book depth, aggressive buying and selling, and order-flow imbalance\n- Twelve rules across the Asian, London and New York sessions, a stop on every trade, and a shadow mode to watch it before it trades real money\n- Risk per trade is set in one file (default 6% of the balance, which is aggressive; you can lower it)\n\nYou need: a Windows PC or VPS, Python 3.13, an MT5 account (gold contract of 100 oz per lot), and a Rithmic market-data login for CME gold futures with market depth.\n\n2026 backtest (Jan 1 - Oct 9, 2026): +516R, worst drawdown 15R (R = the amount risked on one trade). These results are hypothetical. The rules were tuned on this same period, and the base strategy lost money in every year when tested on 2021-2025. Past results do not guarantee future results. Trading carries a high risk of loss; only risk money you can afford to lose. Not financial advice.",
  "categories": [],
  "isVerified": false,
  "rating": 0,
  "reviewCount": 0,
  "activeUserCount": 6,
  "gmvUsd": 0,
  "createdAt": "2026-10-22T13:04:28.000Z",
  "approvedAt": "2026-10-22T13:55:37.000Z",
  "company": {
    "id": "biz_09zQ9kvY4XLQNn",
    "name": "trading",
    "businessClassification": "software",
    "industry": "trading_bot",
    "memberCount": 7,
    "onlineMemberCount": 0,
    "reviewCount": 0,
    "createdAt": "2026-10-22T12:12:39.000Z",
    "logoUrl": "https://assets-2-prod.whop.com/public/uploads/2026-10-22/f1de9fa3-ec7f-4966-ab24-269a975e84ca/image.png",
    "relatedProductNames": [
      "Orderflow Trading Bot"
    ],
    "reviews": []
  },
  "creator": {
    "name": "razeetradee",
    "username": "razeeetrade",
    "url": "https://whop.com/@razeeetrade/",
    "imageUrl": "https://ui-avatars.com/api/?name=razeetradee&background=535961&color=fff&format=png",
    "createdAt": "2026-10-22T12:06:34.000Z"
  },
  "plans": [
    {
      "type": "subscription",
      "currency": "usd",
      "initialPrice": 29,
      "renewalPrice": 29,
      "billingPeriod": "Monthly",
      "releaseTerms": "buy_now"
    },
    {
      "type": "oneTime",
      "currency": "usd",
      "initialPrice": 100,
      "renewalPrice": 0,
      "releaseTerms": "buy_now"
    }
  ],
  "media": {
    "imageUrl": "https://whop.com/core/images/whop/i/trading-0ee1/prod_yV4aw8qkWGk1R/?v=klh1k14yq9",
    "galleryImageUrls": [
      "https://img-v2-prod.whop.com/_f1qYffHbycVidOdXVFkWDlLwowuxyH_G_vsd2oOE1Y/plain/https://assets-2-prod.whop.com/public/uploads/2026-10-22/9c620cb6-a568-42c3-8db2-8ee8a4d23a28/image.png"
    ]
  }
}
```

**Keyword GMV report**

All three top-level fields are required. Each observation has a date and GMV.

| Field | Type | What it does |
| --- | --- | --- |
| `resultType` | string | Always `keywordGmvReport`. |
| `keyword` | string | Report search term. |
| `observations` | array of objects | Available daily observations from the past 90 days. |
| `observations[].date` | string | Observation date in `YYYY-MM-DD` format. |
| `observations[].gmv` | number | Daily keyword GMV in source units. The currency is not specified. |

This genuine report comes from a successful current-beta run.

```json
{
  "resultType": "keywordGmvReport",
  "keyword": "trading",
  "observations": [
    {
      "date": "2026-07-27",
      "gmv": 33467.03999994
    },
    {
      "date": "2026-07-28",
      "gmv": 24013.63999989
    },
    {
      "date": "2026-07-29",
      "gmv": 26731.5499999
    },
    {
      "date": "2026-07-30",
      "gmv": 579641.92999992
    },
    {
      "date": "2026-07-31",
      "gmv": 14544592.38999986
    },
    {
      "date": "2026-08-01",
      "gmv": 85697.25999994
    },
    {
      "date": "2026-08-02",
      "gmv": 31757.86999991
    },
    {
      "date": "2026-08-03",
      "gmv": 12852463.44999993
    },
    {
      "date": "2026-08-04",
      "gmv": 147647.13999995
    },
    {
      "date": "2026-08-05",
      "gmv": 173990.22999988
    },
    {
      "date": "2026-08-06",
      "gmv": 1318639.15999991
    },
    {
      "date": "2026-08-07",
      "gmv": 25415.74999991
    },
    {
      "date": "2026-08-08",
      "gmv": 567432.84999995
    },
    {
      "date": "2026-08-09",
      "gmv": 98721.41999994
    },
    {
      "date": "2026-08-10",
      "gmv": 29199.88999993
    },
    {
      "date": "2026-08-11",
      "gmv": 92324.81999995
    },
    {
      "date": "2026-08-12",
      "gmv": 65512.34999994
    },
    {
      "date": "2026-08-13",
      "gmv": 1274505.77999994
    },
    {
      "date": "2026-08-14",
      "gmv": 21612.89999995
    },
    {
      "date": "2026-08-15",
      "gmv": 16407.22999994
    },
    {
      "date": "2026-08-16",
      "gmv": 25344.95999995
    },
    {
      "date": "2026-08-17",
      "gmv": 477979.68999989
    },
    {
      "date": "2026-08-18",
      "gmv": 19902.61999997
    },
    {
      "date": "2026-08-19",
      "gmv": 24498.70999993
    },
    {
      "date": "2026-08-20",
      "gmv": 35089.41999992
    },
    {
      "date": "2026-08-21",
      "gmv": 42012.00999996
    },
    {
      "date": "2026-08-22",
      "gmv": 18650.16999997
    },
    {
      "date": "2026-08-23",
      "gmv": 17705.67999995
    },
    {
      "date": "2026-08-24",
      "gmv": 24397.12999992
    },
    {
      "date": "2026-08-25",
      "gmv": 25529.25999997
    },
    {
      "date": "2026-08-26",
      "gmv": 46561.63999993
    },
    {
      "date": "2026-08-27",
      "gmv": 18910.00999991
    },
    {
      "date": "2026-08-28",
      "gmv": 22317.39999993
    },
    {
      "date": "2026-08-29",
      "gmv": 24005.78999996
    },
    {
      "date": "2026-08-30",
      "gmv": 28505.08999994
    },
    {
      "date": "2026-08-31",
      "gmv": 22541.36999992
    },
    {
      "date": "2026-09-01",
      "gmv": 23197.03999995
    },
    {
      "date": "2026-09-02",
      "gmv": 24517.87999997
    },
    {
      "date": "2026-09-03",
      "gmv": 24814.76999997
    },
    {
      "date": "2026-09-04",
      "gmv": 32090.68999991
    },
    {
      "date": "2026-09-05",
      "gmv": 32602.43999993
    },
    {
      "date": "2026-09-06",
      "gmv": 36758.41999995
    },
    {
      "date": "2026-09-07",
      "gmv": 112321.64999993
    },
    {
      "date": "2026-09-08",
      "gmv": 137684.06999992
    },
    {
      "date": "2026-09-09",
      "gmv": 49868.41999994
    },
    {
      "date": "2026-09-10",
      "gmv": 88211.74999997
    },
    {
      "date": "2026-09-11",
      "gmv": 131483.11999994
    },
    {
      "date": "2026-09-12",
      "gmv": 246739.11999994
    },
    {
      "date": "2026-09-13",
      "gmv": 18650.6699999
    },
    {
      "date": "2026-09-14",
      "gmv": 1978035.59999993
    },
    {
      "date": "2026-09-15",
      "gmv": 56015.74999989
    },
    {
      "date": "2026-09-16",
      "gmv": 22006.69999994
    },
    {
      "date": "2026-09-17",
      "gmv": 16852.27999992
    },
    {
      "date": "2026-09-18",
      "gmv": 90608.91999991
    },
    {
      "date": "2026-09-19",
      "gmv": 56826.49999992
    },
    {
      "date": "2026-09-20",
      "gmv": 22324.69999996
    },
    {
      "date": "2026-09-21",
      "gmv": 25443.40999994
    },
    {
      "date": "2026-09-22",
      "gmv": 18492.7599999
    },
    {
      "date": "2026-09-23",
      "gmv": 16791.47999993
    },
    {
      "date": "2026-09-24",
      "gmv": 19692.77999995
    },
    {
      "date": "2026-09-25",
      "gmv": 17181.51999989
    },
    {
      "date": "2026-09-26",
      "gmv": 16012.26999992
    },
    {
      "date": "2026-09-27",
      "gmv": 18361.28999991
    },
    {
      "date": "2026-09-28",
      "gmv": 24375.90999993
    },
    {
      "date": "2026-09-29",
      "gmv": 18211.59999994
    },
    {
      "date": "2026-09-30",
      "gmv": 1603964.65999996
    },
    {
      "date": "2026-10-01",
      "gmv": 452250.3499999
    },
    {
      "date": "2026-10-02",
      "gmv": 22546.35999992
    },
    {
      "date": "2026-10-03",
      "gmv": 22923.64999997
    },
    {
      "date": "2026-10-04",
      "gmv": 132131.88999988
    },
    {
      "date": "2026-10-05",
      "gmv": 33132.4599999
    },
    {
      "date": "2026-10-06",
      "gmv": 33707.22999988
    },
    {
      "date": "2026-10-07",
      "gmv": 78286.19999986
    },
    {
      "date": "2026-10-08",
      "gmv": 33431.77999994
    },
    {
      "date": "2026-10-09",
      "gmv": 22206.39999992
    },
    {
      "date": "2026-10-10",
      "gmv": 372842.16999994
    },
    {
      "date": "2026-10-11",
      "gmv": 25271.45999993
    },
    {
      "date": "2026-10-12",
      "gmv": 22213.62999991
    },
    {
      "date": "2026-10-13",
      "gmv": 20131.9199999
    },
    {
      "date": "2026-10-14",
      "gmv": 82576.34999988
    },
    {
      "date": "2026-10-15",
      "gmv": 19047.21999988
    },
    {
      "date": "2026-10-16",
      "gmv": 17785.22999998
    },
    {
      "date": "2026-10-17",
      "gmv": 13717.96999993
    },
    {
      "date": "2026-10-18",
      "gmv": 19882.25999997
    },
    {
      "date": "2026-10-19",
      "gmv": 31386.12999996
    },
    {
      "date": "2026-10-20",
      "gmv": 23579.54999997
    },
    {
      "date": "2026-10-21",
      "gmv": 20833.12999996
    },
    {
      "date": "2026-10-22",
      "gmv": 88557.72999985
    },
    {
      "date": "2026-10-23",
      "gmv": 1931532.29999994
    },
    {
      "date": "2026-10-24",
      "gmv": 10209.08999998
    }
  ]
}
```

#### 💳 Pricing

You pay per public product or keyword GMV report saved. There is no Actor-owned setup or no-result charge. Apify platform usage costs may still apply.

| Charged unit | USD per unit |
| --- | --- |
| Product on FREE | $0.0002 |
| Product on BRONZE | $0.00015 |
| Product on SILVER or GOLD | $0.0001 |
| Product on PLATINUM | $0.00005 |
| Product on DIAMOND | $0.00001 |
| Keyword GMV report | $0.001 |

Use `maxItems` and your run charge limit to control the number of paid rows. A report is charged once, rather than once per daily observation.

#### 🔌 Integrations

Run the Actor in Apify Console or through the Apify API. Use the dataset API or export the rows as JSON, CSV, or Excel for your own reports and tools.

https://www.youtube.com/watch?v=bNACk1_S_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### Is product GMV the same as keyword GMV?

No. `gmvUsd` is reported product GMV for the last 24 hours in USD. Keyword reports contain daily observations for the past 90 days, with no specified currency. Neither is audited revenue.

##### Why did a product fail a filter?

The product must meet every selected filter. A missing value cannot meet a numeric bound. Price bounds must match the same public plan. Company membership and product active users are different measures.

##### Can I combine searches and URLs?

Yes. Product mode combines them with the same filters and total row limit. Duplicate product IDs are saved once. It does not add later matches to a saved row.

##### What happens with an unavailable URL or no matches?

The Actor logs a warning and continues other work. Invalid input or unsupported order choices can stop collection with no rows. A technical failure that prevents all results can fail the run.

##### Does this provide private content or full marketplace history?

No. It collects public Whop marketplace data without requiring your Whop login. It does not download paid courses, member chats, or files, and it does not cover the Whop App Store. Product rows show current available data; keyword reports provide the available 90-day observations. Full coverage is not guaranteed.

##### Is this a Whop API?

This is an independent Apify Actor that returns structured Whop data through Apify's API and datasets. It is not an official Whop API or an official Whop product.

### 📝 Changelog

**v0.0** (25-10-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~whop-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Whop Content Rewards Scraper for Campaigns](https://apify.com/maximedupre/whop-content-rewards-campaigns) finds public creator campaigns and payout data on Whop.
- [Skool API](https://apify.com/maximedupre/skool-api) supports research into Skool communities alongside Whop offers.
- [Patreon Scraper](https://apify.com/maximedupre/patreon-scraper) collects public creator and membership data for creator market research.
- [Product Hunt Launches Scraper](https://apify.com/maximedupre/product-hunt-scraper) collects product launches for research into related digital tools.
- [Substack API Scraper: Posts, Authors & Newsletters](https://apify.com/maximedupre/substack-api) collects public newsletter and author data for research into paid-content markets.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `resultType` (type: `string`):

Choose product rows or daily keyword GMV reports for the past 90 days.

## `productUrls` (type: `array`):

Add complete public Whop product URLs. These products join any other product searches in this run.

## `companyUrls` (type: `array`):

Add complete public Whop company or community URLs to find their products.

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

Enter Whop category names or slugs. Find products in these categories, or use them to filter your keyword, URL, and leaderboard results. Leave empty for any category. Current regular category slugs: games, french, ai, computer-science, game-show, personal-development, spirituality, misc, recreation, dating, careers, community, newsletters, religion, agencies, travel, trading, students, sports, sports-picks, social-media, saas, reselling, real-estate, podcasts, personal-finance, night-life, music, misc-services, local-shop, life-hacks, gaming, fitness, fashion, events, ecommerce, design, business, board-games, art.

## `leaderboard` (type: `boolean`):

Find products on Whop marketplace leaderboards. The product filters below also apply to these results.

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

Choose the order for product discovery. When Company or community URLs has any URLs, choose only Relevance. With that list empty, keyword searches support Relevance or Newest. Newest also requires Include leaderboard products to be off. Highest rating requires Keywords and Company or community URLs to be empty. For Highest available GMV, fill Categories, leave Keywords and both URL lists empty, and turn off Include leaderboard products. This GMV order combines results from all selected categories and uses Whop's reported product gross merchandise value for the last 24 hours, in US dollars. Leave empty for relevance.

## `verification` (type: `string`):

Keep products with the chosen Whop verification state. Leave empty to include both states.

## `pricing` (type: `string`):

Keep products offering free or paid plans. Leave empty for either kind.

## `planTypes` (type: `array`):

Keep products with any selected plan type. Leave empty for all plan types.

## `minPrice` (type: `number`):

Keep products with a plan priced at least this many US dollars. Use the renewal amount for subscriptions and the initial amount for other plans.

## `maxPrice` (type: `number`):

Keep products with a plan priced at most this many US dollars. Use the renewal amount for subscriptions and the initial amount for other plans. When both price bounds are set, the same plan must meet both.

## `minRating` (type: `number`):

Keep products with a public rating at least this high, on a five-star scale.

## `minReviews` (type: `integer`):

Keep products with at least this many published reviews.

## `minActiveUsers` (type: `integer`):

Keep products with at least this many public active users.

## `minGmv` (type: `number`):

Keep products with Whop's reported product gross merchandise value for the last 24 hours at least this many US dollars. Products with no public GMV do not match this filter.

## `maxGmv` (type: `number`):

Keep products with Whop's reported product gross merchandise value for the last 24 hours at most this many US dollars. Products with no public GMV do not match this filter.

## `createdAfter` (type: `string`):

Keep products created on or after this date, in UTC.

## `createdBefore` (type: `string`):

Keep products created on or before this date, in UTC.

## `keywords` (type: `array`):

Enter one or more search terms. Products mode uses them to find products. Keyword GMV reports mode returns available daily observations for each term for the past 90 days and needs at least one term.

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

A positive value stops at this many results, or fewer if no more are available. Leave empty or use zero to collect all available results until none remain. For Keyword GMV reports, one result is one keyword report.

## Actor input object example

```json
{
  "resultType": "products",
  "leaderboard": false,
  "keywords": [
    "trading"
  ],
  "maxItems": 4
}
```

# Actor output Schema

## `results` (type: `string`):

Open product and keyword GMV results in the default dataset.

# 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 = {
    "resultType": "products",
    "keywords": [
        "trading"
    ],
    "maxItems": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/whop-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 = {
    "resultType": "products",
    "keywords": ["trading"],
    "maxItems": 4,
}

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

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

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

```

## CLI example

```bash
echo '{
  "resultType": "products",
  "keywords": [
    "trading"
  ],
  "maxItems": 4
}' |
apify call maximedupre/whop-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/whop-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zcjW3qUJOTxsT0b6T/builds/h8jcYLkPwrZ321qJb/openapi.json
