Goodreads API endpoint
Returns an author's paginated attributed-quotes list (quote text, tags, like count, and — when the quote is credited to a specific book — that book's title, id, and work id).
/goodreads/author/{id}/quotesPath parameters:
id (required) — Goodreads author id, e.g. 153394.Query parameters:
page (optional, default 1).Response includes author_id, page, and quotes[] (id, text, author, book_title, book_id, work_id, tags[], likes, uri). book_title/book_id/work_id are omitted for general quotes not credited to a specific book.
| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| id | 30 | |
| text | 30 | |
| author | 30 | |
| book_title | 30 | |
| book_id | 30 | |
| work_id | 30 | |
| tags | 24 | median 2 entries |
| likes | 30 | 3,166 to 28,923, median 6,051 |
| uri | 30 | goodreads.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | Goodreads author id | 153394 | |
| page | integer | No | 1-based page number, default 1 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/goodreads/author/153394/quotes?page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"author_id": "153394",
"page": 1,
"quotes": [
{
"id": "290707",
"text": "“You love me. Real or not real?\"I tell him, \"Real.”",
"author": "Suzanne Collins",
"book_title": "Mockingjay",
"book_id": "7260188",
"work_id": "8812783",
"tags": [
"katniss",
"love",
"peeta"
],
"likes": 28863,
"uri": "https://www.goodreads.com/quotes/290707-you-love-me-real-or-not-real-i-tell-him"
}
],
"source_url": "https://www.goodreads.com/author/quotes/153394?page=1"
}
}Request schema
No body schema
Response schema
#/definitions/goodreads.authorQuotesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | goodreads.AuthorQuotesResponse | No | ||||
| data.author_id | string | No | ||||
| data.page | integer | No | ||||
| data.quotes | array | No | ||||
| data.quotes[].author | string | No | ||||
| data.quotes[].book_id | string | No | ||||
| data.quotes[].book_title | string | No | ||||
| data.quotes[].id | string | No | ||||
| data.quotes[].likes | integer | No | ||||
| data.quotes[].tags | array | No | ||||
| data.quotes[].text | string | No | ||||
| data.quotes[].uri | string | No | ||||
| data.quotes[].work_id | string | No | ||||
| data.source_url | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/goodreads/author/153394/quotes?page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"