Letterboxd Diary API
Every diary entry with its watched date, rating, like, rewatch flag and review link.
GET /v1/letterboxd/users/{username}/diary1 credit Failed requests are free A not-found answer is still charged
About this endpoint
GET /v1/letterboxd/users/{username}/diary returns data.user, data.totalEntries, and data.entries. Each entry has viewingId, a film reference, watchedDate as an ISO date, rating, liked, rewatch, hasReview, entry, entryUrl and reviewUrl. entry is the viewing number from entryUrl (null for the first viewing), so a rewatch can be passed to the review route as entry. The diary is the dated record of what a member watched, so it is the right source for a viewing history or a year-in-review, not the watched films route, which is a single all-time grid.
One call returns the 50 most recent entries; there is no page or cursor parameter and no next page, so a long diary is not returned in full. hasReview tells you whether the entry has a review before you call the review route; entryUrl is the viewing's own link and reviewUrl is the link to the review.
Letterboxd Diary API FAQ
What is the difference between diary and watched films?
The diary is dated: it records each viewing, including rewatches, with watchedDate and viewingId. The watched films route is a single grid of films the member has seen, with the current rating and like.
How do I know an entry has a review?
Read hasReview. When it is true, reviewUrl links to the review. To fetch the full review text, call GET /v1/letterboxd/users/{username}/films/{slug}/review and add entry when the URL carries a rewatch number.
How many entries does one call return?
50. The route takes no page or cursor. totalEntries is the member's full count.
How many credits does a diary lookup cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
What does lookupStatus mean here?
found means the member exists, even if the diary is empty. not_found means the username does not exist, and data.user is null.
Other Letterboxd endpoints
- FilmGET /v1/letterboxd/films/{slug}
- FilmographyGET /v1/letterboxd/people/{role}/{slug}/films
- MemberGET /v1/letterboxd/users/{username}
- Watched filmsGET /v1/letterboxd/users/{username}/films
- ReviewsGET /v1/letterboxd/users/{username}/reviews
- ReviewGET /v1/letterboxd/users/{username}/films/{slug}/review
- WatchlistGET /v1/letterboxd/users/{username}/watchlist
- FollowersGET /v1/letterboxd/users/{username}/followers