Limited Time — Lifetime Access for just $99. Lock in before prices rise.

UScraper
Tutorials

How to Scrape Goodreads Comments to CSV

Scrape Goodreads comments to CSV. Export reviewer, rating, date, comment text and likes with UScraper local desktop app. No code, no hosted workflow.

UScraper
June 23, 2026
8 min read
#how to scrape goodreads comments#goodreads comments scraper tutorial#scrape goodreads ratings and comments#goodreads reviews scraper python#goodreads scraper no code#octoparse goodreads scraper alternative#goodreads export csv#how to export goodreads data
How to Scrape Goodreads Comments to CSV

This tutorial shows how to scrape Goodreads comments to CSV with the Goodreads Comments Scraper template for UScraper. You will import the workflow, replace the sample review-page URLs, set the export path, validate one page, and troubleshoot common issues before widening the run.

Scope

Prerequisites and policy checks

You need UScraper as a local desktop app, a Goodreads book review URL list you are allowed to process, and a folder where the CSV can be saved. Start with one book and one or two pages. Goodreads review pages vary by login state, locale, layout experiment, and anti-abuse checks, so a small validation batch is the fastest way to learn whether your selectors still match the live page.

This guide covers visible public review listings only. It does not cover private account pages, login automation, CAPTCHA bypassing, republishing reader comments, or training models on exported review text. Before you run a batch, read the current Goodreads API note, Goodreads robots guidance, and Goodreads terms.

Treat review text as user-generated content. Export only what your research plan needs, keep runs modest, and stop when Goodreads shows a block, challenge, or login wall.


Workflow

How the Goodreads comments scraper workflow works

The companion JSON is intentionally direct: Navigate -> Wait for Page Load -> Sleep -> Wait for Review Cards -> Expand Comments -> Sleep -> Structured Export -> Loop Continue. Navigate owns the finite URL list, Structured Export appends rows into one CSV, and Loop Continue advances to the next ?page=N URL.

The sample workflow ships with pages 1 through 10 for one Goodreads book. Replace those URLs with the book and page range you want to analyze. Keeping pagination as explicit URLs makes audits easier because every row carries current_page.

Workflow blockJobWhat to verify
NavigateOpens each Goodreads review URLReplace sample URLs with your approved scope.
Wait blocksLet review cards renderWatch for slow pages, prompts, or missing cards.
Inject JavaScriptClicks visible "show more" controlsConfirm long comments expand before export.
Structured ExportWrites row-scoped fields to CSVConfirm headers, append mode, and save folder.
Loop ContinueMoves to the next URLCheck that duplicate URLs are not in the list.

Runbook

How to scrape Goodreads comments to CSV

1

Import the template

Open Goodreads Comments Scraper, download the JSON, and import it into UScraper.

2

Replace the sample URLs

Edit Navigate with the Goodreads review pages you are approved to collect. Use a finite ?page=N list, such as pages 1 through 3, before trying a longer range.

3

Set the export path

In Structured Export, confirm goodreads_comments_scraper_reviews.csv, headers enabled, append mode, and a project-specific save folder.

4

Run one page first

Execute a single URL while watching the browser. Check that review cards appear, long comments expand, and no access prompt replaces the content.

5

Validate and scale carefully

Compare a few CSV rows against the live page. If the fields match, expand the URL list and keep the same validation habit for each new book.


Output

CSV fields for Goodreads ratings and comments

No CSV sample ships in the bundle, so treat the JSON workflow definition as the source of truth. The field map below summarizes the export shape: one row per visible Goodreads review card, with page context repeated for filtering and QA.

ColumnMeaningValidation tip
current_pagePage number parsed from the URLConfirms loop progress and page coverage.
book_titleTitle from heading or document title fallbackCompare against the browser title.
authorOne or more author namesWatch coauthor joins and empty pages.
usernameReviewer display nameSpot-check against the card header.
ratingGoodreads rating labelConfirm labels like "really liked it" map correctly.
comment_timeVisible review dateDates may be absent on some layouts.
comment_contentExpanded review textMake sure "show more" ran before export.
likesVisible like countEmpty can be normal when no count is shown.
goodreads_comments_scraper_reviews.csv
CSV - UTF-8 - Append

