{
  "openapi": "3.0.1",
  "info": {
    "title": "Whop Content Rewards Scraper",
    "description": "Scrape every clipping and UGC campaign on Whop Content Rewards: CPM and payout limits per platform, budget left and spend pace, creators, views in the last 7 days, categories, requirements. Find clipping jobs that still pay. Monitor mode. Export to JSON, CSV or Excel, or via API.",
    "version": "1.0",
    "x-build-id": "Ou8ZWotCZaP2G1Rqd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyscrape~whop-content-rewards-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyscrape-whop-content-rewards-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/steadyscrape~whop-content-rewards-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyscrape-whop-content-rewards-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/steadyscrape~whop-content-rewards-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyscrape-whop-content-rewards-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": {
          "campaignTypes": {
            "title": "Campaign types",
            "type": "array",
            "description": "The tabs of the Content Rewards directory to read: <b>Clipping</b> (clip a creator's or brand's footage) and <b>UGC</b> (make your own videos). A campaign listed in both is delivered once. Empty reads both.",
            "items": {
              "type": "string",
              "enum": [
                "clipping",
                "ugc"
              ],
              "enumTitles": [
                "Clipping",
                "UGC"
              ]
            },
            "default": [
              "clipping",
              "ugc"
            ]
          },
          "includeUnlisted": {
            "title": "Include campaigns the directory does not show",
            "type": "boolean",
            "description": "Also read the running campaigns that have a public page (they are in the site's sitemap) but that the directory does not list, mostly older ones: about 230 more on top of the ~475 listed. They come after the listed ones and are not sorted or pre-filtered, so every one of their pages is opened.",
            "default": false
          },
          "campaignUrls": {
            "title": "Campaign links",
            "type": "array",
            "description": "Read only these campaigns, e.g. <code>https://contentrewards.com/c/campaigns/44a3ffcb-d4a1-492b-94a4-704919950246</code> or just the id. When set, the directory is not read; the filters below still apply. A link that is not a campaign, a campaign the site does not have, or one that has ended gets a free row saying so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "Platforms",
            "type": "array",
            "description": "Keep campaigns that pay for posts on at least one of these platforms. Empty keeps all.",
            "items": {
              "type": "string",
              "enum": [
                "tiktok",
                "instagram",
                "youtube",
                "x",
                "facebook"
              ],
              "enumTitles": [
                "TikTok",
                "Instagram",
                "YouTube",
                "X (Twitter)",
                "Facebook"
              ]
            },
            "default": []
          },
          "payoutTypes": {
            "title": "Payout types",
            "type": "array",
            "description": "<b>CPM</b> pays per 1,000 views (almost every campaign), <b>Per post</b> a flat fee per approved video, <b>Pool</b> splits a fixed pot by views when the campaign ends. Empty keeps all.",
            "items": {
              "type": "string",
              "enum": [
                "cpm",
                "perPost",
                "pool"
              ],
              "enumTitles": [
                "CPM (per 1,000 views)",
                "Per post (flat fee)",
                "Pool"
              ]
            },
            "default": []
          },
          "minRatePer1kUsd": {
            "title": "Minimum pay per 1,000 views (US$)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Keep campaigns paying at least this many dollars per 1,000 views on at least one platform. Pool and per-post campaigns are left out when this is set."
          },
          "minBudgetLeftUsd": {
            "title": "Minimum budget left (US$)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep campaigns with at least this much budget not yet spent: the money still there to pay new views."
          },
          "maxBudgetSpentPercent": {
            "title": "Maximum budget spent (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep campaigns that have spent at most this share of their budget, e.g. <code>80</code> to skip nearly exhausted ones."
          },
          "maxCreators": {
            "title": "Maximum creators",
            "minimum": 0,
            "type": "integer",
            "description": "Keep campaigns with at most this many creators already in, for less competition. <code>0</code> finds campaigns nobody has joined yet."
          },
          "verifiedOnly": {
            "title": "Verified brands only",
            "type": "boolean",
            "description": "Keep campaigns of brands Content Rewards has verified.",
            "default": false
          },
          "noApplicationOnly": {
            "title": "Open to join only",
            "type": "boolean",
            "description": "Keep campaigns you can join without applying first.",
            "default": false
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Keep campaigns whose main category (the one the directory card shows) is one of these, e.g. <code>Gaming</code>, <code>Music</code>, <code>Personal Brand</code>, <code>Entertainment</code>, <code>Finance</code>, <code>Technology</code>, <code>Streamer</code>. Case and spacing do not matter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchText": {
            "title": "Search text",
            "type": "string",
            "description": "Keep campaigns whose title, brand or description contains this text (any case), e.g. <code>roblox</code> or <code>podcast</code>."
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "site",
              "newest",
              "highestRate",
              "mostBudgetLeft",
              "fewestCreators"
            ],
            "type": "string",
            "description": "The order campaigns are read and delivered in. With a maximum, it decides which campaigns you get.",
            "default": "site"
          },
          "maxCampaigns": {
            "title": "Max campaigns",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many campaigns. 0 means every campaign that passes the filters.",
            "default": 100
          },
          "onlyNewCampaigns": {
            "title": "Only new campaigns since the last run",
            "type": "boolean",
            "description": "Deliver, and charge, only campaigns that an earlier run with the same types and filters has not delivered; their pages are not even opened. Made for scheduled runs that alert you to new campaigns.",
            "default": false
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}