{
  "openapi": "3.0.1",
  "info": {
    "title": "Youtube Scraper",
    "description": "Extract YouTube data without coding. Scrape video details, channel info, playlists, search results, and subtitles. Download channel name, subscribers, views, likes, and more in minutes using this fast, reliable YouTube scraper.",
    "version": "0.0",
    "x-build-id": "NbZazYF3J1b8NzRe7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/happitap~youtube-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-happitap-youtube-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/happitap~youtube-scraper/runs": {
      "post": {
        "operationId": "runs-sync-happitap-youtube-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/happitap~youtube-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-happitap-youtube-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": {
          "startUrls": {
            "title": "YouTube URLs",
            "type": "array",
            "description": "📺 **Paste YouTube links here!**\n\nYou can add:\n- Video URLs: `https://www.youtube.com/watch?v=VIDEO_ID`\n- Channel URLs: `https://www.youtube.com/@ChannelName`\n- Playlist URLs: `https://www.youtube.com/playlist?list=PLAYLIST_ID`\n- Search URLs: `https://www.youtube.com/results?search_query=keyword`\n\n💡 **Tip**: Leave empty if you want to search by keywords instead!",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchKeywords": {
            "title": "Search Keywords",
            "type": "array",
            "description": "🔍 **Search YouTube by keywords!**\n\nExamples:\n- \"how to cook pasta\"\n- \"python tutorial for beginners\"\n- \"best smartphones 2024\"\n\n💡 **Tip**: Use quotes for exact phrases. Leave empty if you're using URLs above.",
            "items": {
              "type": "string"
            }
          },
          "maxVideos": {
            "title": "Max Videos",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "📊 **How many regular videos to extract?**\n\nRecommended:\n- Testing: 10-20 videos\n- Small project: 50-100 videos\n- Large project: 500+ videos\n\n💰 **Cost**: ~$0.005 per video",
            "default": 50
          },
          "maxShorts": {
            "title": "Max YouTube Shorts",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "📱 **How many YouTube Shorts to extract?**\n\nSet to 0 to skip shorts entirely.\n\n💡 **Tip**: Shorts are separate from regular videos",
            "default": 0
          },
          "maxStreams": {
            "title": "Max Live Streams",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "🔴 **How many live streams to extract?**\n\nIncludes:\n- Currently live streams\n- Upcoming scheduled streams\n- Past stream recordings\n\nSet to 0 to skip streams.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort Results By",
            "enum": [
              "relevance",
              "upload_date",
              "view_count",
              "rating"
            ],
            "type": "string",
            "description": "📈 **How to sort search results?**\n\n- **Relevance**: Best match for your search\n- **Upload Date**: Newest videos first\n- **View Count**: Most popular videos\n- **Rating**: Highest rated videos",
            "default": "relevance"
          },
          "dateFilter": {
            "title": "Filter by Upload Date",
            "enum": [
              "any",
              "hour",
              "today",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "📅 **Only get videos uploaded within:**\n\n- **Any time**: No date filter (default)\n- **Last hour**: Very recent uploads\n- **Today**: Uploaded today\n- **This week**: Last 7 days\n- **This month**: Last 30 days\n- **This year**: Last 365 days",
            "default": "any"
          },
          "downloadSubtitles": {
            "title": "Download Subtitles/Transcripts",
            "type": "boolean",
            "description": "📝 **Extract video subtitles?**\n\n✅ **Enable this to get:**\n- Auto-generated subtitles\n- Manual subtitles (if available)\n- Multiple languages\n- Full video transcripts\n\n⚠️ **Note**: Adds ~30% to processing time and cost. Only enable if you need transcripts!",
            "default": false
          },
          "subtitleLanguage": {
            "title": "Subtitle Language",
            "type": "string",
            "description": "🌍 **Preferred subtitle language**\n\nExamples:\n- `en` for English\n- `es` for Spanish\n- `fr` for French\n- `de` for German\n- `auto` for automatic detection\n\n💡 **Tip**: If your language isn't available, we'll try to get English subtitles.",
            "default": "en"
          },
          "includeChannelInfo": {
            "title": "Include Channel Details",
            "type": "boolean",
            "description": "👤 **Get channel information?**\n\nIncludes:\n- Channel name and description\n- Subscriber count\n- Total channel views\n- Channel creation date\n\n💡 **Tip**: Useful for influencer research!",
            "default": true
          },
          "includeTags": {
            "title": "Include Video Tags",
            "type": "boolean",
            "description": "🏷️ **Extract video tags/keywords?**\n\nUseful for:\n- SEO research\n- Content strategy\n- Trend analysis",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Settings",
            "type": "object",
            "description": "🌐 **Proxy configuration** (Advanced)\n\nUse proxies to avoid rate limiting. Datacenter proxies are recommended for YouTube.\n\n💡 **Tip**: Leave default settings for best results!",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Concurrent Requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "⚡ **How many videos to process at once?**\n\n- **Lower (1-3)**: Slower but more reliable, cheaper\n- **Higher (5-10)**: Faster but may hit rate limits\n\n💡 **Recommended**: 3 for best balance",
            "default": 3
          },
          "maxRetries": {
            "title": "Max Retries on Error",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "🔄 **How many times to retry failed requests?**\n\nRecommended: 3 retries\n\n💡 **Tip**: Higher retries = more reliable but slower",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}