{
  "openapi": "3.0.1",
  "info": {
    "title": "Whop Scraper - Communities, Courses & Creators",
    "description": "Scrape the Whop marketplace across 950 niche categories. Get member counts, ratings, review counts, total views, launch dates and creator profiles for paid communities, courses and software. Independent tool, not affiliated with Whop.",
    "version": "0.1",
    "x-build-id": "1JrFzoTOgcfJQz4wB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~whop-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-whop-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapesage~whop-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-whop-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapesage~whop-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-whop-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "title": "Categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Which parts of the Whop marketplace to crawl. Each one is expanded into its own sub-categories using Whop's published category sitemap, deepest niches first.",
            "items": {
              "type": "string",
              "enum": [
                "coaching-and-courses",
                "services",
                "software",
                "physical-product",
                "paid-group",
                "events",
                "marketplace",
                "brick-and-mortar",
                "newsletter",
                "telehealth",
                "gig-economy",
                "other"
              ],
              "enumTitles": [
                "Coaching and courses (coaching-and-courses)",
                "Services (services)",
                "Software (software)",
                "Physical products (physical-product)",
                "Paid groups (paid-group)",
                "Events (events)",
                "Marketplaces (marketplace)",
                "Brick and mortar (brick-and-mortar)",
                "Newsletters (newsletter)",
                "Telehealth (telehealth)",
                "Gig economy (gig-economy)",
                "Other (other)"
              ]
            }
          },
          "maxCategories": {
            "title": "Max categories",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "How many sub-categories to crawl in total. Whop has about 950 of them, and each returns up to 24 listings.",
            "default": 25
          },
          "maxResults": {
            "title": "Max products",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many products in total. 0 means no limit.",
            "default": 0
          },
          "minMembers": {
            "title": "Min members",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep listings with at least this many members - the quickest way to filter out brand-new or abandoned communities."
          },
          "minRating": {
            "title": "Min average rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep listings rated at least this highly out of 5."
          },
          "minReviews": {
            "title": "Min review count",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep listings with at least this many published reviews."
          },
          "minViews": {
            "title": "Min total views",
            "minimum": 0,
            "type": "integer",
            "description": "Only keep listings whose Whop page has had at least this many views."
          },
          "verifiedOnly": {
            "title": "Verified listings only",
            "type": "boolean",
            "description": "Keep only listings Whop marks as verified.",
            "default": false
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Whop category URLs to scrape directly, for example https://whop.com/discover/browse/software/. Accepts a plain URL, a {\"url\": …} object, or a {\"requestsFromUrl\": …} link to a text file. URLs Whop's robots.txt disallows (/api/ and /discover/search/) are skipped and named in the run message.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "urlsFromFile": {
            "title": "URLs from a file or pasted list",
            "type": "string",
            "description": "Paste Whop category URLs one per line, or give one link to a .txt/.csv file, a Google Sheet, a Google Drive file or an Apify key-value-store record. Every URL found is added to Start URLs."
          },
          "outputFields": {
            "title": "Output fields",
            "uniqueItems": true,
            "type": "array",
            "description": "Pick the fields each row should carry. Leave empty for all of them.",
            "items": {
              "type": "string",
              "enum": [
                "productId",
                "title",
                "url",
                "slug",
                "verified",
                "memberCount",
                "reviewsAverage",
                "reviewCount",
                "totalViews",
                "description",
                "createdAt",
                "logoUrl",
                "bannerUrl",
                "ownerUsername",
                "ownerName",
                "ownerProfileUrl",
                "ownerProfilePic",
                "ownerBio",
                "hasLiveStream",
                "category",
                "categoryPath",
                "sourceUrl",
                "scrapedAt"
              ],
              "enumTitles": [
                "Whop product ID (productId)",
                "Title (title)",
                "Whop URL (url)",
                "URL slug (slug)",
                "Verified by Whop (verified)",
                "Member count (memberCount)",
                "Average rating (reviewsAverage)",
                "Review count (reviewCount)",
                "Total page views (totalViews)",
                "Creator pitch (description)",
                "Launched at (createdAt)",
                "Logo image (logoUrl)",
                "Banner image (bannerUrl)",
                "Owner username (ownerUsername)",
                "Owner display name (ownerName)",
                "Owner profile URL (ownerProfileUrl)",
                "Owner profile picture (ownerProfilePic)",
                "Owner bio (ownerBio)",
                "Live stream active (hasLiveStream)",
                "Top-level category (category)",
                "Full category path (categoryPath)",
                "Source category URL (sourceUrl)",
                "Scraped at (scrapedAt)"
              ]
            }
          },
          "monitorMode": {
            "title": "Monitor mode - only new listings",
            "type": "boolean",
            "description": "Remember the listings already returned and emit only products that are new since the last run. Ideal on a schedule for spotting new communities as they launch.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store holding the monitor's memory. Use different names to track different categories independently.",
            "default": "whop-monitor"
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}