{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Emerging Long-Form Channel Hunter",
    "description": "Scan YouTube for fast-growing channels with few subscribers but explosive view velocity. Viral Score + delta tracking + niche trend detection. Uses your free YouTube Data API v3 key.",
    "version": "0.0",
    "x-build-id": "eJ4jGB1yiwowMu9n5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/italianscraper~youtube-emerging-long-form-channel-hunter/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-italianscraper-youtube-emerging-long-form-channel-hunter",
        "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/italianscraper~youtube-emerging-long-form-channel-hunter/runs": {
      "post": {
        "operationId": "runs-sync-italianscraper-youtube-emerging-long-form-channel-hunter",
        "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/italianscraper~youtube-emerging-long-form-channel-hunter/run-sync": {
      "post": {
        "operationId": "run-sync-italianscraper-youtube-emerging-long-form-channel-hunter",
        "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",
        "required": [
          "apiKey"
        ],
        "properties": {
          "apiKey": {
            "title": "YouTube Data API v3 Key",
            "type": "string",
            "description": "Your free YouTube Data API v3 key. Get it in 5 min at console.cloud.google.com -> APIs & Services -> YouTube Data API v3 -> Credentials."
          },
          "scanMode": {
            "title": "Scan Mode",
            "enum": [
              "light",
              "standard",
              "full",
              "multi_region"
            ],
            "type": "string",
            "description": "Controls how many API quota units are used per run and sets all parameter defaults.\n\n🆓 FREE PLAN: locked to Light mode regardless of this setting.\n✅ PAID PLAN: all modes available.\n\nLight (~1,000 units, up to 10 runs/day)\nKeywords: tutorial, how to, review | Region: US | 2 pages/keyword\nResults: 3 channels (free) / up to 50 (paid)\n\nStandard (~1,800 units, up to 5 runs/day) — Paid only\nKeywords: tutorial, how to, beginner, guide, review, tips | Region: US | 3 pages/keyword\n\nFull (~3,600 units, up to 2 runs/day) — Paid only\n12 keywords | Region: US | 3 pages/keyword\n\nMulti-region (~7,200 units, 1 run/day) — Paid only\n12 keywords | Regions: US + GB | 3 pages/keyword\n\nNote: if you add custom keywords or regions, the log will show an estimated quota warning if you exceed the mode budget.",
            "default": "standard"
          },
          "keywords": {
            "title": "Custom Keywords (optional — Paid only)",
            "type": "array",
            "description": "Override the keyword list for the selected scan mode. Leave empty to use the scan-mode defaults.\n\n🆓 Free plan: this field is ignored. Keywords are fixed by the Light preset.\n\nDefaults by mode:\n- Light: tutorial, how to, review\n- Standard: tutorial, how to, beginner, guide, review, tips\n- Full / Multi-region: tutorial, how to, beginner, guide, review, explained, learn, tips, best, simple, diy, 2026\n\nWarning: adding many keywords increases quota usage beyond the mode budget. The log will warn you if this happens.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions (ISO country codes, optional — Paid only)",
            "type": "array",
            "description": "Override the region list. Leave empty to use the scan-mode defaults.\n\n🆓 Free plan: this field is ignored. Region is fixed to US by the Light preset.\n\nDefaults by mode:\n- Light / Standard / Full: US\n- Multi-region: US, GB\n\nAccepts any ISO 3166-1 alpha-2 code: IT, DE, FR, BR, IN, AU...",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxPages": {
            "title": "Max pages per keyword (optional — Paid only)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Override how many result pages to fetch per keyword. Leave empty to use the scan-mode default.\n\n🆓 Free plan: this field is ignored. Pages are fixed by the Light preset.\n\nDefaults by mode:\n- Light: 2\n- Standard / Full / Multi-region: 3\n\nEach page costs 100 quota units per keyword per region. Range: 1-5."
          },
          "days": {
            "title": "Published in last N days",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Only consider videos published within this many days.\nDefault: 30. Range: 1-90.\nIncrease to 60-90 for slower niches, decrease to 7-14 for fast-moving trends.",
            "default": 30
          },
          "minViews": {
            "title": "Min views per video",
            "type": "integer",
            "description": "Minimum total views a video must have to be considered.\nDefault: 10000.\nLower to 5000 to catch channels even earlier.",
            "default": 10000
          },
          "minVPD": {
            "title": "Min views per day (VPD)",
            "type": "integer",
            "description": "Minimum average daily views (total views divided by days since publish).\nDefault: 500.\nThis is the primary velocity filter. Raise it to find only truly fast-growing content.",
            "default": 500
          },
          "minDurationSec": {
            "title": "Min video duration (seconds)",
            "type": "integer",
            "description": "Minimum video length in seconds.\nDefault: 420 (= 7 minutes).\nLong-form videos attract ad revenue and brand deals, the format most relevant for sponsorship scouting.",
            "default": 420
          },
          "maxChannelSubs": {
            "title": "Max channel subscribers",
            "type": "integer",
            "description": "Channels with more subscribers than this are excluded as too established.\nDefault: 100000.\nLower to 10000-50000 for ultra-early discovery.",
            "default": 100000
          },
          "maxChannelVideos": {
            "title": "Max channel total videos",
            "type": "integer",
            "description": "Channels with more total videos than this are excluded.\nDefault: 50.\nKeeps results focused on newer, less established creators.",
            "default": 50
          },
          "minEngagementRate": {
            "title": "Min engagement rate (%)",
            "type": "number",
            "description": "Minimum engagement rate: (likes + comments) / views x 100.\nDefault: 0.5%.\nRaise to 1-2% to find only highly engaged audiences.",
            "default": 0.5
          },
          "channelMaxAgeDays": {
            "title": "Max channel age (days)",
            "type": "integer",
            "description": "Channels older than this many days are excluded.\nDefault: 365 (1 year).\nSet to 180 to find channels created in the last 6 months only.",
            "default": 365
          },
          "topN": {
            "title": "Max results to return",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of emerging channels in the output dataset.\nDefault: 50. Range: 1-200.\nOne result per channel: only the best-performing video per channel is kept.\n\n🆓 Free plan: capped at 3 regardless of this value.",
            "default": 50
          },
          "enableViralScore": {
            "title": "Enable Viral Score",
            "type": "boolean",
            "description": "Calculate and attach a Viral Score to every result.\nDefault: enabled.\n\nScore formula: 40% views/day + 25% engagement + 15% small-channel bonus + 10% new-channel bonus + 10% video freshness.\n\nDisable only if you want raw unranked results.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}