Podcast Downloader is a free and open-source web application that allows users to search for and download podcasts. The project is built using Next.js, TypeScript, and Mongoose, with API support for both Apple Podcasts and Podcast Index.
You can access the live version at podcasttomp3.com.
You can access website analytics on the publish dashboard
- v2 (Default): Available at
podcasttomp3.com(uses Podcast Index API). - v1 (Legacy): Available at
podcasttomp3.com/v1(uses Apple Podcasts API).
- Search for podcasts using Apple Podcasts API (v1) or Podcast Index API (v2, default).
- Download podcast episodes directly from the UI.
- MongoDB integration using Mongoose for storing user preferences and downloads.
- Profile to store and maintain a list of downloaded episodes and favourite podcasts.
- Minimal server costs and secure since all fetching and downloading of episodes happens locally on the user's machine.
- Styled with ShadCN components.
- Local state managed with Zustand.
/public # Static assets
/src # Application source code
├── hooks # Custom React hooks
├── components # Re-usable components ("most" v1 only components are labelled clearly)
├── server actions # Server-side logic for Next.js
├── providers # Context providers for global state management
├── models # Mongoose models for database handling
├── app # Routing for Next.js app router
Ensure you have the following installed:
- Node.js 18+
- MongoDB (set up your own server)
- API keys for Apple Podcasts and/or Podcast Index
- Clone the repository:
git clone https://github.com/utlandingur/podcast-downloader.git cd podcast-downloader - Install dependencies (currently requires
--forcedue to React version conflicts, but this does not seem to cause issues):npm install --force
- Set up environment variables: Create a
.env.localfile and add:APPLE_PODCAST_API_KEY=your_apple_api_key PODCAST_INDEX_API_KEY=your_podcast_index_api_key PODCAST_INDEX_API_SECRET=your_podcast_index_api_secret MONGODB_URI=your_mongodb_connection_string
- Run the development server:
npm run dev
- Open
http://localhost:3000in your browser. - Search for podcasts using the search bar.
- Download episodes directly from the interface.
- All fetching and downloading of episodes is done locally on the machine to minimize running costs.
This project is completely free and open-source, and contributions are highly encouraged! If you'd like to help:
- Fork the repository on GitHub.
- Create a new branch for your changes:
git checkout -b feature-name
- Make your changes and commit them:
git commit -m "Added new feature" - Push to your fork:
git push origin feature-name
- Create a pull request on GitHub to merge your changes.
- Implement the favourites feature.
- Improve UI/UX for a better experience.
- Add support for additional podcast APIs.
This project is free and open-source, but commercial use is strictly prohibited.
If you have any questions or ideas, feel free to open an issue or start a discussion!