{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Channel Analyzer - Audience Language & Sponsorship Fit",
    "description": "Analyze YouTube channels for sponsorship: expected views from recent uploads, audience language inferred from real comments, upload cadence, engagement, whether they already take brand deals, and an estimated price from your own CPM.",
    "version": "0.1",
    "x-build-id": "l0EWC2TgZp5GQZhfu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/salomon.labs~youtube-channel-analyzer/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-salomon.labs-youtube-channel-analyzer",
        "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/salomon.labs~youtube-channel-analyzer/runs": {
      "post": {
        "operationId": "runs-sync-salomon.labs-youtube-channel-analyzer",
        "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/salomon.labs~youtube-channel-analyzer/run-sync": {
      "post": {
        "operationId": "run-sync-salomon.labs-youtube-channel-analyzer",
        "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": {
          "channelUrls": {
            "title": "Channels to analyze",
            "type": "array",
            "description": "Channel handles (@name), full channel URLs, or channel IDs (UC...). Repeats are charged once. Leave empty to see a small sample run.",
            "items": {
              "type": "string"
            }
          },
          "cpmLow": {
            "title": "Your CPM, low end (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "What you are willing to pay per 1,000 views at the low end. Used only to turn expected views into a price range - we do not assume a rate for your market. Leave both CPM fields empty and you still get every other field."
          },
          "cpmHigh": {
            "title": "Your CPM, high end (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "The top of the same range. Integration rates vary enormously by niche - finance and B2B software sit far above gaming and entertainment - so this is your judgement, not ours."
          },
          "competitors": {
            "title": "Competitors to flag",
            "type": "array",
            "description": "Brands you do not want a creator to have promoted recently. Any mention in a recent video description is reported with the sentence it appeared in. Names shorter than three characters are ignored, because they match inside other words.",
            "items": {
              "type": "string"
            }
          },
          "recentVideos": {
            "title": "How many recent videos to measure",
            "minimum": 3,
            "maximum": 50,
            "type": "integer",
            "description": "Expected views is the MEDIAN of this many recent uploads, not the average - one viral video drags an average 20-75% above what a normal upload gets. Twelve is roughly a quarter for a weekly channel.",
            "default": 12
          },
          "videosToSample": {
            "title": "How many videos to read in depth",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Videos whose COMMENTS are read, which is where audience language comes from. Three is generous: the language a sample points to is stable from about ten comments, and sampling stops early once it has enough.",
            "default": 3
          },
          "descriptionsToRead": {
            "title": "How many recent descriptions to read",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Videos whose DESCRIPTION is read, which is where sponsor history and competitor mentions come from. Wider than the comment sample on purpose - 'has this creator promoted my competitor recently' means more than three videos. Each extra video is one more page fetched, so raising this makes runs slower. It also sets how many uploads the view trend is measured over: a channel that posts daily needs this raised to 30 or so before a trend can be computed at all, and the output says so when it cannot.",
            "default": 10
          },
          "concurrency": {
            "title": "Channels at a time",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Lower is safer. This Actor reads a dozen pages per channel, and YouTube rate-limits aggressively. Five is the ceiling; measured on the platform, five channels at a time with twelve descriptions each peaks at 258 MB against the Actor's 512 MB.",
            "default": 3
          },
          "delaySeconds": {
            "title": "Pause between requests (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Politeness is a feature: a blocked IP costs a whole run, not one row.",
            "default": 1
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "YouTube serves a datacenter address a videos tab but refuses it a watch page, and everything this Actor knows about an audience comes off the watch page. Leave Apify Proxy on unless you know why you are turning it off.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}