{"id":13998474,"url":"https://github.com/kauderk/youtube-browser-api","last_synced_at":"2025-04-16T15:49:46.526Z","repository":{"id":82427526,"uuid":"603468605","full_name":"kauderk/youtube-browser-api","owner":"kauderk","description":"Retrieve YouTube data from your Browser","archived":false,"fork":false,"pushed_at":"2023-04-24T06:07:51.000Z","size":543,"stargazers_count":13,"open_issues_count":2,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T08:39:39.821Z","etag":null,"topics":["endpoint","javascript","scraper","transcript","video-data","youtube","youtube-api"],"latest_commit_sha":null,"homepage":"https://youtube-browser-api.netlify.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kauderk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-02-18T15:57:41.000Z","updated_at":"2023-12-10T05:21:07.000Z","dependencies_parsed_at":"2024-01-15T19:58:21.870Z","dependency_job_id":null,"html_url":"https://github.com/kauderk/youtube-browser-api","commit_stats":{"total_commits":70,"total_committers":1,"mean_commits":70.0,"dds":0.0,"last_synced_commit":"bfb10d40a6514fa52d5d9356273d9a6183f5d64d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauderk%2Fyoutube-browser-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauderk%2Fyoutube-browser-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauderk%2Fyoutube-browser-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauderk%2Fyoutube-browser-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kauderk","download_url":"https://codeload.github.com/kauderk/youtube-browser-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249256919,"owners_count":21239079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["endpoint","javascript","scraper","transcript","video-data","youtube","youtube-api"],"created_at":"2024-08-09T19:01:42.184Z","updated_at":"2025-04-16T15:49:46.509Z","avatar_url":"https://github.com/kauderk.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"Fully typed endpoints that parse HTML/JSON data from youtube.com from any environment.\n\n# [YouTube Browser API](https://youtube-browser-api.netlify.app/)\n\u003ca href=\"https://youtube-browser-api.netlify.app/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/youtube browser api-website-green\"\u003e\u003c/a\u003e\n\n## Features\n- Get data on YouTube videos, channels, playlists, heatmap, chapters and more\n- Get YouTube video transcripts\n- Simple and user-friendly API wrapper\n- Works from any environment\n\n# Install \u003ca href=\"https://www.npmjs.com/package/youtube-browser-api\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/npm-red\"\u003e\u003c/a\u003e\n```bash\nnpm install youtube-browser-api\n```\n###### `REST API is also available`\n\n---\n\n## Endpoints\n\n\n### **[/query](https://youtube-browser-api.netlify.app/query/page)**: Extract data by passing schemas on `video ids`:\n\n- 🔥 **You can make granular request as complex as the Javascript Object Notation allows**.\u003c/br\u003e[Go to the playground](https://stackblitz.com/edit/youtube-browser-api-client-playground?file=index.ts)\n\n\u003ca href=\"https://youtube-browser-api.netlify.app/query?id=ZwLekxsSY3Y\u0026schema=%7B%22playerResponse%22%3A%7B%22videoDetails%22%3A%7B%22title%22%3A%22youtube-browser-api-schema-id%22%2C%22shortDescription%22%3A%22youtube-browser-api-schema-id%22%2C%22thumbnail%22%3A%7B%22thumbnails%22%3A%7B%224%22%3A%7B%22url%22%3A%22youtube-browser-api-schema-id%22%7D%7D%7D%7D%7D%7D\u0026paths=playerResponse.streamingData.formats.0.url\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/test endpoint-query-green\"\u003e\u003c/a\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📚 Response Reference - \u003cstrong\u003eYour IDE will autocomplete everthing :)\u003c/strong\u003e \u003c/summary\u003e\n\n| JSON | Interface | Source Code |\n|--------|--------|--------|\n| Examine the shape of the Response from a Video using a JSON Viewer | The autogenerated Interfaces for the `playerResponse, videoData, apiToken, context and transcriptMeta`| The source code from a YouTube Video website - [how to](https://www.lifewire.com/view-web-source-code-4151702) |\n| [Dummy](https://jsonhero.io/j/NFIdMOFrHINJ) - [Skeleton](https://jsonhero.io/j/vrmFSgjGNLFv) | [Inspect](https://github.com/kauderk/youtube-browser-api/blob/main/src/routes/data/types/player-response.ts) | view-source:https://www.youtube.com/watch?v=s-I_dV5oY8c | \n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📦 Visual Response Reference\u003c/summary\u003e\n\n![Excalidraw Link](https://user-images.githubusercontent.com/65237382/233469077-b5aa5878-6b1f-46c7-8d19-88809adc23b6.png) \u003ca href='https://excalidraw.com/#json=0hDFTajVxa2oO7s34kMef,M_jPO1x4IoE_Eqz2RGvPVA' title='Excalidraw Link'\u003e⠀\u003c/a\u003e\n\n\u003c/details\u003e\n\n\n\u003cbr/\u003e\n\n\u003cdetails open\u003e\u003csummary\u003eCode \u0026lt;/\u0026gt;\u003c/summary\u003e\n\n```ts\n// typescript\nimport Api from 'youtube-browser-api'\n\nconst myVideoQuery = await Api.query({\n    id: 'ZwLekxsSY3Y',\n    schema: {\n        playerResponse: {\n            videoDetails: {\n                title: true,\n                shortDescription: true,\n                thumbnail: {\n                    thumbnails: {\n                        1: {\n                            url: true,\n                            height: true,\n                            width: true,\n                        },\n                    },\n                },\n            },\n        },\n    },\n})\n```\n\u003cdetails\u003e\u003csummary\u003e🚧 Keep in mind\u003c/summary\u003e\n\n**For complex queries you may** enable `tsAny: true` to bypass typechecking.\u003cbr/\u003e Help to solve the issue [https://github.com/kauderk/youtube-browser-api/issues/1](https://github.com/kauderk/youtube-browser-api/issues/1)\n\n\u003c/details\u003e\n\u003cbr/\u003e\n\n\u003cdetails\u003e\u003csummary\u003eJavascript\u003c/summary\u003e\n\n```js\n// javascript\nconst partialChapterQuery = {\n    id: 'ZwLekxsSY3Y',\n    schema: {\n        initialData: { playerOverlays: { playerOverlayRenderer: { decoratedPlayerBarRenderer: { decoratedPlayerBarRenderer: { playerBar: { multiMarkersPlayerBarRenderer: { markersMap: { 0: { value: { chapters: { 1: { chapterRenderer: { title: true, }, }, }, }, }, }, }, }, }, }, }, }, }\n    },\n    // optional paths|paths[]\n    paths: 'playerResponse.streamingData.formats.0.url',\n};\nconst fetchUrl = 'https://youtube-browser-api.netlify.app/query?' + new URLSearchParams(partialChapterQuery).toString()\n// https://youtube-browser-api.netlify.app/query?id=ZwLekxsSY3Y\u0026paths=playerResponse.streamingData.formats.0.url\nfetch(fetchUrl)\n    .then(res =\u003e res.json())\n    .then(console.log)\n```\n\u003c/details\u003e\n\u003c/details\u003e\n\n---\n\n### **[/content](https://youtube-browser-api.netlify.app/content/page)**: Extract all or some video data by a video ID.\n\n\u003ca href=\"https://youtube-browser-api.netlify.app/content?id=pOEyYwKtHJo\u0026params=title\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/test endpoint-params=title-green\"\u003e\u003c/a\u003e\n\n\u003cdetails\u003e\u003csummary\u003eCode \u0026lt;/\u0026gt;\u003c/summary\u003e\n\n```ts\n// typescript\nimport Api from 'youtube-browser-api'\n\nconst titleData = await Api.content({\n    id: 'pOEyYwKtHJo',\n    params: ['title'],\n})\n```\n\n\u003cdetails\u003e\u003csummary\u003eJavascript\u003c/summary\u003e\n\n```js\n// javascript\nconst query = {\n    id: 'pOEyYwKtHJo',\n    params: ['title'], // ['title','suggestions','storyboard','heatmapPath','isLive','channel','description','initialData','playerResponse','apiToken','context','auto_chapters','chapters','heatmap']\n}\nconst fetchUrl = `https://youtube-browser-api.netlify.app/content?id=${query.id}\u0026params=` + query.params.join()\n// https://youtube-browser-api.netlify.app/content?id=pOEyYwKtHJo\u0026params=title\nfetch(fetchUrl)\n    .then(res =\u003e res.json())\n    .then(console.log)\n```\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n---\n\n### **[/data](https://youtube-browser-api.netlify.app/data/page)**: Search for narrower data by passing keywords in the query parameter. For example `search`:\n\n\u003ca href=\"https://youtube-browser-api.netlify.app/data/search?keyword=record\u0026withPlaylist=false\u0026limit=1\u0026option=\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/test endpoint-keyword=record-green\"\u003e\u003c/a\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003eCode \u0026lt;/\u0026gt;\u003c/summary\u003e\n\n```ts\n// typescript\nimport Api from 'youtube-browser-api'\n\nconst mySearch = await Api.data('search', {\n    keyword: 'AI',\n    limit: 1,\n})\n```\n\u003cdetails\u003e\u003csummary\u003eJavascript\u003c/summary\u003e\n\n```js\n// javascript\nconst query = {\n    keyword: 'AI',\n    withPlaylist: false,\n    limit: 1,\n    option: ''\n};\nconst fetchUrl = 'https://youtube-browser-api.netlify.app/data/search?' + new URLSearchParams(query).toString()\n// https://youtube-browser-api.netlify.app/data/search?keyword=record\u0026withPlaylist=false\u0026limit=1\u0026option=\nfetch(fetchUrl)\n    .then(res =\u003e res.json())\n    .then(console.log)\n```\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n---\n\n### **[/transcript](https://youtube-browser-api.netlify.app/transcript/page)**: Extract transcripts by passing video IDs in the query parameter. For example `video ids`:\n\n\u003ca href=\"https://youtube-browser-api.netlify.app/transcript?videoId=pOEyYwKtHJo\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/test endpoint-transcript-green\"\u003e\u003c/a\u003e\n\n\u003cdetails\u003e\u003csummary\u003eCode \u0026lt;/\u0026gt;\u003c/summary\u003e\n\n```ts\n// typescript\nimport Api from 'youtube-browser-api'\n\nconst myTranscript = await Api.transcript({\n    videoId: 'pOEyYwKtHJo',\n})\n```\n\u003cdetails\u003e\u003csummary\u003eJavascript\u003c/summary\u003e\n\n```js\n// javascript\nconst query = {\n    videoId: 'pOEyYwKtHJo'\n};\nconst fetchUrl = 'https://youtube-browser-api.netlify.app/transcript?' + new URLSearchParams(query).toString()\n// https://youtube-browser-api.netlify.app/transcript?videoId=pOEyYwKtHJo\nfetch(fetchUrl)\n    .then(res =\u003e res.json())\n    .then(console.log)\n```\n\u003c/details\u003e\n\n\u003c/details\u003e\n\n---\n\n## Description\nThis YouTube API Wrapper website offers a simple and user-friendly interface to access YouTube's API. It is tailored to the needs of developers; it provides data through fully typed endpoints. Whether you need to extract video analytics, search for specific data, or extract transcripts, the API wrapper can help you do it quickly and easily.\n\n### License\nThis project is licensed under the [MIT License](https://github.com/kauderk/youtube-browser-api/blob/main/LICENSE).\n\n\u003ca href=\"https://youtube-browser-api.netlify.app/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Try it out now!-youtube browser api-blue\"\u003e\u003c/a\u003e\n\n\n\u003cmeta name=\"description\" content=\"Access YouTube's videos, channels, playlists and more through our YouTube API Wrapper website. Our API wrapper offers content, data, and transcript endpoints with a simple interface tailored to your needs.\" /\u003e\n\u003cmeta name=\"keywords\" content=\"YouTube API, YouTube API Wrapper, video data, transcripts, channels, playlists, data endpoints, content endpoints, HTML data, simple interface, user-friendly.\" /\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauderk%2Fyoutube-browser-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkauderk%2Fyoutube-browser-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauderk%2Fyoutube-browser-api/lists"}