When I started building Book Assembly, I did what every sensible developer does: I reached for the free APIs.
Google Books has a public API. Open Library is completely free. Between them, I figured I had book data covered. No need to pay for anything.
That worked fine for months. Then it didn't.
A few days ago, book covers stopped loading. The culprit: HTTP 429 - Too Many Requests. Google wasn't blocking the API calls - the metadata requests were fine. It was the cover images getting rate limited.
Every book in your library needs a cover image. Every search result shows covers. Open the app, scroll through your books, and that's dozens of image requests. Google Books serves cover images from their CDN, and they're not keen on you hammering it.
The API itself has a documented 1,000 requests/day limit. The image CDN? No documentation, just 429s when you've annoyed them enough.
When Google started returning 429s, the app was effectively broken. Users couldn't add books. That's the core functionality.
I had a few options:
I went with option 3. Switched the primary lookup to ISBNdb, which costs about £10-20/month depending on usage.
Better data, as it turns out. ISBNdb has:
Open Library is still there as a fallback. If ISBNdb doesn't have a book or goes down, the app falls back to the free source. But it's no longer the primary path.
Free APIs are great for prototyping. They let you build something without upfront costs. But they come with strings attached:
For a side project you're serious about, there's a point where paying for infrastructure is the right call. It's not a lot of money in the scheme of things, and it means the app actually works.
The irony is that I spent more time working around Google's rate limits than the paid service costs in a year. Sometimes the free option is the expensive one.
Book Assembly uses ISBNdb for book lookups, with Open Library as a fallback. If you're building something similar, budget for your data sources early - your future self will thank you.