Google Books API
Search book results and available author and preview details.
What is this API?
Serqo’s Google Books API returns book results shown for a Google query as structured JSON. Use engine: "google" and type: "books"; entries may include a title, author text, publication year, description and preview availability.
Common use cases
- Discover books and authors associated with a subject or search phrase.
- Review publication details shown in book results.
- Compare book-result visibility across query and market settings.
Request example
POST https://api.serqo.io/v1/search
| Field | Value |
|---|---|
| engine | google |
| type | books |
Request headers
Create an API key and store it on your server. Send the API key in the x-api-key header.
| Header | Value | Description |
|---|---|---|
| Content-Type | application/json | JSON request body. |
| x-api-key | YOUR_API_KEY | API key used to authenticate the request. |
export SERP_API_KEY='YOUR_API_KEY'
curl https://api.serqo.io/v1/search \
-H "x-api-key: $SERP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"q": "history of cartography",
"engine": "google",
"type": "books",
"gl": "us",
"hl": "en"
}' Code examples
Use the same API key with a standard HTTP client. These examples require Node.js 22 or later, or Python 3.
const response = await fetch('https://api.serqo.io/v1/search', {
method: 'POST',
headers: { 'x-api-key': process.env.SERP_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({"q": "history of cartography","engine":"google","type":"books"}),
});
const result = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${result.error?.message ?? 'Search failed'}`);
console.log(result.data);import json
import os
from urllib.request import Request, urlopen
payload = {"q": "history of cartography","engine":"google","type":"books"}
request = Request(
'https://api.serqo.io/v1/search',
data=json.dumps(payload).encode(),
headers={
'x-api-key': os.environ['SERP_API_KEY'],
'Content-Type': 'application/json',
},
)
with urlopen(request) as response:
result = json.load(response)
print(result['data'])Parameters
The number of results returned per request depends on the search engine and may vary.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| q | string | Yes | — | Non-empty search query. |
| engine | string | No | Use google for this API. | |
| type | string | No | web | Use books for this API. |
| gl | string | No | — | Two-letter lowercase country code, for example us. |
| hl | string | No | — | Interface language code, for example en. |
| start | integer | No | — | Offset from 0 to 1000000. Use nextStart from the response. |
| safe | off | active | No | — | Explicit-content filter: off disables it, active enables it. |
| tbs | string | No | — | Google time filter, such as qdr:d, qdr:w or qdr:m. |
Only q is required by the API, but keep engine and type as shown for this search. A dash means the API does not assign a default. Unknown parameters return 422 INVALID_PARAM.
Response
HTTP 200. A real API response, trimmed to the first three results for readability. Field availability and result groups vary by the returned page; values can be null.
{
"success": true,
"requestId": "req_ecbfd102-3957-460b-bf91-23e614716bd8",
"data": {
"engine": "google",
"type": "books",
"query": {
"q": "history of cartography",
"gl": "us",
"hl": "en"
},
"searchInformation": {
"totalResults": 872000,
"timeTakenMs": 380,
"displayed": "About 872,000 results"
},
"results": [
{
"position": 1,
"type": "book",
"title": "History of Cartography",
"url": "https://books.google.com/books?id=OBeB4tDmJv8C&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6AF6BAgPEAM",
"displayedUrl": "books.google.com › books",
"domain": "books.google.com",
"source": null,
"date": null,
"snippet": null,
"snippetHighlightedWords": [],
"thumbnail": null,
"favicon": null,
"duration": null,
"price": null,
"rating": null,
"sitelinks": [
{
"title": "Leo Bagrow",
"url": "https://www.google.com/search?safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&udm=36&q=inauthor:%22Leo+Bagrow%22&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ9Ah6BAgPEAY"
},
{
"title": "Preview",
"url": "https://books.google.com/books?id=OBeB4tDmJv8C&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQuwV6BAgPEAg"
},
{
"title": "More editions",
"url": "https://www.google.com/books/edition/History_of_Cartography/OBeB4tDmJv8C?hl=en&gl=us&kptab=editions&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQmBZ6BAgPEAk"
}
],
"extensions": {}
},
{
"position": 2,
"type": "book",
"title": "The New Nature of Maps: Essays in the History of Cartography",
"url": "https://books.google.com/books?id=dFWPuU2x0dkC&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6AF6BAgMEAM",
"displayedUrl": "books.google.com › books",
"domain": "books.google.com",
"source": null,
"date": null,
"snippet": null,
"snippetHighlightedWords": [],
"thumbnail": null,
"favicon": null,
"duration": null,
"price": null,
"rating": null,
"sitelinks": [
{
"title": "J. B. Harley",
"url": "https://www.google.com/search?safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&udm=36&q=inauthor:%22J.+B.+Harley%22&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ9Ah6BAgMEAY"
},
{
"title": "Preview",
"url": "https://books.google.com/books?id=dFWPuU2x0dkC&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQuwV6BAgMEAg"
},
{
"title": "More editions",
"url": "https://www.google.com/books/edition/The_New_Nature_of_Maps/dFWPuU2x0dkC?hl=en&gl=us&kptab=editions&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQmBZ6BAgMEAk"
}
],
"extensions": {}
},
{
"position": 3,
"type": "book",
"title": "The History of Cartography",
"url": "https://books.google.com/books?id=-b4YAQAAMAAJ&q=history+of+cartography&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&printsec=frontcover&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6AF6BAgKEAM",
"displayedUrl": "books.google.com › books",
"domain": "books.google.com",
"source": null,
"date": null,
"snippet": null,
"snippetHighlightedWords": [],
"thumbnail": null,
"favicon": null,
"duration": null,
"price": null,
"rating": null,
"sitelinks": [
{
"title": "More editions",
"url": "https://www.google.com/books/edition/The_History_of_Cartography/-b4YAQAAMAAJ?hl=en&gl=us&kptab=editions&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQmBZ6BAgKEAc"
}
],
"extensions": {}
}
],
"features": {
"relatedSearches": [
{
"query": "2",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=10&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAE"
},
{
"query": "3",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=20&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAG"
},
{
"query": "4",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=30&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAI"
},
{
"query": "5",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=40&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAK"
},
{
"query": "6",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=50&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAM"
},
{
"query": "7",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=60&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAO"
},
{
"query": "8",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=70&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAQ"
},
{
"query": "9",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=80&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAS"
},
{
"query": "10",
"url": "https://www.google.com/search?q=history+of+cartography&safe=off&sca_esv=64345335af5ad8d5&hl=en&gl=us&udm=36&sxsrf=APpeQnvoIcRVB4FVbKksAsyxYwlRdMDL4A:1792732951815&ei=F-_aarSvMZHIptQPz668mQE&start=90&sa=N&sstk=AS6-VmJd8DkzmvnAZcPa63FGZDz-AN-XfHeKW1uf16bXdtfOpwC6mZSoMmJ6w3VnywudyXVVJhKD0FEVXnHSkejJFizziIX-s6dMDw&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ8tMDegQIEBAU"
}
],
"knowledgePanel": {
"title": null,
"subtitle": null,
"description": null,
"kgmid": null,
"attributes": {
"AutocompletePrediction": "Delete"
},
"sources": []
},
"books": [
{
"position": 1,
"title": "History of Cartography",
"link": "https://books.google.com/books?id=OBeB4tDmJv8C&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgPEAE",
"author": "Leo Bagrow",
"year": null,
"preview": null,
"snippet": "This expanded second edition of Bagrow and Skelton's History of Cartography marks the reappearance of this seminal work after a hiatus of nearly a half century.",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_11"
},
{
"position": 2,
"title": "The New Nature of Maps: Essays in the History of Cartography",
"link": "https://books.google.com/books?id=dFWPuU2x0dkC&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgMEAE",
"author": "J. B. Harley , Paul Laxton",
"year": "2001",
"preview": null,
"snippet": "In these essays the author draws on ideas in art history, literature, philosophy and the study of visual culture to subvert the traditional 'positivist' model of cartography and replace it with one grounded in an iconological and semiotic ...",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_4"
},
{
"position": 3,
"title": "The History of Cartography",
"link": "https://books.google.com/books?id=-b4YAQAAMAAJ&q=history+of+cartography&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&printsec=frontcover&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgKEAE",
"author": "John Brian Harley, David Woodward, Matthew H. Edney",
"year": "1987",
"preview": null,
"snippet": "For more than thirty years, the History of Cartography Project has charted the course for scholarship on cartography, bringing together research from a variety of disciplines on the creation, dissemination, and use of maps.",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_1"
},
{
"position": 4,
"title": "The World Through Maps: A History of Cartography",
"link": "https://books.google.com/books?id=kV3ybVPTN3sC&printsec=frontcover&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgNEAE",
"author": "John R. Short",
"year": "2003",
"preview": null,
"snippet": "An illustrated history of maps and mapmaking, including reproductions of 200 antique maps.",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_7"
},
{
"position": 5,
"title": "The History of Cartography - Volume 6, Book 2",
"link": "https://books.google.com/books?id=uwLLzgEACAAJ&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgOEAE",
"author": "John Brian Harley, David Woodward, Mark S. Monmonier",
"year": "1987",
"preview": "No preview",
"snippet": "But as the renown of the series and the comprehensiveness and acuity of the present volume demonstrate, the history of cartography has proven to be unexpectedly fertile ground.--Amazon.com.",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_9"
},
{
"position": 6,
"title": "History of Cartography: International Symposium of the ICA ... - Page v",
"link": "https://books.google.com/books?id=v0CYuQbTcOQC&pg=PR5&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgLEAE",
"author": "Elri Liebenberg, Imre Josef Demhardt",
"year": "2012",
"preview": null,
"snippet": "Found inside – Page v ... History of Cartography which took place at the University of Texas at Arlington on October 11–12, 2010. Its appear- ance in published form sets it apart from the ... cartographic developments during the History of Cartography : Preface.",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_2"
},
{
"position": 7,
"title": "Guide to the History of Cartography: An Annotated List of ...",
"link": "https://books.google.com/books?id=vc7QAAAAMAAJ&q=history+of+cartography&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&printsec=frontcover&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgSEAE",
"author": "Library of Congress. Geography and Map Division",
"year": "1973",
"preview": null,
"snippet": null,
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_13"
},
{
"position": 8,
"title": "A History of Cartography: 2500 Years of Maps and Mapmakers",
"link": "https://books.google.com/books?id=HxNmQgAACAAJ&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6AF6BAgREAE",
"author": "Charles Bricker , Ronald Vere Tooley",
"year": "1969",
"preview": "No preview",
"snippet": "Traces the exploration of each continent through contemporary maps.",
"thumbnailId": null
},
{
"position": 9,
"title": "The History of Cartography, Volume Four: Cartography in the ...",
"link": "https://books.google.com/books?id=m9fkDwAAQBAJ&pg=PA631&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgTEAE",
"author": "Matthew H. Edney, Mary Sponberg Pedley",
"year": "2020",
"preview": null,
"snippet": "Found inside – Page 631 Cartography in the European Enlightenment Matthew H. Edney, Mary Sponberg Pedley. claims . One theme evident in Enlightenment commen- tary was a sense of national mapping capability ... History of Cartography 631 History of Cartography .",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_15"
},
{
"position": 10,
"title": "The History of Cartography, Volume Six: Cartography in the ... - Page 11",
"link": "https://books.google.com/books?id=BZRfEAAAQBAJ&pg=PA11&dq=history+of+cartography&hl=en&newbks=1&newbks_redir=1&sa=X&ved=2ahUKEwj0lpTWss-XAxURpIkEHU8XLxMQ6wF6BAgUEAE",
"author": "Mark Monmonier",
"year": "2015",
"preview": null,
"snippet": "Found inside – Page 11 Cartography in the Twentieth Century Mark Monmonier. GENERAL ( SYSTEMATIC ) CARTOGRAPHY THEORY OF CARTOGRAPHY ... History of theoretical cartography History of cartographical methodology History of practical cartography FIG . 3 ...",
"thumbnailId": "dimg_F-_aarSvMZHIptQPz668mQE_17"
}
]
},
"pagination": {
"page": 1,
"start": 0,
"hasNext": true,
"nextStart": 10
},
"meta": {
"elapsedMs": 1338
}
},
"meta": {
"cache": "miss"
}
}
Response fields
| Field | Type | Description |
|---|---|---|
| data.query | object | Search query passed to the engine. |
| data.searchInformation | object | Reported result count and search timing, when provided. |
| success | boolean | Whether the request succeeded. True in this example. |
| requestId | string | Request identifier to include when troubleshooting. |
| data.type | string | Search type used for this response. |
| data.engine | string | Engine that returned the results. |
| data.results | array | Main result list. Check feature groups as well when present. |
| data.features | object | Additional result groups; groups not returned by the engine may be absent. |
| data.pagination | object | Current offset and next-page availability. |
| data.meta.elapsedMs | number | Search duration in milliseconds, not a performance guarantee. |
| meta.cache | string | null | hit, miss, or null if cache status is unknown. |
Result fields
Read data.features.books when present. Some results may instead appear in data.results; check both before treating a search as empty.
| Field | Type | Description |
|---|---|---|
| data.features.books[].position | integer | Book position. |
| data.features.books[].title | string | Book title. |
| data.features.books[].link | string | null | Book-page link. |
| data.features.books[].author | string | null | Author text shown in the result. |
| data.features.books[].year | string | null | Publication year text. |
| data.features.books[].preview | string | null | Preview availability text. |
| data.features.books[].snippet | string | null | Book description or matching excerpt. |
| data.features.books[].thumbnailId | string | null | Cover identifier, not an image URL. |
Main result entries
| Field | Type | Description |
|---|---|---|
| data.results[].domain | string | null | Destination domain, when available. |
| data.results[].favicon | string | null | Site icon when provided. |
| data.results[].sitelinks | array | Additional links nested under the result. |
| data.results[].sitelinks[].title | string | Sitelink label. |
| data.results[].sitelinks[].url | string | null | Sitelink destination. |
| data.results[].extensions | object | Other result-specific properties. |
| data.results[].snippetHighlightedWords | string[], optional | Highlighted terms in the snippet, when provided. |
| data.results[].position | integer | Rank on this results page, starting at 1. |
| data.results[].type | string | Result category: organic, news, image, video, shopping, local, forum, book, patent or ad. This can differ from the request type. |
| data.results[].title | string | null | Title shown in the result. |
| data.results[].url | string | null | Destination URL when resolved; it may be null. |
| data.results[].displayedUrl | string | null | URL or domain displayed by the engine; not always a clickable link. |
| data.results[].source | string | null | Source name or displayed domain. |
| data.results[].date | string | null | Date text when extracted; not necessarily an ISO timestamp. |
| data.results[].snippet | string | null | Result summary. |
| data.results[].thumbnail | string | null | Thumbnail URL or inline data URL, when provided. |
| data.results[].duration | string | null | Video duration text when provided. |
| data.results[].price | string | null | Price text when provided. |
| data.results[].rating | number | null | Rating when provided. |
Pagination
- Check
data.pagination.hasNext; stop when it is false. - Use
data.pagination.nextStartasstart. Keep the other search parameters unchanged. - Send the next request. Each page is a separate search request.
| Field | Type | Description |
|---|---|---|
| data.pagination.nextUrl | string | null | Search-engine URL for the next page, when available; use nextStart with this API. |
| data.pagination.requestedPage | integer | Page requested; may differ from the returned page if the engine does not provide it. |
| data.pagination.page | integer | Current page number. |
| data.pagination.start | integer | Current result offset. |
| data.pagination.hasNext | boolean | Whether another page is available. |
| data.pagination.nextStart | integer | null | Offset for the next request, or null when unavailable. |
Errors
{
"success": false,
"requestId": "req_example",
"error": {
"code": "INVALID_PARAM",
"message": "Unknown parameter \"page\"",
"retryable": false
}
} | Field | Type | Description |
|---|---|---|
| error.code | string | Machine-readable error code. |
| error.message | string | Reason the request failed. |
| error.retryable | boolean | Whether retrying is recommended. |
| error.retryAfterMs | number, optional | Minimum wait before retrying, in milliseconds. |
| HTTP status | Meaning | What to do |
|---|---|---|
| 400 | Invalid request or unsupported search type. | Check the query and engine/type combination. |
| 401 | Missing, invalid or revoked API key. | Check the authentication header and API key. |
| 402 | Insufficient credits. | Check your credit balance. |
| 403 | Permission or plan restriction. | Check account access and plan limits. |
| 422 | Invalid parameter. | Correct the parameter identified by error.message. |
| 429 | Request rate or queue limit. | Follow the retry rules below. |
| 5xx | Server or search service failure. | Keep the requestId; retry only if allowed. |
Retry rules
- Retry only when
error.retryableistrue. - If
error.retryAfterMsis present, wait at least that many milliseconds.
Pricing and limits
- Successful searches use credits at the applicable rate.
- Failed searches and timeouts are not charged.
- Cache hits are free at the default rate. Before searching, your available balance must cover the full request cost.
See plan pricing and rate-limit and credit details.
Frequently asked questions
Does a preview field mean the full book is available?
No. It reflects preview availability text shown in a result when present; it does not provide the book’s full text or guarantee access.
How are Books searches charged?
Successful searches use the applicable credit rate for the engine, type and country. Failed searches and timeouts release the reservation; cache hits are free at the default rate. See Pricing and limits below for the current rules.