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.
/quotes Quotes, series & lists https://api.fetchlayer.dev/goodreads/quotes 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
}