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

@mj-kiwi/podcast-index-api

v1.0.0

Published

A TypeScript client for the Podcast Index API with comprehensive type definitions and full API coverage

Readme

@mj-kiwi/podcast-index-api

A TypeScript client for the Podcast Index API.

Features

  • Full TypeScript support with comprehensive type definitions
  • Promise-based API client
  • Automatic authentication handling
  • Complete implementation of all major API endpoints
  • Robust test coverage

Installation

# Using npm
npm install @mj-kiwi/podcast-index-api

# Using yarn
yarn add @mj-kiwi/podcast-index-api

# Using pnpm
pnpm add @mj-kiwi/podcast-index-api

Authentication

To use the API, you'll need to register for API credentials at api.podcastindex.org. Once you have your API key and secret, you can initialize the client:

import { PodcastIndexClient } from '@mj-kiwi/podcast-index-api';

const client = new PodcastIndexClient({
  authKey: 'your-auth-key',
  secretKey: 'your-secret-key',
  // Optional configuration
  userAgent: 'YourApp/1.0',  // Default: PodcastIndexTS/1.0
  baseUrl: 'https://api.podcastindex.org/api/1.0'  // Default URL
});

Usage Examples

Search for Podcasts

// Search podcasts by term
const searchResults = await client.searchPodcasts({ 
  q: 'tech news',
  clean: true,
  max: 20
});

// Search podcasts by title
const titleResults = await client.searchPodcastsByTitle({ 
  q: 'daily tech news' 
});

// Search episodes by person
const personResults = await client.searchEpisodesByPerson({ 
  q: 'Adam Curry' 
});

Get Podcast Information

// Get podcast by feed ID
const podcast = await client.getPodcastByFeedId({ id: 920666 });

// Get podcast by feed URL
const podcastByUrl = await client.getPodcastByFeedUrl({ 
  url: 'https://feeds.example.com/podcast.xml' 
});

// Get podcast by iTunes ID
const podcastByItunes = await client.getPodcastByItunesId({ id: 1441923632 });

// Get podcast by GUID
const podcastByGuid = await client.getPodcastByGuid({ 
  guid: '917393e3-1b1e-5cef-ace4-edaa54e1f810' 
});

Get Episode Information

// Get episodes by feed ID
const episodes = await client.getEpisodesByFeedId({ 
  id: 920666,
  max: 10,
  fulltext: true
});

// Get recent episodes
const recentEpisodes = await client.getRecentEpisodes({ max: 20 });

// Get episodes by GUID
const episodeByGuid = await client.getEpisodesByGuid({
  guid: 'episode-guid',
  feedid: 920666
});

Value for Value Information

// Get value info by feed ID
const valueInfo = await client.getValueByFeedId({ id: 920666 });

// Get value info by feed URL
const valueByUrl = await client.getValueByFeedUrl({ 
  url: 'https://feeds.example.com/podcast.xml' 
});

Get Stats and Categories

// Get current stats
const stats = await client.getStats();

// Get categories list
const categories = await client.getCategories();

API Documentation

Search Endpoints

| Method | Description | | -------------------------- | ------------------------------------------------- | | searchPodcasts() | Search podcasts by term in title, author or owner | | searchPodcastsByTitle() | Search podcasts by title only | | searchEpisodesByPerson() | Search episodes mentioning a person |

Podcast Endpoints

| Method | Description | | ------------------------ | ----------------------------- | | getPodcastByFeedId() | Get podcast info by feed ID | | getPodcastByFeedUrl() | Get podcast info by feed URL | | getPodcastByGuid() | Get podcast info by GUID | | getPodcastByItunesId() | Get podcast info by iTunes ID | | getPodcastsByMedium() | Get podcasts by medium type |

Episode Endpoints

| Method | Description | | ------------------------- | ------------------------- | | getEpisodesByFeedId() | Get episodes by feed ID | | getEpisodesByFeedUrl() | Get episodes by feed URL | | getEpisodesByGuid() | Get episodes by GUID | | getEpisodesByItunesId() | Get episodes by iTunes ID | | getRecentEpisodes() | Get recent episodes |

Value Endpoints

| Method | Description | | --------------------- | -------------------------- | | getValueByFeedId() | Get value info by feed ID | | getValueByFeedUrl() | Get value info by feed URL |

Other Endpoints

| Method | Description | | ----------------- | ------------------------------ | | getStats() | Get current index statistics | | getCategories() | Get list of podcast categories |

Development

Setup

# Install dependencies
pnpm install

# Build the package
pnpm build

# Run tests
pnpm test

# Run tests with coverage
pnpm test:coverage

# Build type declarations
pnpm build:types

Testing

The project uses Vitest for testing. Tests are located in the test/ directory.

# Run tests in watch mode
pnpm test:watch

# Run tests with coverage report
pnpm test:coverage

License

ISC

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.