npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

searchtify

v2.0.1

Published

a search package for spotify that requires no credentials!

Readme

disclaimer

the point of this package is NOT to provide some sort of "clean" API for spotify searching. maybe in the future.

the point of this package is to provide a wrapper for spotify's complex API. they are constantly changing parameters and endpoints. it's actually kind of annoying.

that being said, as of searchtify 2.0, it is typed! any modern IDE should give you suggestions that come directly from the API.

usage

usage is relatively simple:

import Spotify from 'searchtify';

const spotify = new Spotify();

const search = await spotify.search('Blinding Lights');
console.log(search.tracksV2.items[0].item.data);

and its album:

// uri format: spotify:album:4yP0hdKOZPNshxUOjY0cZj
const album = await spotify.getAlbum(search.tracksV2.items[0].item.data.albumOfTrack.uri);
console.log(album);

or, for example, an artist:

// uri format: spotify:artist:1Xyo4u8uXC1ZmMpatF05PJ (my goat the weeknd)
const artist = await spotify.getArtist(search.tracksV2.items[0].item.data.artists.items[0].uri);
console.log(artist);

you can limit searches to X number of things PER CATEGORY, which in testing notably does not make any impact on response times:

const search2 = await spotify.search('Hurry Up Tomorrow', { limit: 25 });
console.log(search2.tracksV2.items);

that would return 25 albums, 25 songs, etc

notable parameters include:

  • limit - number - the limit of results for each items array
  • offset - number - the offset to start at
  • numberOfTopResults - number - the number of items in topResultsV2

if there's something you need from here, enable it as part of the search parameters

you can also search for the things on the homepage:

const popular = await spotify.getPopular();
console.log(popular[0].data.title.translatedBaseText + ':');
console.log(popular[0].sectionItems.items[0].content.data);

the structure of the response is the homepage categories and data going down.

getPopular accepts one argument, which is a timezone in the format of "America/New_York".

it defaults to the user's timezone.

you can set a custom user agent using setUserAgent:

spotify.setUserAgent('putting something like this in the useragent will probably flag your IP');

credits

the secrets directory of this repository is code created by Thereallo1026 (repository deleted) the original proof of concept was created by Michal Szymanski the types come from NuclearPlayer, which was created by nukeop

thanks to all of you; y'all rock!