Skip to content

A CLI tool to export your Goodreads data before it’s gone — even when account access is restricted.

License

Notifications You must be signed in to change notification settings

AminBhr/goodreads-data-savior

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Goodreads Data Savior

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

❓ Why This Tool Was Created

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.

🔧 How to use

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:


✅ Option 1: Use Precompiled Binary

🧩 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.

⚠️ Important Requirement:
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:

  1. Go to the Releases page and download the file for your platform.

  2. (Linux/macOS only) Make the file executable:

    chmod +x goodreads-savior-v1.0.0-linux
  3. Run the program::

    ./goodreads-savior-v1.0.0-linux

🛠 Option 2: Build from Source

If you have Go installed, you can build and run the tool directly from source.


Requirements:


Steps:

  1. Clone the repository:
    git clone https://github.com/AminBhr/goodreads-data-savior.git
    cd goodreads-data-savior
  2. Build the project:
    go build -o goodreads-savior
  3. Run the binary:
    ./goodreads-savior

📁 Output Files

After running the program, three output files are generated in the current directory:


1. USERNAME_goodreads_library_export.csv

This file closely resembles the official CSV export format provided by Goodreads.
You can use it to:

🟢 Most third-party book tracking apps that support Goodreads import will accept this file.


2. USERNAME_goodreads_read_history_data.csv

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

3. USERNAME_goodreads_library_export.json

This is the complete, structured JSON representation of your book data.

📅 To-Do

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

📜 License

This project is licensed under the MIT License.

About

A CLI tool to export your Goodreads data before it’s gone — even when account access is restricted.

Resources

License

Stars

Watchers

Forks

Packages

No packages published