itch-dl
Version:
Bulk download games from itch.io - TypeScript implementation
345 lines (233 loc) โข 10.4 kB
Markdown
<div align="center">
# ๐ฎ itch-dl
[](https://www.npmjs.com/package/itch-dl)
[](https://www.npmjs.com/package/itch-dl)
[](https://github.com/Wal33D/itch-dl/blob/main/LICENSE)
[](https://nodejs.org/)
[](https://github.com/Wal33D/itch-dl/actions/workflows/ci.yml)
**Bulk download games from [itch.io](https://itch.io/) with ease**
_TypeScript implementation for modern Node.js environments_
[๐ Quick Start](#-quick-start) โข
[๐ Documentation](https://github.com/Wal33D/itch-dl/wiki) โข
[๐พ Installation](#-installation) โข [๐ฏ Examples](#-usage-examples) โข
[๐ Troubleshooting](#-troubleshooting)
</div>
---
## โจ Features
### ๐ฏ What You Can Download
- ๐ **Game Jams** - All submissions from any
[itch.io game jam](https://itch.io/jams)
- ๐ฅ **Browse Pages** - Popular games, newest releases, or games by specific
tags
- ๐ **Collections** - Your personal collections or any public collection
- ๐ **Your Library** - Everything you own from
[your purchases](https://itch.io/my-purchases)
- ๐จโ๐ป **Creator Pages** - Complete catalogues from specific developers
- ๐ฎ **Individual Games** - Single games or specific titles
### ๐ ๏ธ Powerful Features
- โก **Parallel Downloads** - Speed up bulk downloads with concurrent processing
- ๐ฏ **Smart Filtering** - Filter by platform, file type, or custom patterns
- ๐ **Multiple Input Formats** - URLs, JSON files, or plain text lists
- ๐ **Resume Support** - Skip already downloaded games automatically
- ๐ **Web Mirroring** - Optionally download game page assets
- โ๏ธ **Configuration Profiles** - Save settings for different use cases
---
## ๐ Quick Start
### 1๏ธโฃ Install globally via npm
```bash
npm install -g itch-dl
```
### 2๏ธโฃ Get your itch.io API key
Visit [itch.io API Keys](https://itch.io/user/settings/api-keys) and generate a
new key
### 3๏ธโฃ Start downloading!
```bash
# Download a game jam
itch-dl https://itch.io/jam/gmtk-2023 --api-key YOUR_API_KEY
# Download your entire library
itch-dl https://itch.io/my-purchases --api-key YOUR_API_KEY
```
> ๐ก **Tip**: Save your API key in a
> [config file](https://github.com/Wal33D/itch-dl/wiki/Configuration) to avoid
> typing it every time!
---
## ๐พ Installation
### Prerequisites
- **Node.js 18+** - [Download here](https://nodejs.org/)
- **npm** (comes with Node.js)
- **itch.io account** with [API key](https://itch.io/user/settings/api-keys)
### ๐ฆ Install from npm (Recommended)
```bash
npm install -g itch-dl
```
### ๐ง Install from source
```bash
git clone https://github.com/Wal33D/itch-dl.git
cd itch-dl
npm install && npm run build
```
๐ **Need help?** Check the
[Installation Guide](https://github.com/Wal33D/itch-dl/wiki/Installation) for
detailed instructions.
---
## ๐ฏ Usage Examples
### Basic Downloads
```bash
# Individual games (tested working examples)
itch-dl https://baraklava.itch.io/manic-miners --api-key YOUR_KEY
itch-dl https://ncase.itch.io/anxiety --api-key YOUR_KEY
itch-dl https://bunmuen.itch.io/shiftatmidnight --api-key YOUR_KEY
# Game jam with all submissions
itch-dl https://itch.io/jam/gmtk-2023 --api-key YOUR_KEY
# Your entire game library
itch-dl https://itch.io/my-purchases --api-key YOUR_KEY
# Specific creator's games
itch-dl https://ncase.itch.io --api-key YOUR_KEY
itch-dl https://bunmuen.itch.io --api-key YOUR_KEY
# Public collection (real example)
itch-dl https://itch.io/c/215689/public-collection --api-key YOUR_KEY
```
### Filtered Downloads
```bash
# Only Windows games
itch-dl https://itch.io/jam/gmtk-2023 --filter-files-platform windows --api-key YOUR_KEY
# Only ZIP files
itch-dl https://itch.io/jam/brackeys-12 --filter-files-glob "*.zip" --api-key YOUR_KEY
# Multiple platforms
itch-dl https://itch.io/my-purchases --filter-files-platform windows mac linux --api-key YOUR_KEY
```
### Advanced Usage
```bash
# Fast parallel downloads (3 threads)
itch-dl https://itch.io/jam/gmtk-2023 --parallel 3 --api-key YOUR_KEY
# Just list URLs without downloading
itch-dl https://itch.io/jam/brackeys-12 --urls-only --api-key YOUR_KEY
# Download to specific directory
itch-dl https://itch.io/my-purchases --download-to "/games/itch" --api-key YOUR_KEY
# Mirror web assets (images, etc.)
itch-dl https://some-game.itch.io/game --mirror-web --api-key YOUR_KEY
```
### Using Configuration Files
```bash
# Use a specific profile
itch-dl https://itch.io/jam/gmtk-2023 --profile windows-only
# See all options
itch-dl --help
```
---
## ๐ Troubleshooting
### Common Issues
#### "You did not provide an API key"
- Get your API key from
[itch.io API Keys](https://itch.io/user/settings/api-keys)
- Pass it with `--api-key YOUR_KEY` or set `ITCH_API_KEY` environment variable
#### "TypeError: data.owned*keys is not iterable" *(Fixed in v0.6.4)\_
- This was resolved in version 0.6.4
- Update to the latest version: `npm update -g itch-dl`
#### Empty results for my-purchases
- This is normal if you haven't purchased any games on itch.io
- Free games need to be downloaded individually by URL
#### Collection downloads fail
- Ensure the collection is public
- Private collections require you to be the owner or have access
#### Network timeouts
- Use `--parallel 1` to reduce concurrent requests
- Check your internet connection and try again
### Getting Help
If you encounter issues:
1. Check the [GitHub Issues](https://github.com/Wal33D/itch-dl/issues)
2. Review the [wiki documentation](https://github.com/Wal33D/itch-dl/wiki)
3. Create a new issue with details about your problem
### ๐งช Help Wanted: Testing
**We need community help!** We've tested extensively with free games, but need
testers who have:
- **๐ฐ Purchased games** on itch.io to test paid game downloads
- **๐ฆ Bundle access** to test bundle functionality (currently unsupported)
- **๐ Access-restricted games** to verify behavior
See our
[Testing Request Discussion](https://github.com/Wal33D/itch-dl/discussions) or
check the
[Tested Games wiki](https://github.com/Wal33D/itch-dl/wiki/Tested-Games#-help-wanted-advanced-testing)
for details!
---
## ๐ Documentation
| ๐ Guide | Description |
| ------------------------------------------------------------------------- | ------------------------------------------------------ |
| [Usage Guide](https://github.com/Wal33D/itch-dl/wiki/Usage) | Complete command-line reference with examples |
| [API Keys](https://github.com/Wal33D/itch-dl/wiki/API-Keys) | How to get and securely use your itch.io API key |
| [Configuration](https://github.com/Wal33D/itch-dl/wiki/Configuration) | Config files, profiles, and environment variables |
| [Installation](https://github.com/Wal33D/itch-dl/wiki/Installation) | Detailed installation instructions and troubleshooting |
| [Tested Games](https://github.com/Wal33D/itch-dl/wiki/Tested-Games) | List of games and URLs verified to work with itch-dl |
| [Troubleshooting](https://github.com/Wal33D/itch-dl/wiki/Troubleshooting) | Common issues and their solutions |
---
## โ ๏ธ Important Notes
### โ
What This Tool Does
- Downloads games you **legitimately own** or have access to
- Respects itch.io's terms of service and rate limits
- Provides the same access as the official itch.io app
- **Requires an API key for all operations** - even fetching public game information
### โ What This Tool Does NOT Do
- Download paid games for free (you must own them)
- Bypass access restrictions or DRM
- Download from bundles directly
([workaround available](https://github.com/Wal33D/itch-dl/wiki/Usage#bundles))
### ๐ง Current Limitations
- **Access-restricted games** - Not supported
([#16](https://github.com/Wal33D/itch-dl/issues/16))
- **Bundles** - Requires workaround
([#11](https://github.com/Wal33D/itch-dl/issues/11))
---
## ๐ง Development
### Building & Testing
```bash
git clone https://github.com/Wal33D/itch-dl.git
cd itch-dl
npm install
# Development commands
npm run build # Compile TypeScript
npm test # Run test suite
npm run clean # Clean build artifacts
```
### Running from Source
```bash
npm run build
node build/src/index.js --help
```
---
## ๐ค Contributing
We welcome contributions! Here's how to get started:
1. ๐ด **Fork** the repository
2. ๐ฟ **Create** a feature branch: `git checkout -b feature/amazing-feature`
3. ๐ป **Make** your changes
4. โ
**Test** your changes: `npm test`
5. ๐ **Commit** your changes: `git commit -m 'Add amazing feature'`
6. ๐ **Push** to your branch: `git push origin feature/amazing-feature`
7. ๐ **Open** a Pull Request
### Development Guidelines
- Follow existing code style and conventions
- Add tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting
---
## ๐ License
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE)
file for details.
---
## ๐ Credits & Acknowledgments
- **Author**: [Wal33D](https://github.com/Wal33D)
- **Contributors**:
[See all contributors](https://github.com/Wal33D/itch-dl/graphs/contributors)
- **Inspired by**: The original Python implementation concept
---
## ๐ Links & Resources
<div align="center">
[](https://github.com/Wal33D/itch-dl/wiki)
[](https://www.npmjs.com/package/itch-dl)
[](https://github.com/Wal33D/itch-dl/issues)
[](https://github.com/Wal33D/itch-dl/discussions)
</div>
---
<div align="center">
**Made with โค๏ธ for the itch.io community**
_If this tool helped you, consider โญ starring the repository!_
</div>