> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/letterboxd>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/letterboxd.mdx>

---

# Letterboxd API. Films and members as JSON.

Films, member diaries, reviews, watchlists, lists, follower graphs and tags. 16 routes under `/v1/letterboxd`, one credit per request.

- 16 routes
- Films + members
- 1 credit per request

Social Fetch exposes 16 routes under `/v1/letterboxd`. Films are named by their slug (`parasite-2019`), people and studios by a role plus a slug (`director/bong-joon-ho`), and members by username (`dave`). Every response uses the `{ data, meta }` envelope, and every lookup carries `data.lookupStatus`: `found` or `not_found`. The watchlist route adds `restricted` for a private list. HTTP 200 only means the request finished, so branch on `lookupStatus` before storing a row.

`GET /v1/letterboxd/films/{slug}` returns the film as one object: `id`, `slug`, `title`, `year`, `originalTitle`, `tagline`, `description`, `runtimeMinutes`, TMDB and IMDb ids, `directors`, `cast` with `character`, `crew` grouped by department, `studios`, `countries`, languages, `genres`, `themes`, `releases` with ISO dates, `rating` with `average` and `count`, `similar` films, `popularReviews`, and the collection. `GET /v1/letterboxd/people/{role}/{slug}/films` returns a person or studio filmography with `name`, `heading`, `tmdbId`, `image`, `bio`, `bioTruncated`, and `films`; the role can be any crew role on the film, such as `producer`, `editor` or `cinematography`.

Member routes cover watched films, diary entries, reviews, the public watchlist, lists, followers, following, recent activity, tags and all-time statistics; a popular-members index lists active accounts with their public counts. Each member list carries the member header. List routes return one page and take no `page` or `cursor` parameter: 72 watched films, 50 diary entries, 12 reviews, 28 watchlist films, 12 lists, 25 followers or following accounts, 100 list films, up to 120 tags, 30 popular members, every film for a director or actor (the first 24 for a studio). `user.get` returns the public header and `totalFilms` only, not the bio, location, website, favourites, or the member's own follower count.

## What you can get

- Films with cast and character names, crew by department, studios, countries, languages, genres, themes, release dates, rating summary, similar films and popular reviews.
- Director, actor, producer, writer, composer and studio filmographies, plus the person's TMDB id, portrait and biography. A studio call returns its first 24 films.
- Member watched films with rating and like, diary entries with watched date and rewatch, and review cards with truncated text; the review route returns the full text.
- One review with the full text, rating, watched date, tags, likes and rewatch number.
- Public watchlists, member lists, lists with films, follower and following rows with the member's own counts, recent activity and tags.
- Typed `lookupStatus` on every route, one page per call with the item counts stated on each route, and all 16 routes at one credit per request.

## Letterboxd endpoints

| Endpoint | Request | Credits | Docs |
| --- | --- | --- | --- |
| Film | GET /v1/letterboxd/films/{slug} | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/films/slug/get) |
| Filmography | GET /v1/letterboxd/people/{role}/{slug}/films | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/people/role/slug/films/get) |
| Member | GET /v1/letterboxd/users/{username} | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/get) |
| Watched films | GET /v1/letterboxd/users/{username}/films | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/films/get) |
| Diary | GET /v1/letterboxd/users/{username}/diary | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/diary/get) |
| Reviews | GET /v1/letterboxd/users/{username}/reviews | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/reviews/get) |
| Review | GET /v1/letterboxd/users/{username}/films/{slug}/review | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/films/slug/review/get) |
| Watchlist | GET /v1/letterboxd/users/{username}/watchlist | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/watchlist/get) |
| Followers | GET /v1/letterboxd/users/{username}/followers | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/followers/get) |
| Following | GET /v1/letterboxd/users/{username}/following | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/following/get) |
| Activity | GET /v1/letterboxd/users/{username}/activity | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/activity/get) |
| Statistics | GET /v1/letterboxd/users/{username}/stats | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/stats/get) |
| Popular members | GET /v1/letterboxd/members/popular | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/members/popular/get) |
| Tags | GET /v1/letterboxd/users/{username}/tags | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/tags/get) |
| Lists | GET /v1/letterboxd/users/{username}/lists | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/lists/get) |
| List | GET /v1/letterboxd/users/{username}/lists/{slug} | 1 credit Failed requests are free A not-found answer is still charged | [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/lists/slug/get) |

## How to start

1. **Create an API key.** Sign up at Social Fetch and copy a key (`sfk_…`). New accounts get 100 free credits, enough to try each Letterboxd route against real films and members.
2. **Pick the route and identifier.** Use `GET /v1/letterboxd/films/parasite-2019` for a film, `GET /v1/letterboxd/users/dave/diary` for a diary, or `GET /v1/letterboxd/users/dave/films/avatar-fire-and-ash/review` for a review. Send `x-api-key` on every request.
3. **Branch and bill.** Check `data.lookupStatus` before writing a row. List routes return one page per call, with no page or cursor to follow. Bill from `meta.creditsCharged` and log `meta.requestId` for support.

