You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

ytmusic-api-proxy

Package Overview
Dependencies
Maintainers
0
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ytmusic-api-proxy

YouTube Music API

5.3.1
latest
Source
npmnpm
Version published
Weekly downloads
4
-97.3%
Maintainers
0
Weekly downloads
 
Created
Source

YTMusic API

License Languages Top Language Commit Activity Last commit

YouTube Music API (Unofficial) is a YouTube Music data scraper. It comes with TypeScript support API for return types. The package is published to NPM.

Motivation

I used to use youtube-music-api as my youtube music api data scraper. I liked looking into the source code of how it works but it never made sense to me. I also didn't like that there were no TypeScript annotations for the return types of methods. Because of this, I decided to build my own version of a youtube music api with TypeScript annotations, testing and written in a way I can understand.

Features

  • TypeScript Support for data return types
    • Data from YouTube can be inconsistent but YTMusic API has been tested and the data matches the TypeScript types 95% of the time
  • Scrape information directly from YouTube Music API
    • Search Suggestions
    • Songs
    • Videos
    • Artists
    • Albums
    • Playlists
    • Lyrics
    • Upcoming Songs

Installation

npm install ytmusic-api-proxy

Usage

Basic Usage

ES Modules (import):

import YTMusic from "ytmusic-api-proxy"

const ytmusic = new YTMusic()
await ytmusic.initialize(/* Optional: Custom cookies */)

ytmusic.search("Never gonna give you up").then(songs => {
	console.log(songs)
})

CommonJS (require):

const YTMusic = require("ytmusic-api-proxy").default

const ytmusic = new YTMusic()
await ytmusic.initialize(/* Optional: Custom cookies */)

ytmusic.search("Never gonna give you up").then(songs => {
	console.log(songs)
})

Using with HTTP Proxy

import YTMusic from "ytmusic-api-proxy"

// Option 1: Pass proxy config in constructor
const ytmusic = new YTMusic({
	protocol: "http", // or "https", "socks4", "socks5"
	host: "proxy.example.com",
	port: 8080,
	auth: { // Optional authentication
		username: "your_username",
		password: "your_password"
	}
})

await ytmusic.initialize()

// Option 2: Pass proxy config in initialize method
const ytmusic2 = new YTMusic()
await ytmusic2.initialize({
	proxy: {
		protocol: "http",
		host: "proxy.example.com", 
		port: 8080
	}
})

ytmusic.search("Never gonna give you up").then(songs => {
	console.log(songs)
})

Proxy Configuration

The proxy configuration supports:

  • HTTP/HTTPS proxies: Use protocol: "http" or protocol: "https"
  • SOCKS proxies: Use protocol: "socks4" or protocol: "socks5"
  • Authentication: Optional auth object with username and password
  • Flexible setup: Configure proxy in constructor or initialize method

Credits

A lot of the credit should go to youtube-music-api. I build this package as a refactored and tested version of youtube-music-api with TypeScript annotations

Testing

YTMusic API's data return types are tested with Bun Test. To run the tests, run the command

$ bun test

Built with

  • NodeJS
    • TypeScript
      • @types/tough-cookie
      • bun-types
      • tsup
      • typescript
    • Miscellaneous
      • @biomejs/biome
      • axios
      • tough-cookie
      • zod
      • zod-to-json-schema

Keywords

youtube

FAQs

Package last updated on 22 Jul 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts