{
  "openapi": "3.0.1",
  "info": {
    "title": "Vyro Clipping Campaigns Scraper: CPM, Budgets & Follower Reqs",
    "description": "Scrape Vyro's public clipping campaign board (MrBeast's clipping marketplace): CPM per 1,000 views, budget spent vs remaining, minimum follower requirement, target topics, and posting rules. Flags new campaigns and ones that closed since your last scheduled run. JSON, CSV, or Excel export.",
    "version": "0.1",
    "x-build-id": "qi9h5hCIlBsvJSa31"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~vyro-clipping-campaigns-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-vyro-clipping-campaigns-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/getascraper~vyro-clipping-campaigns-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-vyro-clipping-campaigns-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/getascraper~vyro-clipping-campaigns-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-vyro-clipping-campaigns-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": {
          "platforms": {
            "title": "Platforms",
            "type": "array",
            "description": "Only keep campaigns that target at least one of these platforms. Leave empty to include campaigns for every platform.",
            "items": {
              "type": "string",
              "enum": [
                "tiktok",
                "instagram",
                "youtube",
                "x"
              ],
              "enumTitles": [
                "TikTok",
                "Instagram",
                "YouTube",
                "X (Twitter)"
              ]
            },
            "default": []
          },
          "minCpmUsd": {
            "title": "Minimum CPM (USD per 1,000 views)",
            "minimum": 0,
            "type": "number",
            "description": "Only keep campaigns paying at least this much per 1,000 verified views. Leave blank to include every payout rate."
          },
          "minRemainingBudgetUsd": {
            "title": "Minimum Remaining Budget (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip campaigns that are close to running out of money. Only keep campaigns with at least this much budget still unspent."
          },
          "maxRequiredFollowers": {
            "title": "Max Required Followers",
            "minimum": 0,
            "type": "integer",
            "description": "Exclude campaigns that require more followers than you have. Vyro's own API exposes a per-campaign minimum-follower requirement that the incumbent Vyro scraper on Apify never surfaces at all, so there was previously no way to filter these out before wasting time on a campaign you don't qualify for. Campaigns with no stated follower minimum always pass this filter. Leave blank to include every campaign regardless of follower requirement."
          },
          "freshWithinHours": {
            "title": "Only Campaigns Created Within (hours)",
            "minimum": 1,
            "type": "integer",
            "description": "Only keep campaigns first created within this many hours, useful for scheduled runs that only care about brand-new campaigns. Leave blank to include campaigns of any age."
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "opportunity",
              "cpm",
              "remainingBudget",
              "newest",
              "endingSoon"
            ],
            "type": "string",
            "description": "How to order the campaigns in the output dataset.",
            "default": "opportunity"
          },
          "maxItems": {
            "title": "Max Campaigns",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of active campaigns to return, applied after filtering and sorting. Vyro's public campaign board typically lists well under 25 active campaigns at any given time, so this cap rarely binds today. It exists as a safety limit for when the board grows, and does not limit campaigns added by 'Include Recently Closed Campaigns' below.",
            "default": 25
          },
          "includeClosedFromArchive": {
            "title": "Include Recently Closed Campaigns",
            "type": "boolean",
            "description": "Also include campaigns this Actor has previously seen active that have since disappeared from Vyro's public board (budget exhausted or campaign ended). This Actor keeps its own persisted history across scheduled runs in its key-value store, something the incumbent Vyro scraper on Apify does not do at all, so run-over-run scheduling can build a private archive of campaigns that rotated off the public page. Closed campaigns are marked with status 'closed_since_last_run' and use their last-observed values. Has no effect on the very first run, since there is no prior history yet.",
            "default": true
          },
          "trackBudgetTrend": {
            "title": "Track Budget Burn Rate",
            "type": "boolean",
            "description": "Compare each campaign against this Actor's own previous run to compute an observed budget-burn-rate in USD per hour and flag campaigns that are new since the last run. Reads only from this Actor's own key-value store snapshot, so it adds no extra HTTP requests and is safe to leave on. Fields stay empty until a second run has something to compare against.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Vyro's campaign board is a fully public, unauthenticated JSON endpoint that responds normally even to a plain request with no browser-like headers, so a datacenter proxy is enough. Residential is not needed for this target.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}