Goodreads Quotes API — By Book, Author, Tag or Keyword

Read quotes

Quotes from a book, by an author, with a tag, or matching keywords: give exactly one of book, workId, author, tag or query. Each quote has its text, author, book, tags and likes. Up to 300 in one request, continuing with a cursor. 1 credit per 30 quotes.

POST /quotes Quotes, series & lists
https://api.fetchlayer.dev/goodreads/quotes
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

book integer | string optional

Quotes from this book: any edition’s id, URL or ISBN.

workId integer optional

Quotes from this work, by the number in a /work/quotes/ URL or a book’s workId.

author integer | string optional

Quotes by this author: an id or author URL.

tag string optional

Quotes with this tag, e.g. love or courage.

query string optional

Quotes matching these keywords.

limit integer optional

How many quotes to return, 1–300; a larger value is served at 300. Quotes 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

quotes

Read quotes

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.

source object

What the quotes were read for: { kind } plus the id, tag or query given.

quoteCount number

Quotes in this response.

quotes object[]

The quotes, most liked first.

quotes[].id number

The quote id.

quotes[].url string

Link to the quote on goodreads.com.

quotes[].text string

The quote.

quotes[].author object | null

{ id, name, url } of who said or wrote it.

quotes[].book object | null

{ id, title, url } of the book it is from, when attributed to one.

quotes[].tags string[]

Its tags.

quotes[].likes number | null

Likes on the quote.

totalCount number | null

How many quotes 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 quotes 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/quotes" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"author":656983,"limit":5}'

Response

{
  "transport": "goodreads",
  "notes": [],
  "source": {
    "kind": "author",
    "authorId": 656983
  },
  "totalCount": 6918,
  "quoteCount": 5,
  "quotes": [
    {
      "id": 229,
      "url": "https://www.goodreads.com/quotes/229",
      "text": "All that is gold does not glitter,\nNot all those who wander are lost;\nThe old that is strong does not wither,\nDeep roots are not reached by the frost.\n\nFrom the ashes a fire shall be woken,\nA light from the shadows shall…",
      "author": {
        "id": 656983,
        "name": "J.R.R. Tolkien",
        "url": "https://www.goodreads.com/author/show/656983"
      },
      "book": {
        "id": 34,
        "title": "The Fellowship of the Ring",
        "url": "https://www.goodreads.com/book/show/34"
      },
      "tags": [
        "frost"
      ],
      "likes": 58402
    }
  ],
  "nextCursor": "1.5",
  "hasNextPage": true,
  "pagesScraped": 1
}
Product overviewGoodreads API: what it returns, pricing and use cases