{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Video Details Scraper — Creator Profile & Links",
    "description": "Get complete video insights with the YouTube Video Details Scraper. Extract titles, descriptions, tags, stats, upload dates, and more. Perfect for data analysis, SEO, and content tracking. Fast, accurate, and scalable for single or bulk video URLs.",
    "version": "0.1",
    "x-build-id": "H4chYSrlxP0QCEfPa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapier~youtube-video-details-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapier-youtube-video-details-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/scrapier~youtube-video-details-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapier-youtube-video-details-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/scrapier~youtube-video-details-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapier-youtube-video-details-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": {
          "videoLinks": {
            "title": "🎥 YouTube Video URLs or IDs",
            "type": "array",
            "description": "📺 **One or more YouTube video links.** Accepts full watch URLs, `youtu.be` short links, `/shorts/` links, or bare 11-character video IDs.\n\nExample: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`, `youtu.be/jNQXAC9IVRw`, `9bZkp7q19f0`\n\n⚠️ Playlist and channel URLs are **rejected with a clear error**, not silently turned into a malformed row.\n\n♻️ The original Actor's `startUrls` key is also accepted and takes precedence, so an existing input JSON runs unchanged.",
            "items": {
              "type": "string"
            }
          },
          "maxVideos": {
            "title": "🔢 Video Limit",
            "minimum": 0,
            "type": "integer",
            "description": "🛑 **Stop after this many videos.** Useful for a cheap trial run against a long list.\n\nExample: `3` processes only the first 3 URLs. Default `0` = process every URL supplied.",
            "default": 0
          },
          "creatorProfile": {
            "title": "🧑‍🎨 Fetch Full Creator Profile",
            "type": "boolean",
            "description": "👤 **Harvest the whole channel /about page**, not just the avatar.\n\nAdds joined date, `creatorChannelAgeMonths`, country, description, banner, verification, and subscriber / total-view / video counts as both integers and display strings.\n\nThe original Actor already downloaded this page on every video and kept only one logo URL. Default `true`.",
            "default": true
          },
          "resolveCreatorLinks": {
            "title": "🔗 Unwrap Creator External Links",
            "type": "boolean",
            "description": "🌐 **Turn YouTube's redirect wrappers into clean destination URLs.**\n\n`https://www.youtube.com/redirect?...&q=https%3A%2F%2Finstagram.com%2Fx` becomes `https://instagram.com/x`, with `domain` and a recognised `platform` label (Instagram, X, TikTok, Discord, Patreon, …) attached.\n\n📊 Coverage is **1 of 2 channels** in testing — only creators who published links have any. `hasChannelLinks` marks the difference. Default `true`.",
            "default": true
          },
          "dedupeChannelLookups": {
            "title": "⚡ De-duplicate Channel Lookups",
            "type": "boolean",
            "description": "♻️ **Fetch each channel's /about page once per run**, then reuse it for every other video from that channel.\n\nExample: 10 videos from 1 channel = **1** About request instead of 10. The `creatorProfileSource` output column shows `about_page` on the first video and `cached` on the rest, so you can see it working. Default `true`.",
            "default": true
          },
          "includeTranscript": {
            "title": "📜 Include Transcript",
            "type": "boolean",
            "description": "🗣️ **Download the caption track and return timed cues.**\n\nThis Actor's parser emits **one cue per caption event** with the real start time (`tOffsetMs` applied) — the original split captions into individual words that all shared one timestamp.\n\nTurn off to run faster when you only need metadata and the creator profile. Default `true`.",
            "default": true
          },
          "proxySettings": {
            "title": "🛡️ Proxy",
            "type": "object",
            "description": "🌍 **Residential proxy is the default and it is not optional in practice.**\n\nMeasured on an 8-video batch through Apify egress: **datacenter 1/8 succeeded, residential 7/8**. YouTube answers repeated datacenter requests with \"Sign in to confirm you're not a bot\".\n\n💰 Residential proxy is billed by traffic and is the main cost of a run. If you switch this off, failed attempts automatically escalate to residential rather than failing.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}