> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.biblioreads.eu.org/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.biblioreads.eu.org/_mcp/server.

# quotes-scraper

POST https://biblioreads.eu.org/api/works/quotes
Content-Type: application/json

## Quotes Scraper

Scrapes quotes associated with a specific book work from its Goodreads quotes page. Returns a list of quotes with attribution and like counts.

***

## Request

**Method:** `POST`\
**URL:** `{{Instance Domain}}/api/works/quotes`

### Headers

| Key          | Value            | Description                        |
| ------------ | ---------------- | ---------------------------------- |
| Content-Type | application/json | Indicates the request body is JSON |

### Body

| Field    | Type   | Required | Description                                                                                    |
| -------- | ------ | -------- | ---------------------------------------------------------------------------------------------- |
| queryURL | string | Yes      | The full Goodreads work quotes page URL (e.g. `https://www.goodreads.com/work/quotes/1540236`) |

**Example Body:**

```json
{
  "queryURL": "https://www.goodreads.com/work/quotes/1540236"
}
```

***

## Response

### 200 Success

Returns a JSON object containing the scraped quotes.

```json
{
  "status": "Received",
  "statusCode": 200,
  "scrapeURL": "string",
  "quotes": [
    {
      "quote": "string",
      "author": "string",
      "likes": "string",
      "tags": ["string"]
    }
  ]
}
```

### Response Field Descriptions

| Field            | Type   | Description                              |
| ---------------- | ------ | ---------------------------------------- |
| status           | string | Human-readable status message            |
| statusCode       | number | HTTP status code of the scrape operation |
| scrapeURL        | string | The Goodreads URL that was scraped       |
| quotes           | array  | List of quotes from the book             |
| quotes\[].quote  | string | The quote text                           |
| quotes\[].author | string | The author attributed to the quote       |
| quotes\[].likes  | string | Number of likes the quote has received   |
| quotes\[].tags   | array  | List of tags associated with the quote   |

Reference: https://docs.biblioreads.eu.org/api-endpoints/works/quotes-scraper

## Request

### Body (application/json)

- `queryURL` (string, required)

## Response

### 200

OK

- `status` (string, required)
- `source` (string, required)
- `scrapeURL` (string, required)
- `bookURL` (string, required)
- `image` (string, required)
- `name` (string, required)
- `quotes` (list of object, required)
  - `id` (integer, required)
  - `text` (string, required)
  - `author` (string, required)
  - `book` (string, required)
  - `likes` (string, required)
- `lastScraped` (datetime, required)

## Examples

**Request**

```json
{
  "queryURL": "https://www.goodreads.com/work/quotes/1540236"
}
```

**Response**

