YouTube Music Video Scraper
Pricing
from $2.99 / 1,000 music videos
YouTube Music Video Scraper
Search and browse YouTube Music videos with first-party YouTube Music endpoints, pagination, deduplication, and optional player metadata.
YouTube Music Video Scraper
Pricing
from $2.99 / 1,000 music videos
Search and browse YouTube Music videos with first-party YouTube Music endpoints, pagination, deduplication, and optional player metadata.
You can access the YouTube Music Video Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "2.0", "x-build-id": "1q62tk3hOSEDm3gkz" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/w3crawler~youtube-music-video-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-w3crawler-youtube-music-video-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/w3crawler~youtube-music-video-scraper/runs": { "post": { "operationId": "runs-sync-w3crawler-youtube-music-video-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/w3crawler~youtube-music-video-scraper/run-sync": { "post": { "operationId": "run-sync-w3crawler-youtube-music-video-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": { "searchQueries": { "title": "Music-video search queries", "maxItems": 100, "type": "array", "description": "Public YouTube keyword phrases. At least one searchQueries or startUrls entry is required. When both are supplied, startUrls are processed first and all sources share the maxItems cap.", "items": { "type": "string", "minLength": 1, "maxLength": 200 } }, "startUrls": { "title": "Playlist, browse, or channel URLs", "maxItems": 100, "type": "array", "description": "Public YouTube or YouTube Music playlist, browse, or channel URLs. They are processed before searchQueries when both are supplied, and each start URL uses one public page.", "items": { "type": "string" } }, "maxItems": { "title": "Maximum total results", "minimum": 1, "maximum": 100, "type": "integer", "description": "Maximum unique public video rows retained across all start URLs and search queries combined.", "default": 20 }, "maxPages": { "title": "Maximum search pages per source", "minimum": 1, "maximum": 10, "type": "integer", "description": "Maximum number of public search-page requests per search query, from 1 to 10. Start URLs use one public page and embedded continuation markers are reported but not followed.", "default": 3 }, "maxRetries": { "title": "Request retries", "minimum": 0, "maximum": 3, "type": "integer", "description": "Retries the same public request with the same direct or configured-proxy transport context.", "default": 1 }, "requestTimeoutSecs": { "title": "Request timeout", "minimum": 15, "maximum": 180, "type": "integer", "description": "Timeout in seconds for each public page attempt.", "default": 60 }, "requestDelayMs": { "title": "Delay between pages (ms)", "minimum": 0, "maximum": 5000, "type": "integer", "description": "Bounded delay between successive public search-page requests. Start-page and watch-page requests are not paginated by this setting.", "default": 250 }, "countryCode": { "title": "Country code", "pattern": "^[A-Za-z]{2}$", "type": "string", "description": "Two-letter locale context, for example US, GB, or IN.", "default": "US" }, "languageCode": { "title": "Language code", "pattern": "^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})?$", "type": "string", "description": "Language context, such as en, es, or pt-BR.", "default": "en" }, "includePlayerDetails": { "title": "Include public watch-page metadata", "type": "boolean", "description": "Enrich each result from the public watch page with descriptions, dates, caption-language summaries, and format counts; signed caption/media URLs are never stored. Unavailable enrichment is recorded as a diagnostic when diagnostics are enabled.", "default": true }, "enableProxyFallback": { "title": "Enable proxy fallback", "type": "boolean", "description": "After a direct public-page or watch-page failure, try one ordinary request through the configured Apify Proxy. This is a fallback only; it does not bypass authentication, CAPTCHAs, or access controls.", "default": true }, "includeDiagnostics": { "title": "Include diagnostics", "type": "boolean", "description": "Write bounded page/player diagnostics with exactly url, error, errorCode, and scrapedAt.", "default": true }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Optional account-authorized Apify Proxy or credential-free HTTP/SOCKS URLs.", "default": { "useApifyProxy": false }, "additionalProperties": 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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for YouTube Music Video Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: