Book Data Sources
Where we get book metadata (titles, authors, covers, descriptions, ISBNs).
Requirements
- Accurate metadata (title, author, publication date)
- High-quality cover images
- ISBN-10 and ISBN-13 support
- Good coverage of both popular and niche titles
- Reasonable API costs at scale
Options
| Source | Pros | Cons |
|---|---|---|
| Hardcover | Modern API, good data quality, book-focused community | Newer, smaller catalog |
| ISBNdb | Comprehensive ISBN database, excellent coverage | Paid API (~$10/mo for 1k requests) |
| Open Library | Free, open source, large catalog | Inconsistent data quality, missing covers |
| Google Books | Large catalog, free tier | Rate limits, inconsistent covers, TOS restrictions |
Evaluation Criteria
Hardcover
- Built by book lovers, for book lovers
- API designed for reading apps
- Community-contributed data
- Worth evaluating for primary source
ISBNdb
- 32+ million books
- REST API with JSON responses
- Includes covers, descriptions, subjects
- Paid but reasonable pricing
- Good for comprehensive ISBN lookups
Open Library
- Part of Internet Archive
- Fully open data
- Covers API separate from book API
- Data quality varies significantly
- Good as fallback, not primary
Google Books
- Largest catalog
- Free tier available
- Cover quality inconsistent
- Rate limits can be restrictive
- TOS may restrict some use cases
Strategy
User searches for book
│
▼
┌─────────────────┐
│ Primary Source │ ← Hardcover or ISBNdb (TBD)
└────────┬────────┘
│ Not found?
▼
┌─────────────────┐
│ Fallback Source │ ← Open Library
└────────┬────────┘
│ Not found?
▼
┌─────────────────┐
│ Manual Entry │ ← User provides details
└─────────────────┘Caching
- Cache book metadata in our database
- Refresh on-demand or periodically
- Store covers in S3/CDN
- Reduce API calls and improve performance
Open Questions
- [ ] Which source has best cover image quality?
- [ ] How do we handle books with multiple editions?
- [ ] Do we need to support non-English books initially?
- [ ] What's the cost projection at 10k, 100k, 1M users?