# Goodreads API

> Goodreads returns book listings, ratings, reviews, author books, and quotes, available as a workflow and API.

Search books returns public listings by title, author, or keywords; provide a query, with optional page and result maximum. Get book returns details, ratings, and edition information; provide a title, ISBN, or book link, optionally with an author. Get book reviews returns public text reviews; List author books returns an author’s titles; Search quotes finds quotes by title, author, or topic.

- Page: https://fous.com/tools/goodreads
- Handle: `@goodreads`
- Category: [Entertainment](https://fous.com/tools/category/entertainment)
- Source website: https://goodreads.com
- Last verified: Sep 28, 2026

## Methods

### Get book

Operation `get_book`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get one Goodreads book’s details, reader ratings, and edition information by title, ISBN, or book link. A title uses the best search match; edition details can vary.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `book` | string | yes | `"9780735211292"` | Book title, ISBN, or Goodreads book link, for example Atomic Habits. |
| `author` | string | no | `"James Clear"` | Author to distinguish books with similar titles, for example James Clear. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "book"
  ],
  "properties": {
    "book": {
      "type": "string",
      "description": "Book title, ISBN, or Goodreads book link, for example Atomic Habits.",
      "examples": [
        "9780735211292",
        "Atomic Habits",
        "https://www.goodreads.com/book/show/186074-the-name-of-the-wind"
      ]
    },
    "author": {
      "type": "string",
      "default": "",
      "description": "Author to distinguish books with similar titles, for example James Clear.",
      "examples": [
        "James Clear"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "book": "9780735211292"
    },
    {
      "book": "Atomic Habits",
      "author": "James Clear"
    },
    {
      "book": "https://www.goodreads.com/book/show/186074-the-name-of-the-wind"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `title` | string | `"Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones"` | Book title. |
| `awards` | array |  | Award names and outcomes. |
| `format` | string or null | `"Kindle Edition"` | Format of this edition. |
| `genres` | array |  | Genres. |
| `authors` | array |  | Book authors. |
| `isbn_13` | string or null | `"9780735211292"` | ISBN-13 of this edition. |
| `description` | string or null |  | Book description in plain text. |
| `series_name` | string or null | `"The Kingkiller Chronicle"` | Series title. |
| `series_number` | string or null | `"1"` | Position in the series, including fractional positions. |
| `average_rating` | number or null | `4.31` | Average reader rating from 0 to 5. |
| `goodreads_link` | string | `"https://www.goodreads.com/book/show/59910150-atomic-habits"` | Goodreads book page link. |
| `number_of_pages` | integer or null | `306` | Pages in this edition. |
| `cover_image_link` | string or null | `"https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1736660900i/59910150.jpg"` | Cover image link. |
| `rating_breakdown` | object |  | Rating counts by star level. |
| `rating_breakdown.1_stars` | integer or null | `14943` | Count of 1-star ratings. |
| `rating_breakdown.2_stars` | integer or null | `36341` | Count of 2-star ratings. |
| `rating_breakdown.3_stars` | integer or null | `175357` | Count of 3-star ratings. |
| `rating_breakdown.4_stars` | integer or null | `471577` | Count of 4-star ratings. |
| `rating_breakdown.5_stars` | integer or null | `729468` | Count of 5-star ratings. |
| `goodreads_book_id` | string | `"59910150"` | Goodreads book ID. |
| `number_of_ratings` | integer or null | `1427686` | Number of ratings. |
| `number_of_reviews` | integer or null | `83793` | Number of written reviews. |
| `first_published_date` | string or null | `"2018-10-18"` | First publication date (YYYY-MM-DD), or year if only a year is known. |

**Example input**

```json
{
  "book": "9780735211292"
}
```

**Example output**

```json
{
  "title": "Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones",
  "awards": [
    "Goodreads Choice Award — Nonfiction (Nominee)"
  ],
  "format": "Kindle Edition",
  "genres": [
    "Self Help",
    "Nonfiction",
    "Psychology"
  ],
  "authors": [
    "James Clear"
  ],
  "isbn_13": "9780735211292",
  "description": "The instant New York Times bestseller. Over 1 million copies sold! \r\n\r\nTiny Changes, Remarkable Results\r\n\r\nNo matter your goals, Atomic Habits offers a proven framework for improving--every day. James…",
  "series_name": null,
  "series_number": null,
  "average_rating": 4.31,
  "goodreads_link": "https://www.goodreads.com/book/show/59910150-atomic-habits",
  "number_of_pages": 306,
  "cover_image_link": "https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1736660900i/59910150.jpg",
  "rating_breakdown": {
    "1_stars": 14943,
    "2_stars": 36341,
    "3_stars": 175357,
    "4_stars": 471577,
    "5_stars": 729468
  },
  "goodreads_book_id": "59910150",
  "number_of_ratings": 1427686,
  "number_of_reviews": 83793,
  "first_published_date": "2018-10-18"
}
```

### Get book reviews

Operation `get_book_reviews`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get public reader reviews for a Goodreads book by title or book link. Choose popular or newest reviews, optionally restrict by star rating, and skip reviews without text.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `book` | string | yes | `"The Hobbit"` | Book title or Goodreads book link, such as Atomic Habits. |
| `sort` | string | no | `"newest"` | Review order, such as newest. |
| `stars` | integer | no | `5` | Only reviews with this star rating, such as 5. |
| `author` | string | no | `"J.R.R. Tolkien"` | Author to select the right book, such as James Clear. |
| `max_results` | integer | no | `35` | Maximum number of text reviews, such as 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "book"
  ],
  "properties": {
    "book": {
      "type": "string",
      "description": "Book title or Goodreads book link, such as Atomic Habits.",
      "examples": [
        "The Hobbit",
        "Atomic Habits",
        "https://www.goodreads.com/book/show/40121378-atomic-habits"
      ]
    },
    "sort": {
      "enum": [
        "popular",
        "newest"
      ],
      "type": "string",
      "default": "popular",
      "description": "Review order, such as newest.",
      "examples": [
        "newest",
        "popular"
      ]
    },
    "stars": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1,
      "description": "Only reviews with this star rating, such as 5.",
      "examples": [
        5,
        2
      ]
    },
    "author": {
      "type": "string",
      "description": "Author to select the right book, such as James Clear.",
      "examples": [
        "J.R.R. Tolkien"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of text reviews, such as 20.",
      "x-fous-developer": true,
      "examples": [
        35,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "book": "The Hobbit",
      "sort": "newest",
      "stars": 5,
      "author": "J.R.R. Tolkien",
      "max_results": 35
    },
    {
      "book": "Atomic Habits"
    },
    {
      "book": "https://www.goodreads.com/book/show/40121378-atomic-habits",
      "sort": "popular",
      "stars": 2,
      "max_results": 3
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `title` | string | `"The Hobbit, or There and Back Again"` | Book title. |
| `author` | string or null | `"J.R.R. Tolkien"` | Book author. |
| `reviews` | array |  | Reviews in the selected order. |
| `reviews[].likes` | integer | `0` | Number of likes. |
| `reviews[].stars` | integer or null | `5` | Stars given by the reviewer. |
| `reviews[].comments` | integer | `0` | Number of comments. |
| `reviews[].review_id` | string or null | `"8981900204"` | Goodreads review ID. |
| `reviews[].review_date` | string or null | `"2026-09-28"` | Review date. |
| `reviews[].review_link` | string | `"https://www.goodreads.com/review/show/8981900204"` | Goodreads review page. |
| `reviews[].review_text` | string | `"Just perfection. Andy Serkis' audiobook version is also highly recommended!"` | Review text without markup. |
| `reviews[].reviewer_name` | string or null | `"Mux"` | Reviewer name. |
| `goodreads_link` | string | `"https://www.goodreads.com/book/show/5907.The_Hobbit_or_There_and_Back_Again"` | Goodreads book page. |

**Example input**

```json
{
  "book": "The Hobbit",
  "sort": "newest",
  "stars": 5,
  "author": "J.R.R. Tolkien",
  "max_results": 35
}
```

**Example output**

```json
{
  "title": "The Hobbit, or There and Back Again",
  "author": "J.R.R. Tolkien",
  "reviews": [
    {
      "likes": 0,
      "stars": 5,
      "comments": 0,
      "review_id": "8981900204",
      "review_date": "2026-09-28",
      "review_link": "https://www.goodreads.com/review/show/8981900204",
      "review_text": "A classic filled with much of Tolkien's wit and excitement, the hobbit is a very well paced book which sometimes the LOTR struggles with. It reads like a children's book but is entertaining for all an…",
      "reviewer_name": "Mux"
    },
    {
      "likes": 0,
      "stars": 5,
      "comments": 0,
      "review_id": "7675778820",
      "review_date": "2026-09-28",
      "review_link": "https://www.goodreads.com/review/show/7675778820",
      "review_text": "Just perfection. Andy Serkis' audiobook version is also highly recommended!",
      "reviewer_name": "Kristina Ellis"
    },
    {
      "likes": 0,
      "stars": 5,
      "comments": 0,
      "review_id": "8936893844",
      "review_date": "2026-09-28",
      "review_link": "https://www.goodreads.com/review/show/8936893844",
      "review_text": "😍❤️‍🔥🤞🏼😭😬🫩🥹🫪😱🤦🏿‍♂️😆❤️",
      "reviewer_name": "Melissa_qq"
    }
  ],
  "goodreads_link": "https://www.goodreads.com/book/show/5907.The_Hobbit_or_There_and_Back_Again"
}
```

### List author books

Operation `list_author_books`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List an author’s Goodreads books with ratings, covers, series and first-publication years, ordered by popularity or newest publication. Public book details may omit some fields.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"newest"` | Book order: popular or newest. Example: popular. |
| `author` | string | yes | `"Stephen King"` | Author name or Goodreads author link, such as Brené Brown or https://www.goodreads.com/author/show/162578.Bren_Brown. |
| `max_results` | integer | no | `5` | Maximum number of books to return, up to 100. Example: 30. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "author"
  ],
  "properties": {
    "sort": {
      "enum": [
        "popular",
        "newest"
      ],
      "type": "string",
      "default": "popular",
      "description": "Book order: popular or newest. Example: popular.",
      "examples": [
        "newest"
      ]
    },
    "author": {
      "type": "string",
      "description": "Author name or Goodreads author link, such as Brené Brown or https://www.goodreads.com/author/show/162578.Bren_Brown.",
      "examples": [
        "Stephen King",
        "Brené Brown",
        "https://www.goodreads.com/author/show/3389.Stephen_King"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 30,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of books to return, up to 100. Example: 30.",
      "x-fous-developer": true,
      "examples": [
        5,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "newest",
      "author": "Stephen King",
      "max_results": 5
    },
    {
      "author": "Brené Brown"
    },
    {
      "author": "https://www.goodreads.com/author/show/3389.Stephen_King",
      "max_results": 3
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `books` | array |  | Books in the selected order. |
| `books[].title` | string | `"Other Worlds Than These"` | Book title. |
| `books[].book_url` | string | `"https://www.goodreads.com/book/show/247593404-other-worlds-than-these"` | Goodreads book link. |
| `books[].series_name` | string or null | `"The Talisman"` | Series name, if any. |
| `books[].ratings_count` | integer or null | `25` | Number of reader ratings, if available. |
| `books[].series_number` | number or null | `3` | Book number in its series, if any. |
| `books[].average_rating` | number or null | `4.24` | Average reader rating from 0 to 5, if available. |
| `books[].cover_image_url` | string or null | `"https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1781173110i/247593404._SY75_.jpg"` | Book cover image link, if available. |
| `books[].goodreads_book_id` | string | `"247593404"` | Goodreads book ID. |
| `books[].first_published_year` | integer or null | `2026` | Year the book was first published, if available. |
| `author_url` | string | `"https://www.goodreads.com/author/show/3389.Stephen_King"` | Goodreads author link. |
| `author_name` | string | `"Stephen King"` | Author name. |
| `author_photo_url` | string or null | `"https://images.gr-assets.com/authors/1362814142p8/3389.jpg"` | Author photo link, if available. |

**Example input**

```json
{
  "sort": "newest",
  "author": "Stephen King",
  "max_results": 5
}
```

**Example output**

```json
{
  "books": [
    {
      "title": "Other Worlds Than These",
      "book_url": "https://www.goodreads.com/book/show/247593404-other-worlds-than-these",
      "series_name": "The Talisman",
      "ratings_count": 25,
      "series_number": 3,
      "average_rating": 4.24,
      "cover_image_url": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1781173110i/247593404._SY75_.jpg",
      "goodreads_book_id": "247593404",
      "first_published_year": null
    },
    {
      "title": "Dinah’s Hat",
      "book_url": "https://www.goodreads.com/book/show/256110566-dinah-s-hat",
      "series_name": null,
      "ratings_count": 19,
      "series_number": null,
      "average_rating": 3.63,
      "cover_image_url": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1785385167i/256110566._SX50_.jpg",
      "goodreads_book_id": "256110566",
      "first_published_year": 2026
    },
    {
      "title": "Stephen King 5-Book Box Set: If It Bleeds, The Institute, IT, Misery, Pet Sematary",
      "book_url": "https://www.goodreads.com/book/show/244686838-stephen-king-5-book-box-set",
      "series_name": null,
      "ratings_count": 7,
      "series_number": null,
      "average_rating": 3.57,
      "cover_image_url": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1767213083i/244686838._SX50_.jpg",
      "goodreads_book_id": "244686838",
      "first_published_year": 2025
    }
  ],
  "author_url": "https://www.goodreads.com/author/show/3389.Stephen_King",
  "author_name": "Stephen King",
  "author_photo_url": "https://images.gr-assets.com/authors/1362814142p8/3389.jpg"
}
```

### Search books

Operation `search_books`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Search Goodreads books by title, author, or keywords. Returns books in Goodreads search order with ratings, series details, covers, links, and first published years. Results are limited to public listings.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `page` | integer | no | `2` | Goodreads search results page to start from, for example 2. |
| `query` | string | yes | `"Atomic Habits"` | Book title, author, or keywords, for example Atomic Habits. |
| `max_results` | integer | no | `1` | Maximum books to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Goodreads search results page to start from, for example 2.",
      "x-fous-developer": true,
      "examples": [
        2
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Book title, author, or keywords, for example Atomic Habits.",
      "examples": [
        "Atomic Habits",
        "Mistborn",
        "zzxxqqttvv8837744"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum books to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        1
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "query": "Atomic Habits"
    },
    {
      "page": 2,
      "query": "Mistborn",
      "max_results": 1
    },
    {
      "query": "zzxxqqttvv8837744"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `books` | array |  |  |
| `books[].title` | string | `"Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones"` | Book title. |
| `books[].authors` | array |  | Book authors. |
| `books[].book_url` | string | `"https://www.goodreads.com/book/show/40121378"` | Goodreads book page link. |
| `books[].series_name` | string or null | `"Mistborn [Dramatized Adaptation]"` | Series title, if any. |
| `books[].ratings_count` | integer or null | `1427686` | Number of Goodreads ratings. |
| `books[].series_number` | string or null | `"3, part 3"` | Position in the series, if any (may include a part number). |
| `books[].average_rating` | number or null | `4.31` | Average Goodreads rating, out of 5. |
| `books[].cover_image_url` | string or null | `"https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1655988385i/40121378.jpg"` | Book cover image link. |
| `books[].goodreads_book_id` | string | `"40121378"` | Goodreads book ID. |
| `books[].first_published_year` | integer or null |  | Year first published, when shown on the book page. |

**Example input**

```json
{
  "query": "Atomic Habits"
}
```

**Example output**

```json
{
  "books": [
    {
      "title": "Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones",
      "authors": [
        "James Clear"
      ],
      "book_url": "https://www.goodreads.com/book/show/40121378",
      "series_name": null,
      "ratings_count": 1427686,
      "series_number": null,
      "average_rating": 4.31,
      "cover_image_url": "https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1655988385i/40121378.jpg",
      "goodreads_book_id": "40121378",
      "first_published_year": null
    },
    {
      "title": "The Atomic Habits Daily Calendar: 365 Powerful Ideas for a Better Year",
      "authors": [
        "James Clear"
      ],
      "book_url": "https://www.goodreads.com/book/show/242972506",
      "series_name": null,
      "ratings_count": 9,
      "series_number": null,
      "average_rating": 4.22,
      "cover_image_url": "https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1760923210i/242972506.jpg",
      "goodreads_book_id": "242972506",
      "first_published_year": null
    },
    {
      "title": "The Atomic Habits Workbook",
      "authors": [
        "James Clear"
      ],
      "book_url": "https://www.goodreads.com/book/show/235338333",
      "series_name": null,
      "ratings_count": 515,
      "series_number": null,
      "average_rating": 4.17,
      "cover_image_url": "https://m.media-amazon.com/images/S/compressed.photo.goodreads.com/books/1756351324i/235338333.jpg",
      "goodreads_book_id": "235338333",
      "first_published_year": null
    }
  ]
}
```

### Search quotes

Operation `search_quotes`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find popular Goodreads quotes matching a book title, author, or topic, ordered by likes. Returns up to 100 public quotes.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `query` | string | yes | `"Maya Angelou"` | Book title, author name, or topic to search for, for example "Maya Angelou". |
| `max_results` | integer | no | `35` | Maximum number of quotes to return, for example 40. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Book title, author name, or topic to search for, for example \"Maya Angelou\".",
      "examples": [
        "Maya Angelou",
        "leadership",
        "Pride and Prejudice"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of quotes to return, for example 40.",
      "x-fous-developer": true,
      "examples": [
        35,
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "query": "Maya Angelou"
    },
    {
      "query": "leadership",
      "max_results": 35
    },
    {
      "query": "Pride and Prejudice",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `quotes` | array |  |  |
| `quotes[].tags` | array |  |  |
| `quotes[].likes` | integer | `89873` |  |
| `quotes[].author` | string | `"Maya Angelou"` |  |
| `quotes[].book_title` | string or null | `"I Know Why the Caged Bird Sings"` |  |
| `quotes[].quote_link` | string | `"https://www.goodreads.com/quotes/5934-i-ve-learned-that-people-will-forget-what-you-said-people"` |  |
| `quotes[].quote_text` | string | `"“I've learned that people will forget what you said, people will forget what you did, but people will never forget how ` |  |

**Example input**

```json
{
  "query": "Maya Angelou"
}
```

**Example output**

```json
{
  "quotes": [
    {
      "tags": [],
      "likes": 89873,
      "author": "Maya Angelou",
      "book_title": null,
      "quote_link": "https://www.goodreads.com/quotes/5934-i-ve-learned-that-people-will-forget-what-you-said-people",
      "quote_text": "“I've learned that people will forget what you said, people will forget what you did, but people will never forget how you made them feel.”"
    },
    {
      "tags": [
        "1970",
        "inspirational",
        "stories"
      ],
      "likes": 31652,
      "author": "Maya Angelou",
      "book_title": "I Know Why the Caged Bird Sings",
      "quote_link": "https://www.goodreads.com/quotes/512-there-is-no-greater-agony-than-bearing-an-untold-story",
      "quote_text": "“There is no greater agony than bearing an untold story inside you.”"
    },
    {
      "tags": [
        "1993",
        "advice",
        "complaining"
      ],
      "likes": 15356,
      "author": "Maya Angelou",
      "book_title": "Wouldn't Take Nothing for My Journey Now",
      "quote_link": "https://www.goodreads.com/quotes/14821-what-you-re-supposed-to-do-when-you-don-t-like-a",
      "quote_text": "“What you're supposed to do when you don't like a thing is change it. If you can't change it, change the way you think about it. Don't complain.”"
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@goodreads",
  "visibility": "public",
  "operation": "get_book",
  "version": 1,
  "input": {
    "book": "9780735211292"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@goodreads\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_book\",\n  \"version\": 1,\n  \"input\": {\n    \"book\": \"9780735211292\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@goodreads",
  "visibility": "public",
  "operation": "get_book",
  "version": 1,
  "input": {
    "book": "9780735211292"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/goodreads`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_book`: Get book. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_book_reviews`: Get book reviews. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_author_books`: List author books. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_books`: Search books. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `search_quotes`: Search quotes. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-goodreads https://api.fous.com/mcp/tools/goodreads --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare reader ratings across book search results.
- Review star-rating breakdowns for a specific edition.
- Analyze public reviews by date or star rating.
- Track an author’s books by popularity or publication order.
- Find popular quotes associated with a book, author, or topic.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Goodreads tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Goodreads account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from goodreads.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 28, 2026.

### What is a book’s average rating and rating breakdown?

Get book returns the average reader rating and counts by star level.

### What are readers saying about a book?

Get book reviews returns public text reviews, with options for order and star rating.

### Which books has an author published?

List author books returns an author’s books ordered by popularity or newest publication.

## Related

- [Google Books API](https://fous.com/tools/google-books.md): Google Books searches books and provides book details, reader ratings, and local ebook prices when available; newest results sort by publication date.
- [Open Library API](https://fous.com/tools/open-library.md): Open Library returns book search results, catalog details, and author works; availability reflects listed editions, not current loan availability, and catalog details may be missing.
- [BrainyQuote API](https://fous.com/tools/brainyquote.md): BrainyQuote returns topic-matched quotes in displayed order, a person’s description and up to 100 quotes with topic tags and links, or the quote shown for the chosen daily category and BrainyQuote’s current day.
- [Booking.com API](https://fous.com/tools/booking-com.md): Booking.com helps find stays, property details and public guest reviews; prices and cancellation terms depend on selected dates, and displayed prices may exclude taxes and fees.
- [Project Gutenberg API](https://fous.com/tools/project-gutenberg.md): Project Gutenberg offers free public-domain ebooks and reading materials, with searchable book details and plain text from the most-downloaded matching edition available.
- [Google Maps API](https://fous.com/tools/google-maps.md): Google Maps returns nearby places, public place details, up to 100 public reviews, and up to three routes; transit options vary by departure time.
- [Audible API](https://fous.com/tools/audible.md): Audible offers audiobooks, podcasts, and audio entertainment, with public book details and current bestselling audiobook charts; availability and categories vary by store.
- [Steam API](https://fous.com/tools/steam.md): Steam returns game details, country-specific prices, reviews, and current and historical player counts, plus player rankings and sales lists; some details or prices may be unavailable, and review totals span languages and verdicts.
- [All Entertainment tools](https://fous.com/tools/category/entertainment)
