Goodreads Author Books API — A Full Bibliography

List every book by an author

All of an author’s books, each with its rating, rating count, first publication year and number of editions, by popularity, title, newest first, rating or length. Up to 300 in one request, continuing with a cursor. 1 credit per 30 books.

POST /author-books Authors
https://api.fetchlayer.dev/goodreads/author-books
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

author integer | string required

The author: a Goodreads author id (656983) or an author URL (https://www.goodreads.com/author/show/656983).

sort string optional

popular, title, newest (by first publication), rating or pages. (default: popular)

limit integer optional

How many books to return, 1–300; a larger value is served at 300. Books come 30 to a page, and each page is 1 credit. (default: 30)

cursor string optional

The nextCursor from a previous response, passed back with the same other parameters, to continue where it stopped.

format string optional

json or markdown, lowercase; any other value is a 400. Over MCP, markdown returns the result rendered as text; the REST API accepts it and returns JSON. (default: json)

timeoutMs number optional

Per-request time limit in milliseconds (max 600000).

Response Fields

author-books

List every book by an author

transport string

The data source: always the platform id, "goodreads".

notes string[]

Caveats about this response you can act on, such as a series listing fewer works than its total. Empty when there are none.

author object

{ id, name, url } of the author.

sort string

The order served.

bookCount number

Books in this response.

books object[]

The books, in the order requested.

books[].id number

The book id, which every route that takes a book accepts.

books[].workId number | null

The work id shared by all of the book’s editions; quotes accepts it as workId.

books[].title string

The title, with the series in brackets when Goodreads shows it that way.

books[].url string

Link to the book on goodreads.com.

books[].coverUrl string | null

Cover image.

books[].authors object[]

Authors, each with id, name, url, and where Goodreads gives them, role (Author, Illustrator, Translator…), isGoodreadsAuthor and imageUrl.

books[].rating object

{ average, count, reviewCount }: the average star rating, how many ratings and how many reviews. reviewCount is null where the listing does not show it.

books[].firstPublishedYear number | null

Year of first publication.

books[].editionsCount number | null

How many editions the book has.

totalCount number | null

How many books Goodreads has for this request in all, when it says.

nextCursor string | null

Pass back as cursor, with the same other parameters, to continue. null when there is nothing further.

hasNextPage boolean

Whether more books remain.

pagesScraped number

Pages of results this response covers, which is what it costs: one credit per page.

Request

curl -X POST "https://api.fetchlayer.dev/goodreads/author-books" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"author":656983,"limit":30}'

Response

{
  "transport": "goodreads",
  "notes": [],
  "author": {
    "id": 656983,
    "name": "J.R.R. Tolkien",
    "url": "https://www.goodreads.com/author/show/656983"
  },
  "sort": "popular",
  "totalCount": null,
  "bookCount": 30,
  "books": [
    {
      "id": 5907,
      "workId": 1540236,
      "title": "The Hobbit, or There and Back Again",
      "url": "https://www.goodreads.com/book/show/5907.The_Hobbit_or_There_and_Back_Again",
      "coverUrl": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1546071216i/5907._SY75_.jpg",
      "authors": [
        {
          "id": 656983,
          "name": "J.R.R. Tolkien",
          "url": "https://www.goodreads.com/author/show/656983.J_R_R_Tolkien"
        }
      ],
      "rating": {
        "average": 4.3,
        "count": 4663452,
        "reviewCount": null
      },
      "firstPublishedYear": 1937,
      "editionsCount": 5
    }
  ],
  "nextCursor": "2",
  "hasNextPage": true,
  "pagesScraped": 1
}
Product overviewGoodreads API: what it returns, pricing and use cases