## Pricing

Every Letterboxd route charges 1 credit per completed request. Credits never expire on pay-as-you-go packs. `meta.creditsCharged` on every response is the billing source of truth.

## Compared with the official API

Letterboxd exposes films, member diaries, reviews and lists separately. Social Fetch returns them under one JSON envelope with shared film and member shapes, typed `lookupStatus` values and absolute links. Posters, avatars and other images are linked, never rehosted.

## FAQ

### Is there a Letterboxd API for films and members?

Yes. Social Fetch has 16 Letterboxd routes under /v1/letterboxd: film, filmography, member, watched films, diary, reviews, one review, watchlist, lists, one list, followers, following, activity, tags, statistics and popular members. Authenticate with your Social Fetch API key in x-api-key.

### How do I identify a film, person or member?

Films use the slug from the film URL, for example parasite-2019. People and studios use a role such as director, actor, producer, editor, writer, composer or studio plus the slug, for example /people/director/bong-joon-ho/films. A TMDB contributor keeps its colon, for example /people/director/contributor:61567/films. Members use the username from the profile URL.

### What does a film response include?

On found, film carries id, slug, title, year, originalTitle, tagline, description, runtimeMinutes, tmdb, imdbId, directors, cast with character names, crew grouped by department, studios, countries, primaryLanguage, spokenLanguages, alternativeTitles, genres, themes, releases, poster, backdrop, trailer, rating, similar, popularReviews and collection. spokenLanguages mirrors primaryLanguage when only one language is listed. The top-level url is the film URL.

### How do I get the full text of a review?

GET /v1/letterboxd/users/{username}/reviews returns review cards. When the review text is truncated, textTruncated is true. Call GET /v1/letterboxd/users/{username}/films/{slug}/review for the full text, tags, likes and watched date. Omit entry for the viewing without a number; rewatch tells you whether it is a rewatch. When the review URL carries a number, add entry and treat it as best effort: a refusal is an HTTP 503 and is not billed. A viewing with no review text is found with text null.

### Why is the member response so small?

GET /v1/letterboxd/users/{username} returns the public header (username, displayName, avatar, badge) and totalFilms. The route does not return the bio, location, website, favourites, follower count or following count, so those fields are not invented.

### How many items does a list route return?

One page per call. List routes take no page or cursor and the response has no next page. A call returns 72 watched films, 50 diary entries, 12 reviews, 28 watchlist films, 12 lists, 25 followers or following accounts, 100 list films, up to 120 tags or 30 popular members; a director or actor filmography returns every film and a studio returns its first 24.

### Can I read a private watchlist?

No. The watchlist route returns lookupStatus restricted for a private watchlist, and films is empty. Public watchlists return found with the first 28 films. A member that does not exist returns not_found.

### Does a review include its comments?

No. GET /v1/letterboxd/users/{username}/films/{slug}/review returns the review, author, film, rating, watchedDate, text, containsSpoilers, tags, likes and url. A viewing with no review text is found with text null. Comment threads under a review are not exposed.

### How much does the Letterboxd API cost?

Every Letterboxd route charges 1 credit per completed request. New accounts start with 100 free credits. Check meta.creditsCharged on each response for the amount actually billed.

### Does HTTP 200 mean the film or member exists?

No. HTTP 200 means the request finished. Check data.lookupStatus: found means the entity was returned, not_found means it does not exist, and restricted means the watchlist is private. Persist meta.requestId when you need to debug a miss.

## Related

- [Letterboxd Film API](https://www.socialfetch.dev/platforms/letterboxd/films-slug): Film identity, cast, crew, releases, rating and similar films (`GET /v1/letterboxd/films/{slug}`).
- [Letterboxd Diary API](https://www.socialfetch.dev/platforms/letterboxd/users-username-diary): A member's diary entries with dates, ratings, likes and rewatch flags (`GET /v1/letterboxd/users/{username}/diary`).
- [Letterboxd Review API](https://www.socialfetch.dev/platforms/letterboxd/users-username-films-slug-review): One review with its full text, tags and rewatch number (`GET /v1/letterboxd/users/{username}/films/{slug}/review`).
- [Letterboxd List API](https://www.socialfetch.dev/platforms/letterboxd/users-username-lists-slug): A list with its description, tags and first 100 films (`GET /v1/letterboxd/users/{username}/lists/{slug}`).
- [Letterboxd Followers API](https://www.socialfetch.dev/platforms/letterboxd/users-username-followers): Follower rows with display name, avatar and counts (`GET /v1/letterboxd/users/{username}/followers`).
- [Letterboxd Activity API](https://www.socialfetch.dev/platforms/letterboxd/users-username-activity): Recent activity as watch, review, list and story entries (`GET /v1/letterboxd/users/{username}/activity`).
- [Ask in plain English](https://www.socialfetch.dev/ask): Route a natural-language film or member question to the matching Letterboxd operation.
- [Hosted MCP](https://www.socialfetch.dev/mcp): Call Letterboxd tools from Cursor or Claude with the same credit metering as REST.
