Goodreads Data Savior is a command-line tool written in Go that helps you extract and save detailed information from your Goodreads account — including book metadata, personal reviews, shelves, reading history, and more — in both JSON and CSV formats
While Goodreads provides users with an option to export their data, there have been documented cases where user access was suddenly restricted — sometimes permanently — without clear justification. In certain situations, users have been locked out of their accounts due to arbitrary enforcement of policies, often related to account origin or geopolitical assumptions (such as associations with U.S. sanctions), despite the fact that Goodreads' own Terms of Service make no mention of such restrictions.
When access is suddenly revoked, users lose the ability to export or retrieve their data. Goodreads Data Savior was developed to address this risk. It allows users to create a full backup of their data during the window between temporary access restrictions and possible account termination.
Goodreads Data Savior is designed to work only with public Goodreads profiles. If your profile is private, the tool will not be able to access your book data.
You can use Goodreads Data Savior in two ways:
🧩 Recommended for users without Go installed.
You can simply download and run the precompiled binary for your system — no need to install or compile the source code.
This tool uses Chromedp to control a headless browser. You must either:
- Have Google Chrome (or Chromium) installed on your system and accessible in your system path,
or - Use a headless Chrome image such as chromedp/headless-shell via Docker.
Steps:
-
Go to the Releases page and download the file for your platform.
-
(Linux/macOS only) Make the file executable:
chmod +x goodreads-savior-v1.0.0-linux
-
Run the program::
./goodreads-savior-v1.0.0-linux
If you have Go installed, you can build and run the tool directly from source.
Requirements:
- Go 1.24 or later
- Git
- Google Chrome (or a headless equivalent like chromedp/headless-shell)
Steps:
- Clone the repository:
git clone https://github.com/AminBhr/goodreads-data-savior.git cd goodreads-data-savior
- Build the project:
go build -o goodreads-savior
- Run the binary:
./goodreads-savior
After running the program, three output files are generated in the current directory:
This file closely resembles the official CSV export format provided by Goodreads.
You can use it to:
- Re-import your data back into Goodreads
- Migrate your library to other services like The StoryGraph, Hardcover, Bookmory or other similar services.
🟢 Most third-party book tracking apps that support Goodreads import will accept this file.
Goodreads supports the concept of re-reading a book.
However, their official export includes only one completion date per book — even if you've read it multiple times.
This can lead to inaccurate reading history if you're trying to visualize or analyze your reading habits over time.
This file fixes that.
For every book with a read count greater than one, this file lists all its recorded completion dates in individual rows, allowing you to:
- Manually update your reading history in Goodreads or other services
- Keep a personal record of exact reading dates for re-read titles
This is the complete, structured JSON representation of your book data.
Here are some planned enhancements for future:
- Add more unit and integration tests
- Use a dynamic User-Agent instead of a static one
- Provide plain-text versions of reviews (without HTML) for better compatibility with apps like Bookmory
- Support backup from non-public (private) Goodreads profiles
- Export user's saved Quotes as a separate dataset
This project is licensed under the MIT License.