PDF Books World APIpdfbooksworld.com ↗
Search and browse public domain PDF books from pdfbooksworld.com. Get titles, authors, descriptions, cover images, and related books via 3 endpoints.
What is the PDF Books World API?
The PDF Books World API provides access to public domain book metadata across 3 endpoints, covering search, book details, and popular listings. The search_books endpoint accepts keyword queries and optional category filters, returning paginated results with title, author, description snippets, and cover image URLs. The get_book_details endpoint exposes full synopses and related book lists for individual titles identified by their URL slug.
curl -X GET 'https://api.parse.bot/scraper/4171c76f-be96-4912-8428-daec733921c7/search_books?page=1&query=shakespeare&category_id=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pdfbooksworld-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: PDF Books World SDK — search, browse popular, and get details."""
from parse_apis.pdf_books_world_api import PdfBooksWorld, BookNotFound
client = PdfBooksWorld()
# Search for books about Shakespeare — limit caps total items fetched.
for book in client.booksummaries.search(query="shakespeare", limit=5):
print(book.title, "|", book.author)
# Drill-down: take one result, then fetch full details via the summary→detail nav.
summary = client.booksummaries.search(query="adventure", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.author, detail.description[:120])
# Browse the curated popular books list.
for popular in client.booksummaries.list_popular(limit=3):
print(popular.title, popular.slug, popular.author)
# Typed error handling: catch BookNotFound on a bad slug.
try:
bad_summary = client.booksummaries.search(query="nonexistent-xyz-000", limit=1).first()
if bad_summary:
bad_summary.details()
except BookNotFound as exc:
print(f"Book not found: {exc.slug}")
print("exercised: booksummaries.search / booksummaries.list_popular / BookSummary.details")
Full-text search over the PDF Books World library. Returns paginated book summaries matching the query keywords. Results include title, author, description snippet, and cover image. Pagination via integer page number; an empty books array signals no matches.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keywords (e.g. 'shakespeare', 'adventure', 'science fiction'). |
| category_id | string | Category ID to filter results. Use '0' for all categories. Known IDs include '383' (Fiction), '467' (Novels), '384' (Non Fiction), '382' (Academic & Text). |
{
"type": "object",
"fields": {
"page": "integer - current page number",
"books": "array of BookSummary objects with title, slug, author, author_url, description, image_url",
"query": "string - the search query used",
"total_pages": "integer - total number of pages available",
"has_next_page": "boolean - whether more pages exist"
}
}About the PDF Books World API
What the API Covers
The PDF Books World API surfaces metadata for free public domain books hosted on pdfbooksworld.com. All three endpoints return book objects containing at minimum: title, slug, author, author_url, description, and image_url. The slug field is the URL path segment used to identify a specific book (e.g. Shakespearean-Tragedy-by-AC-Bradley) and is the required input for get_book_details.
Searching and Filtering
The search_books endpoint accepts a required query string (e.g. 'adventure', 'science fiction', 'darwin') and optional page and category_id parameters. Use category_id: '0' to search across all categories. The response includes total_pages and has_next_page booleans to support iterating through paginated result sets. This makes it straightforward to collect full result sets for a given query across multiple pages.
Book Detail and Discovery
get_book_details returns a richer record for a single title, including the full description (synopsis) and a related_books array of objects with title and url. This related books list can serve as a graph traversal mechanism for discovering thematically connected titles. The list_popular_books endpoint takes no parameters and returns the site's curated list of highly-downloaded titles — useful as a seed list for catalog builds or recommendation features.
Coverage Notes
All content reflects the public domain catalog on pdfbooksworld.com. The API returns metadata only — cover images via image_url, text descriptions, and author attribution — not the PDF file content itself. Category IDs for filtering search_books results correspond to genre groupings on the source site.
The PDF Books World API is a managed, monitored endpoint for pdfbooksworld.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pdfbooksworld.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pdfbooksworld.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a public domain book search interface using
search_bookswith keyword and category filtering. - Populate a reading list application with cover images and synopses from
get_book_details. - Seed a book recommendation engine using the
related_booksfield returned per title. - Compile a ranked catalog of popular public domain titles using
list_popular_books. - Aggregate author metadata by collecting
authorandauthor_urlfields across paginated search results. - Cross-reference public domain titles against other book datasets using
slugortitleas identifiers.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does pdfbooksworld.com offer an official developer API?+
What does `get_book_details` return beyond what `search_books` provides?+
get_book_details returns the full book description (complete synopsis rather than a snippet) and a related_books array listing titles with their URLs. The search endpoint returns only a short description snippet alongside the standard book fields.Can I retrieve the actual PDF file content through this API?+
search_books, get_book_details, and list_popular_books. You can fork it on Parse and revise to add an endpoint that resolves and returns the direct PDF download URL from a book's detail page.How does pagination work in `search_books`?+
page (current page number), total_pages, and has_next_page. Pass an integer page parameter to advance through result sets. There is no offset or cursor parameter — page-number pagination only.Does the API expose category listings or a category index?+
category_id parameter in search_books, but there is no endpoint that lists all available categories and their corresponding IDs. You can fork the API on Parse and revise it to add a category listing endpoint.