Column

current_page

Source page number from the URL.

Column

book_title

Book title from the page or title fallback.

Column

author

Author names joined into one cell.

Column

username

Reviewer display name.

Column

rating

Goodreads rating label.

Column

comment_time

Visible review date.

Column

comment_content

Expanded review body text.

Column

likes

Parsed like count.

Headers included - one row per visible Goodreads review card

The core Structured Export block uses a row selector with multiple Goodreads review-card fallbacks. The excerpt below is shortened, but it shows the operational intent: wait for review cards, expand visible comment text, then export row-scoped fields.

{
  "project": {
    "name": "Goodreads Comments Scraper"
  },
  "blocks": [
    {
      "title": "Navigate",
      "config": {
        "urls": [
          "https://www.goodreads.com/book/show/17851885-i-am-malala/reviews?page=1",
          "https://www.goodreads.com/book/show/17851885-i-am-malala/reviews?page=2"
        ]
      }
    },
    {
      "title": "Wait for Element",
      "config": {
        "selector": "article.ReviewCard, div.ReviewCard, div.review, [data-testid='reviewCard']"
      }
    },
    {
      "title": "Structured Export",
      "config": {
        "rowSelector": "article.ReviewCard, div.ReviewCard, div.review, [data-testid='reviewCard']",
        "fileName": "goodreads_comments_scraper_reviews.csv",
        "fileMode": "append",
        "columns": [
          { "name": "current_page", "input_type": "js" },
          { "name": "book_title", "input_type": "js" },
          { "name": "author", "input_type": "js" },
          { "name": "username", "input_type": "js" },
          { "name": "rating", "input_type": "js" },
          { "name": "comment_time", "input_type": "js" },
          { "name": "comment_content", "input_type": "js" },
          { "name": "likes", "input_type": "js" }
        ]
      }
    }
  ]
}

Validation

Common issues when scraping Goodreads comments

Goodreads scraping usually fails for mundane reasons: the page did not fully render, text stayed collapsed, the layout changed, or a platform prompt replaced the expected review cards. Keep the browser visible while testing, and do not turn a one-page problem into a ten-page bad export.

SymptomLikely causeFix
No rows exportedReview cards did not appearOpen the URL manually, then rerun one page.
Short comments only"Show more" controls did not expandKeep the JavaScript block and add a longer sleep.
Blank ratingsRating markup changedUpdate the rating selector fallback.
Repeated rowsOld CSV or duplicate URLsStart a fresh file or dedupe downstream.
Run stops mid-listRate limit, block, or access challengePause, reduce volume, and review policy.

Alternatives

Choose no-code, Python, or hosted Goodreads scrapers

Use UScraper when you want a goodreads scraper no code workflow, browser-visible validation, and a local CSV export. It is the fastest lane for modest research batches where you want to inspect selectors before trusting the data.

For this post, the recommended path is simple: import the Goodreads Comments Scraper template, validate one page, and expand only as far as your permission and research plan allow. For adjacent workflows, browse the UScraper template library or the UScraper blog.


FAQ

Goodreads comments scraper FAQ

Public visibility does not automatically grant permission for automated collection. Review Goodreads terms, robots guidance, copyright, privacy rules, and your own legal basis before running a scraper. Keep batches modest and do not bypass access controls, login prompts, rate limits, or CAPTCHA pages.

Next step

Download the Goodreads comments scraper template

Open Goodreads Comments Scraper, import the JSON into UScraper, and keep this tutorial open while you validate the first CSV. After that, use Templates for related scraping workflows and Blog for more no-code export tutorials.

FAQ

Frequently asked questions

Here are some of our most common questions. Can't find what you're looking for?

View All FAQs

Stop writing scripts. Start scraping visually.

Download UScraper and build your first web scraper in under 10 minutes. No subscriptions, no code, no limits.

Available on Windows 10+ and macOS 12+ · Need help? [email protected]