{"id":22343095,"url":"https://github.com/brandonbothell/popyt","last_synced_at":"2025-07-30T01:33:01.664Z","repository":{"id":40294557,"uuid":"143616917","full_name":"brandonbothell/popyt","owner":"brandonbothell","description":"A very easy to use Youtube Data v3 API library.","archived":false,"fork":false,"pushed_at":"2025-07-28T06:45:22.000Z","size":252244,"stargazers_count":44,"open_issues_count":17,"forks_count":12,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-28T08:39:42.871Z","etag":null,"topics":["api-wrapper","promise","simple-api","typescript","video","wrapper","youtube","youtube-api","youtube-data","youtube-data-api"],"latest_commit_sha":null,"homepage":"https://brandonbothell.github.io/popyt/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brandonbothell.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["brandonbothell"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2018-08-05T13:52:32.000Z","updated_at":"2025-05-05T20:15:11.000Z","dependencies_parsed_at":"2025-05-04T03:23:50.796Z","dependency_job_id":"04897627-8c94-41b4-b161-1a3f86d1a4b5","html_url":"https://github.com/brandonbothell/popyt","commit_stats":{"total_commits":983,"total_committers":10,"mean_commits":98.3,"dds":0.6032553407934893,"last_synced_commit":"672c7554b15a834df858d0567ba9793942ab6085"},"previous_names":["jasonhaxstuff/popyt","jasonhaxstuff/better-youtube-api"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/brandonbothell/popyt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandonbothell%2Fpopyt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandonbothell%2Fpopyt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandonbothell%2Fpopyt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandonbothell%2Fpopyt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brandonbothell","download_url":"https://codeload.github.com/brandonbothell/popyt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brandonbothell%2Fpopyt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267792748,"owners_count":24144931,"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","status":"online","status_checked_at":"2025-07-29T02:00:12.549Z","response_time":2574,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["api-wrapper","promise","simple-api","typescript","video","wrapper","youtube","youtube-api","youtube-data","youtube-data-api"],"created_at":"2024-12-04T08:14:46.561Z","updated_at":"2025-07-30T01:32:56.641Z","avatar_url":"https://github.com/brandonbothell.png","language":"TypeScript","readme":"# Popyt\nWant to access data from the YouTube Data v3 API? Want a Node.js YouTube API wrapper with typings, promises, and caching? No problem! We've got ya covered. `npm i popyt`\n\n[![GitHub issues](https://img.shields.io/github/issues/brandonbothell/popyt.svg)](https://github.com/brandonbothell/popyt/issues)\n[![GitHub stars](https://img.shields.io/github/stars/brandonbothell/popyt.svg)](https://github.com/brandonbothell/popyt/stargazers)\n[![GitHub license](https://img.shields.io/github/license/brandonbothell/popyt.svg)](https://github.com/brandonbothell/popyt/blob/master/LICENSE)\n[![Release coverage](https://codecov.io/gh/brandonbothell/popyt/branch/release/graph/badge.svg?token=OAV13MIW6S)](https://app.codecov.io/gh/brandonbothell/popyt/tree/release)\n[![Actions status](https://github.com/brandonbothell/popyt/workflows/Test/badge.svg)](https://github.com/brandonbothell/popyt/actions)\n[![DeepScan grade](https://deepscan.io/api/teams/21522/projects/24946/branches/772144/badge/grade.svg)](https://deepscan.io/dashboard#view=project\u0026tid=21522\u0026pid=24946\u0026bid=772144)\n[![Downloads](https://img.shields.io/npm/dt/popyt.svg)](https://www.npmjs.com/package/popyt)\n[![Version](https://img.shields.io/npm/v/popyt.svg)](https://www.npmjs.com/package/popyt)\n\n# Examples\n## Try out the [5-minute tutorial](https://brandonbothell.github.io/popyt/docs/tutorial/intro) or the [example project](https://github.com/brandonbothell/popyt-example).\nHere are some basic methods ([try it on CodeSandbox](https://codesandbox.io/p/sandbox/fetch-videos-from-youtube-jmqlfq)):\n\nInstantiate the object:\n\n```js\nconst { YouTube } = require('popyt')\nconst youtube = new YouTube(apiKey)\n```\n\nInstantiate the object without caching:\n\n```js\nconst { YouTube } = require('popyt')\nconst youtube = new YouTube(apiKey, undefined, { cache: false })\n```\n\nGet a video by ID:\n\n```js\nconst video = await youtube.getVideo('dQw4w9WgXcQ')\nconsole.log(video)\n```\n\nYou can do the same thing with playlists, channels, and comments by replacing `Video` with any of them.  \n\nGet a video by URL:\n\n```js\nconst video = await youtube.getVideo('https://youtube.com/watch?v=dQw4w9WgXcQ')\nconsole.log(video)\n```\n\nGet a video by title (or similar title):\n\n```js\nconst video = await youtube.getVideo('never gonna give you up')\nconsole.log(video)\n```\n\nSearch videos:\n\n```js\nconst search = await youtube.searchVideos('never gonna give you up')\nconsole.log(search.items.map(v =\u003e v.title).join('\\n')) // titles of 50 beautiful videos\n```\n\nNote: This wrapper does not implement every feature of the YouTube API. If you would like anything added, feel free to open an issue. The limits imposed by the wrapper are not imposed by YouTube.\n","funding_links":["https://github.com/sponsors/brandonbothell"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrandonbothell%2Fpopyt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrandonbothell%2Fpopyt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrandonbothell%2Fpopyt/lists"}