{
  "openapi": "3.0.1",
  "info": {
    "title": "Vyro Clipping Campaigns Scraper: CPM, Budgets & Change Tracking",
    "description": "Scrape every Vyro clipping campaign (MrBeast's clipping marketplace): CPM per 1,000 views, budget left per platform, follower minimums, topics and posting rules. Schedule it to catch new clipping campaigns, budget top-ups and spent-out deals. JSON, CSV or Excel.",
    "version": "0.3",
    "x-build-id": "0RmJ4SVjJ6uYAQ25o"
  },
  "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": {
          "searchText": {
            "title": "Search Campaigns",
            "type": "string",
            "description": "Only keep clipping campaigns whose name, brand or target topics contain any of these words. Separate several words with commas, for example valorant, mrbeast. Leave empty to include every campaign.",
            "default": ""
          },
          "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": []
          },
          "budgetAvailableOnly": {
            "title": "Budget Still Available Only",
            "type": "boolean",
            "description": "Hide campaigns whose budget is fully spent or whose platform budgets are all closed, so every row still has money left to earn.",
            "default": false
          },
          "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. 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 usually lists fewer than 25 active campaigns at a time, so this cap rarely binds. It does not limit the recently closed campaigns added by 'Include Recently Closed Campaigns'.",
            "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). The Actor keeps its own history across scheduled runs, so run-over-run scheduling builds 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.",
            "default": true
          },
          "trackBudgetTrend": {
            "title": "Track Budget Burn Rate",
            "type": "boolean",
            "description": "Compare each campaign against this Actor's own previous run to compute observed budget burn per hour and per day, estimated days of budget left, a hot / burning / stalled signal, and to flag campaigns that are new since the last run. Fields stay empty until a second run has something to compare against.",
            "default": true
          },
          "onlyChanges": {
            "title": "Only Changes Since Last Run",
            "type": "boolean",
            "description": "Monitor mode for scheduled runs: save only campaigns that are new, changed pay rate, got a budget top-up, ran out of budget or lost a platform budget since your last run (plus campaigns that closed). Your first run saves the whole board as the baseline. A run with no changes saves nothing and costs nothing.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Vyro's campaign board is a public page that normally answers a plain request. The Actor tries a direct request first and only uses this proxy setting if that request fails, so most runs use no proxy at all.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}