> **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/users-username-films>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/letterboxd/users-username-films.mdx>

---

# Letterboxd Watched Films API

A member's watched films, newest first, with their rating and like on each row.

`GET /v1/letterboxd/users/{username}/films` returns `data.user`, `data.totalFilms`, and `data.films`. Each row has a `film` reference (`slug`, `id`, `shortCode`, `shortUrl`, `title`, `year`), the member's `rating`, and `liked`. Rows are ordered most recently watched first. One call returns the first 72; there is no `page` or `cursor` parameter and no next page. `totalFilms` is the member's all-time count, so it can be larger than the number of rows returned. An empty list is a valid found response, including for a member who has watched nothing.

## Request

- **Endpoint:** `GET /v1/letterboxd/users/{username}/films`
- **Credits:** 1 credit
Failed requests are free
A not-found answer is still charged
- **Input:** by username
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/letterboxd/users/username/films/get)
- **Platform page:** [/platforms/letterboxd](https://www.socialfetch.dev/platforms/letterboxd)

## FAQ

### How many films does one call return?

72. The route takes no page or cursor, so a call always returns the 72 most recently watched. totalFilms is the member's full count.

### How do I tell a watched film from a watchlist film?

Watched rows carry the member's rating and liked flag. A watchlist row is a film reference only. The two routes are /users/{username}/films and /users/{username}/watchlist.

### Can totalFilms and the row count differ?

Yes. totalFilms is the all-time count, while films holds the first 72 only. That is expected on any member with more than 72 watched films.

### How many credits does a 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 films is empty. not_found means the username does not exist, and data.user is null.