```json
{
  "status": "Received",
  "source": "https://github.com/nesaku/biblioreads",
  "scrapeURL": "https://www.goodreads.com/work/quotes/1540236",
  "bookURL": "/book/show/5907.The_Hobbit_or_There_and_Back_Again",
  "image": "https://i.gr-assets.com/images/S/compressed.photo.goodreads.com/books/1546071216l/5907._SY75_.jpg",
  "name": "The Hobbit, or There and Back Again Quotes",
  "quotes": [
    {
      "id": 1,
      "text": "\n      “Do you wish me a good morning, or mean that it is a good morning whether I want it or not; or that you feel good this morning; or that it is a morning to be good on?”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "4609 likes"
    },
    {
      "id": 2,
      "text": "\n      “There is nothing like looking, if you want to find something. You certainly usually find something, if you look, but it is not always quite the something you were after.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "2683 likes"
    },
    {
      "id": 3,
      "text": "\n      “In a hole in the ground there lived a hobbit.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "2247 likes"
    },
    {
      "id": 4,
      "text": "\n      “Far over the misty mountains coldTo dungeons deep and caverns oldWe must away ere break of dayTo seek the pale enchanted gold.The dwarves of yore made mighty spells,While hammers fell like ringing bellsIn places deep, where dark things sleep,In hollow halls beneath the fells.For ancient king and elvish lordThere many a gleaming golden hoardThey shaped and wrought, and light they caughtTo hide in gems on hilt of sword.On silver necklaces they strungThe flowering stars, on crowns they hungThe dragon-fire, in twisted wireThey meshed the light of moon and sun.Far over the misty mountains coldTo dungeons deep and caverns oldWe must away, ere break of day,To claim our long-forgotten gold.Goblets they carved there for themselvesAnd harps of gold; where no man delvesThere lay they long, and many a songWas sung unheard by men or elves.The pines were roaring on the height,The wind was moaning in the night.The fire was red, it flaming spread;The trees like torches blazed with light.The bells were ringing in the daleAnd men looked up with faces pale;The dragon's ire more fierce than fireLaid low their towers and houses frail.The mountain smoked beneath the moon;The dwarves, they heard the tramp of doom.They fled their hall to dying fallBeneath his feet, beneath the moon.Far over the misty mountains grimTo dungeons deep and caverns dimWe must away, ere break of day,To win our harps and gold from him!”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1994 likes"
    },
    {
      "id": 5,
      "text": "\n      “So comes snow after fire, and even dragons have their endings.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1885 likes"
    },
    {
      "id": 6,
      "text": "\n      “May the wind under your wings bear you where the sun sails and the moon walks.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1855 likes"
    },
    {
      "id": 7,
      "text": "\n      “Where there's life there's hope.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1815 likes"
    },
    {
      "id": 8,
      "text": "\n      “It does not do to leave a live dragon out of your calculations, if you live near him.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1751 likes"
    },
    {
      "id": 9,
      "text": "\n      “It cannot be seen, cannot be felt,Cannot be heard, cannot be smelt,It lies behind stars and under hills,And empty holes it fills,It comes first and follows after,Ends life, kills laughter.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1322 likes"
    },
    {
      "id": 10,
      "text": "\n      “Where did you go to, if I may ask?' said Thorin to Gandalf as they rode along.To look ahead,' said he.And what brought you back in the nick of time?'Looking behind,' said he.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1312 likes"
    },
    {
      "id": 11,
      "text": "\n      “There is more in you of good than you know, child of the kindly West. Some courage and some wisdom, blended in measure. If more of us valued food and cheer and song above hoarded gold, it would be a merrier world.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1179 likes"
    },
    {
      "id": 12,
      "text": "\n      “Good Morning!\" said Bilbo, and he meant it. The sun was shining, and the grass was very green. But Gandalf looked at him from under long bushy eyebrows that stuck out further than the brim of his shady hat.\"What do you mean?\" he said. \"Do you wish me a good morning, or mean that it is a good morning whether I want it or not; or that you feel good this morning; or that it is a morning to be good on?\"\"All of them at once,\" said Bilbo. \"And a very fine morning for a pipe of tobacco out of doors, into the bargain....\"Good morning!\" he said at last. \"We don't want any adventures here, thank you! You might try over The Hill or across The Water.\" By this he meant that the conversation was at an end.\"What a lot of things you do use Good morning for!\" said Gandalf. \"Now you mean that you want to get rid of me, and that it won't be good till I move off.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "1146 likes"
    },
    {
      "id": 13,
      "text": "\n      “I am looking for someone to share in an adventure that I am arranging, and it's very difficult to find anyone.' I should think so — in these parts! We are plain quiet folk and have no use for adventures. Nasty disturbing uncomfortable things! Make you late for dinner!”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "972 likes"
    },
    {
      "id": 14,
      "text": "\n      “Go back?\" he thought. \"No good at all! Go sideways? Impossible! Go forward? Only thing to do! On we go!\" So up he got, and trotted along with his little sword held in front of him and one hand feeling the wall, and his heart all of a patter and a pitter.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "959 likes"
    },
    {
      "id": 15,
      "text": "\n      “Then something Tookish woke up inside him, and he wished to go and see the great mountains, and hear the pine-trees and the waterfalls, and explore the caves, and wear a sword instead of a walking-stick.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "929 likes"
    },
    {
      "id": 16,
      "text": "\n      “You have nice manners for a thief and a liar,\" said the dragon.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "837 likes"
    },
    {
      "id": 17,
      "text": "\n      “In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means comfort.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "726 likes"
    },
    {
      "id": 18,
      "text": "\n      “May the hair on your toes never fall out!”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "583 likes"
    },
    {
      "id": 19,
      "text": "\n      “There are no safe paths in this part of the world. Remember you are over the Edge of the Wild now, and in for all sorts of fun wherever you go.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "525 likes"
    },
    {
      "id": 20,
      "text": "\n      “The road goes ever on and on”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "511 likes"
    },
    {
      "id": 21,
      "text": "\n      “Now it is a strange thing, but things that are good to have and days that are good to spend are soon told about, and not much to listen to; while things that are uncomfortable, palpitating, and even gruesome, may make a good tale, and take a deal of telling anyway.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "403 likes"
    },
    {
      "id": 22,
      "text": "\n      “This thing all things devours:Birds, beasts, trees, flowers;Gnaws iron, bites steel;Grinds hard stones to meal;Slays king, ruins town,And beats high mountain down.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "398 likes"
    },
    {
      "id": 23,
      "text": "\n      “Farewell! O Gandalf! May you ever appear where you are most needed and least expected!”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "372 likes"
    },
    {
      "id": 24,
      "text": "\n      “Never laugh at live dragons, Bilbo you fool!”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "356 likes"
    },
    {
      "id": 25,
      "text": "\n      “I come from under the hill, and under the hills and over the hills my paths led. And through the air, I am he that walks unseen.I am the clue-finder, the web-cutter, the stinging fly. I was chosen for the lucky number.I am he that buries his friends alive and drowns them and draws them alive again from the water. I came from the end of a bag, but no bag went over me.I am the friend of bears and the guest of eagles. I am Ringwinner and Luckwearer; and I am Barrel-rider.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "344 likes"
    },
    {
      "id": 26,
      "text": "\n      “It was at this point that Bilbo stopped. Going on from there was the bravest thing he ever did. The tremendous things that happened afterward were as nothing compared to it. He fought the real battle in the tunnel alone, before he ever saw the vast danger that lay in wait.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "336 likes"
    },
    {
      "id": 27,
      "text": "\n      “A safe fairyland is untrue to all worlds.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "313 likes"
    },
    {
      "id": 28,
      "text": "\n      “Sorry! I don't want any adventures, thank you. Not Today. Good morning! But please come to tea -any time you like! Why not tomorrow? Good bye!”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "311 likes"
    },
    {
      "id": 29,
      "text": "\n      “Voiceless it cries,Wingless flutters,Toothless bites,Mouthless mutters.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "256 likes"
    },
    {
      "id": 30,
      "text": "\n      “A box without hinges, key, or lid,Yet golden treasure inside is hid.”\n    \n ",
      "author": "\n    J.R.R. Tolkien,\n  ",
      "book": "The Hobbit, or There and Back Again",
      "likes": "246 likes"
    }
  ],
  "lastScraped": "2026-06-15T00:42:22Z"
}
```

**SDK Code**

```python
import requests

url = "https://biblioreads.eu.org/api/works/quotes"

payload = { "queryURL": "https://www.goodreads.com/work/quotes/1540236" }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://biblioreads.eu.org/api/works/quotes';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"queryURL":"https://www.goodreads.com/work/quotes/1540236"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://biblioreads.eu.org/api/works/quotes"

	payload := strings.NewReader("{\n  \"queryURL\": \"https://www.goodreads.com/work/quotes/1540236\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://biblioreads.eu.org/api/works/quotes")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"queryURL\": \"https://www.goodreads.com/work/quotes/1540236\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://biblioreads.eu.org/api/works/quotes")
  .header("Content-Type", "application/json")
  .body("{\n  \"queryURL\": \"https://www.goodreads.com/work/quotes/1540236\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://biblioreads.eu.org/api/works/quotes', [
  'body' => '{
  "queryURL": "https://www.goodreads.com/work/quotes/1540236"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://biblioreads.eu.org/api/works/quotes");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"queryURL\": \"https://www.goodreads.com/work/quotes/1540236\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["queryURL": "https://www.goodreads.com/work/quotes/1540236"] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://biblioreads.eu.org/api/works/quotes")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```