Letterboxd API: List popular films
Lists Letterboxd films in popularity order for a week, month, year or all time, optionally filtered by genre and decade. Ratings and posters may be unavailable for some films.
Unofficial. Not affiliated with or endorsed by Letterboxd.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Genre optional
genre Film genre, for example horror; use all for any genre.
all (default)
- Decade optional
decade Release decade, for example 1990s; use all for any decade.
all (default)
- Period optional
period Popularity period, for example this_month.
this_month
One of
this_week,this_month,this_year,all_time. Defaultthis_week.- Max Results optional
max_results Maximum number of films to return, for example 36.
100
Whole number from 1 to 100. Default
36.
Input as JSON
{ "period": "this_month", "max_results": 100}Output
{ "films": [ { "rank": 1, "year": 2026, "title": "Resident Evil", "poster_link": "https://a.ltrbxd.com/resized/film-poster/1/3/0/2/7/1/7/1302717-untitled-resident-evil-reboot-0-70-0-105-crop.jpg?v=a688bf1bc7" , "average_rating": 3.78, "letterboxd_link": "https://letterboxd.com/film/resident-evil-2026/" }, { "rank": 2, "year": 2026, "title": "Coyote vs. Acme", "poster_link": "https://a.ltrbxd.com/resized/film-poster/1/0/8/9/0/8/8/1089088-coyote-vs-acme-0-70-0-105-crop.jpg?v=735eb10cc7" , "average_rating": 3.84, "letterboxd_link": "https://letterboxd.com/film/coyote-vs-acme/" }, { "rank": 3, "year": 2026, "title": "The Love Hypothesis", "poster_link": "https://a.ltrbxd.com/resized/film-poster/9/3/1/1/8/1/931181-the-love-hypothesis-0-70-0-105-crop.jpg?v=b925aa1882" , "average_rating": 3.23, "letterboxd_link": "https://letterboxd.com/film/the-love-hypothesis/" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"letterboxd.com/list_popular_films","input":{"period":"this_month","max_results":100}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "letterboxd.com/list_popular_films" , "input": { "period": "this_month", "max_results": 100 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "letterboxd.com/list_popular_films" , "input": { "period": "this_month", "max_results": 100 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run letterboxd.com/list_popular_films# with {"period":"this_month","max_results":100}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "genre": { "type": "string", "default": "all", "description": "Film genre, for example horror; use all for any genre." }, "decade": { "type": "string", "default": "all", "description": "Release decade, for example 1990s; use all for any decade." }, "period": { "enum": [ "this_week", "this_month", "this_year", "all_time" ], "type": "string", "default": "this_week", "description": "Popularity period, for example this_month." }, "max_results": { "type": "integer", "default": 36, "maximum": 100, "minimum": 1, "description": "Maximum number of films to return, for example 36." } }}Output schema
{ "type": "object", "required": [ "films" ], "properties": { "films": { "type": "array", "items": { "type": "object", "required": [ "rank", "title", "year", "average_rating", "poster_link", "letterboxd_link" ], "properties": { "rank": { "type": "integer", "description": "Rank in popularity for the selected filters." }, "year": { "type": [ "integer", "null" ] }, "title": { "type": "string" }, "poster_link": { "type": [ "string", "null" ] }, "average_rating": { "type": [ "number", "null" ], "description": "Average rating out of 5." }, "letterboxd_link": { "type": "string" } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
letterboxd.com/list_popular_films- Returns
- rank, title, year, average rating, poster link, Letterboxd link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method letterboxd.com/list_popular_films with the inputs above.
Ask your agent
- What are the most popular horror films on Letterboxd this week? Give me the top 20 with their average ratings.
- Show me the 50 most-watched 1980s science fiction movies of all time, with year and rating for each.
- Which comedies from the 2010s are trending this month? I'd like posters and links too.
- Top 10 most popular films right now on Letterboxd, any genre or decade.
- I need a ranked list of the most popular 1970s dramas this year, around 30 titles, including average rating.
See more
Lists TMDB homepage trending titles for today or this week in displayed order, with year, user score, overview and poster. The homepage shows up to 20 mixed movie and TV titles per period; the movie and TV filters select from those.
themoviedb.org/list_trendingLists titles in an IMDb movie or TV chart (Top 250 movies, Top 250 TV shows, most popular movies or TV shows) with ratings, votes, runtime, age rating and weekly rank movement for popularity charts. Popular charts contain up to 100 titles.
imdb.com/list_top_chartsLists Netflix's all-time most popular movies or TV shows by views in their first 91 days, with views, hours viewed and runtime.
netflix.com/list_most_popularLists Rotten Tomatoes movies in theaters, coming soon, or at home, by genre and site sort order, with scores, release dates, age ratings, posters and links.
rottentomatoes.com/list_moviesLists the highest-grossing movies of a calendar year, ranked by domestic or worldwide gross, with release dates and distributors.
boxofficemojo.com/list_top_grossing_moviesLists MyAnimeList's top anime in rank order for a selected ranking (all, airing, upcoming, TV, movies or most popular), with English title, score, type, episodes, airing dates and members.
myanimelist.net/list_top_animeGets Netflix's weekly Top 10 movies or TV shows worldwide (English or non-English lists, with views, hours viewed and runtime) or in one country (ranks and weeks in the Top 10 only) for the latest published week or the Monday-to-Sunday week containing a given date.
netflix.com/list_top_10Lists Fandango movies now playing or coming soon in U.S. theaters, in Fandango's order, with release dates, age ratings, runtimes and Rotten Tomatoes scores when shown.
fandango.com/list_now_playing