fetchtv

May 24, 2026 · View on GitHub

NPM Version Docker Pulls License: GPL v3 GitHub Repository

Download Fetch TV PVR recordings over the local network.

No Fetch credentials or cloud account required.

Based on lingfish/fetchtv-cli (Python) which is based on jinxo13/FetchTV-Helpers (also Python).

Contents

Quick start

List recordings on the box

docker run --rm --network host furey/fetchtv recordings

Download new episodes of a show to the host

docker run --rm --network host \
  -v /path/on/host:/downloads \
  furey/fetchtv recordings \
  --folder "Bluey" \
  --save /downloads

Auto-discover the box on the LAN

docker run --rm --network host furey/fetchtv info

Browse shows on the box

docker run --rm --network host furey/fetchtv shows

Why --network host?

Fetch TV discovery uses SSDP multicast (239.255.255.250:1900), which doesn't traverse Docker's default bridge network. Host networking is the simplest fix.

If you already know your box's IP, skip discovery and run on bridge networking:

docker run --rm furey/fetchtv recordings --ip 192.168.1.20

Common flags

FlagPurpose
--ip <addr>Target a specific Fetch TV IP, skip discovery
--port <num>Fetch TV port (default 49152)
--folder <name>Filter to a specific show/folder (repeatable)
--save <path>Output directory for downloads
--overwriteRe-download files that already exist locally
--debugVerbose UPnP/SSDP logs

Full CLI reference, path-template variables, and the programmatic ESM API are documented in the GitHub README.

Programmatic use

fetchtv.js is import-safe—docker run is one way to use it, but the same module powers Node-based watchers, dashboards, and integrations. See the Programmatic API section upstream.

Disclaimer

This project:

  • Is licensed under the GNU GPLv3 License.
  • Is not affiliated with or endorsed by Fetch TV.
  • Is a derivative work based on lingfish/fetchtv-cli.
  • Is written with the assistance of AI and may contain errors.
  • Is intended for educational and experimental purposes only.
  • Is provided as-is with no warranty—please use at your own risk.

Support

If you've found this project helpful consider supporting my work through:

Buy Me a Coffee | GitHub Sponsorship

Contributions help me continue developing and improving this tool, allowing me to dedicate more time to add new features and ensuring it remains a valuable resource for the community.