Skip to main content

Unofficial Goodreads tools for exporting reading timelines and pages/day charts.

Project description

Goodreads Tools (unofficial)

A pragmatic, scriptable CLI that turns your Goodreads shelves into dashboard-ready data. It exports clean JSONL for your reading timeline (including rereads), estimates pages per day, and renders a text-based bar chart you can use in a terminal or CI logs.

What it does

  • Export your reading timeline with start/end dates and page counts.
  • Generate pages-per-day charts from that timeline (even with overlapping reads).
  • Pull book metadata and public shelf data without needing API keys.
  • Keep everything scriptable with JSON/CSV output.

How it works

  • Public data comes from Goodreads RSS feeds and book pages.
  • For read-start/end dates, the CLI scrapes the public review list HTML (the read shelf exposes those fields).
  • Page counts come from RSS when available and fall back to book pages if needed.
  • Auth helpers exist for future write operations, but are not required for read-only features.

Sample: last 10 finished books (read shelf)

Title Started Finished Pages Book ID
A Christmas Carol 2025-12-22 2025-12-30 184 5326
A Philosophy of Software Design 2025-08-01 2025-12-30 184 58665335
The Wright Brothers 2025-10-13 2025-10-14 320 22609391
The Secret of Our Success: How Culture Is Driving Human Evolution, Domesticating Our Species, and Making Us Smarter 2025-09-15 2025-10-10 456 25761655
Kill It with Fire: Manage Aging Computer Systems 2025-09-27 2025-10-07 248 54716655
The Almanack of Naval Ravikant: A Guide to Wealth and Happiness 2025-09-25 2025-10-05 244 54898389
The Thinking Machine: Jensen Huang, Nvidia, and the World's Most Coveted Microchip 2025-09-05 2025-09-12 272 211399783
Influence: The Psychology of Persuasion 2025-07-30 2025-09-06 320 28815
Think Again: The Power of Knowing What You Don't Know 2025-06-12 2025-07-22 307 55539565
Getting Naked: A Business Fable about Shedding the Three Fears That Sabotage Client Loyalty 2025-07-01 2025-07-07 240 7717531

More sample outputs live in samples/README.md.

Quick start

# search titles
uv run goodreads-tools public search "Dune" -n 5

# export a reading timeline as JSONL
uv run goodreads-tools public shelf timeline --user <user-id> --shelf read --source html --format jsonl

# HTML scraping is concurrent by default; use --concurrency 1 to opt out
uv run goodreads-tools public shelf timeline --user <user-id> --shelf read --source html --format jsonl --concurrency 1

# render a pages/day chart for a date range
uv run goodreads-tools public shelf chart --user <user-id> --shelf read --source html --from 2023-01-01 --to 2025-12-30 --bin-days 14

Development

# create / activate the project environment
uv sync

# run the dev CLI
uv run goodreads-tools

# run via uvx (local)
uvx --from . goodreads-tools --help

# run via uvx (git)
uvx --from git+https://github.com/EvanOman/goodreads-tools goodreads-tools --help

# run unit tests
uv run pytest

# run live tests (network)
GOODREADS_LIVE=1 uv run pytest -m live

# justfile helpers (lint/type/test)
just lint
just type
just test

Releases

Releases use release-please with conventional-commit PR titles. It maintains a single release PR on master; when you merge that PR, it creates the tag and GitHub Release. The PyPI publish job runs on the GitHub Release (best-effort until OIDC is configured). See docs/RELEASE.md for the full flow and examples.

The project targets Python 3.13 (via .python-version). Use uv for dependency management and execution.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

goodreads_tools-1.1.3.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

goodreads_tools-1.1.3-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file goodreads_tools-1.1.3.tar.gz.

File metadata

  • Download URL: goodreads_tools-1.1.3.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for goodreads_tools-1.1.3.tar.gz
Algorithm Hash digest
SHA256 dc8578777b073d0af9de142f43c2ffa5526712d71334b64c25d13c61c65046b6
MD5 3078e4882563bd5da0513305b242eab2
BLAKE2b-256 78e7d13260cb5f1218f474e953b4b3b8c1a6470cd482e50ba747332d74e0a15e

See more details on using hashes here.

Provenance

The following attestation bundles were made for goodreads_tools-1.1.3.tar.gz:

Publisher: release.yml on EvanOman/goodreads-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file goodreads_tools-1.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for goodreads_tools-1.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a4f187985174b36d3d33ac06794a452af1bc0e9a6919ad65f42d4e3141805ac6
MD5 41bedc48100abb38521a89a618d61e8d
BLAKE2b-256 93a9599a489d182a485301f93a60c7d61a56f03582045ea4e3ec8ace922efbbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for goodreads_tools-1.1.3-py3-none-any.whl:

Publisher: release.yml on EvanOman/goodreads-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page