Suno Harvester is an automated Python utility designed to bypass UI-based limitations and securely harvest your entire Suno AI library of generated audio clips. It leverages Playwright via the Chrome Debugging Protocol to piggyback on your existing authenticated session, capturing backend metadata over the network layer and then systematically bulk-downloading the MP3s and metadata directly to your local drive.
- Session Hijacking (The Good Kind): Connects to your existing Chrome instance to bypass authentication hurdles.
- Deep Library Scraping: Intercepts
graphql/apiendpoints natively via Playwright CDP to build a local ledger of every clip. - Aggressive Paginator: Automatically simulates endless scrolling, ensuring it reaches the very bottom of libraries containing thousands of songs.
- Safe Asynchronous Downloads: Downloads MP3 files systematically, automatically naming them with cleaned titles and injecting robust metadata sidecar files (
_metadata.txt) for each song. - Crash Resilient: Ledger-based processing means you can stop the download phase anytime. Rerunning the script will seamlessly pick up exactly where it left off.
- Google Chrome installed.
- Python 3.10+ installed.
- Install the Python dependencies:
pip install -r requirements.txt
- Install the Playwright chromium binaries (required for the underlying automation engine):
playwright install chromium
Close all instances of Google Chrome. Open a terminal and launch Chrome with the remote debugging port active:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\ChromeDebug"In the newly opened Chrome window, navigate to Suno.com, log into your account, and open your "Library" page.
You can run the harvester with three different modes depending on what you need to do:
- Harvest Metadata Only (Builds the ledger by capturing network traffic while scrolling):
python suno_harvester.py --harvest
- Download Assets Only (Reads the ledger and downloads the physical MP3s to your drive):
python suno_harvester.py --download
- Do Both Sequentially:
python suno_harvester.py --all
You can easily modify output paths at the top of the suno_harvester.py file:
BASE_DIR = Path(r"E:\newsuno")
DOWNLOAD_DIR = BASE_DIR / "Audio"This script was built as a personal archive tool. Please ensure you are complying with the platform's Terms of Service when archiving massive amounts of audio, and respect standard API rate limits.
This project is released under the R.U.L.E.S. (Regulatory User License and Enforced Standards). See LICENSE for full terms.