Letterboxd API Scraper
Pricing
from $2.54 / 1,000 film rows
Letterboxd API Scraper
Scrape Letterboxd public film data: search & browse films, full film detail (genres, directors, rating, description, poster), popular reviews, list films, and optional statistics (watches/likes/ratings/fans + rating histogram). Read-only, guest access, no account.
Pricing
from $2.54 / 1,000 film rows
Rating
0.0
(0)
Developer
R.L.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Security
Limited permissionsShare
Letterboxd Scraper
Scrape public film data from Letterboxd straight from its official mobile API — search & browse films, full film detail, popular reviews, and the films in any list, with optional per-film statistics. Read-only, guest access, no account (the actor mints Letterboxd's own anonymous app token).
Modes
| Mode | Returns | Key inputs |
|---|---|---|
| Search films | Films matching a query | query |
| Browse films (by genre) | Popular films, narrowed by any of the filters | genre, decade, year, country, language |
| Film details (by ID) | Full records for given films | films, filmIds |
| Film reviews (by ID) | Popular reviews for one film | filmId, reviewsSort |
| List films (by list ID) | The films in a Letterboxd list | listId |
Films and lists can be given by title, Letterboxd URL (https://letterboxd.com/film/parasite/)
or boxd.it short link (https://boxd.it/18kE) — the raw filmIds / filmId / listId fields
stay available as power-user overrides.
Browse filters
All five narrow the same popular-films feed and combine freely. decade is a decade's first
year (1990, not 1990s), country is an ISO 3166-1 alpha-2 code (KR, JP) matched against
a film's production countries, and language is ISO 639-1 (ko, ja) matched against its
spoken languages. Leave them all empty for the unfiltered popular feed.
Turn on Include film statistics to add average rating and counts of watches, likes, ratings, fans, lists and reviews (plus the rating histogram) to every film returned. It is one extra API request per film, charged as its own event. If that request fails, the film is still delivered and still billed — as a plain film row, without the statistics columns.
Output
Film rows: film_id, name, original_name, year, runtime, tagline, description,
rating, genres, directors, countries, languages, themes, top250_position,
poster_url, letterboxd_url, adult. With statistics: watches, likes, ratings_count,
fans, lists_count, reviews_count, rating_histogram.
Five of those come only from Film details. Search, Browse and List films read Letterboxd's
film summary, which does not carry them, so tagline, description, countries, languages
and themes are null on every row of those three modes (measured across five runs,
2026-11-01). Everything else is filled in every mode. To get the full record, take the
film_id values from a Search or Browse run and feed them into Film details.
Review rows: review_id, film_id, film_name, film_year, rating, review,
contains_spoilers, like_count, comment_count, when_created, when_updated, author,
author_username, review_url.
Two columns worth reading carefully
ratingis on Letterboxd's 0-5 scale, to full precision —4.5142172380887375for Parasite, which the site rounds to the 4.5 stars you see. On a review row it is that member's own star rating, andnullfor a review left without one.top250_positionis a Top 500 rank, despite the name. It passes through Letterboxd's own legacy field, and measured over the official list on 2026-11-01 it carries values up to 400 — films at ranks 251, 301 and 400 all have one. Filtering on "not null" gives you 500 films, not 250. The column keeps the upstream's name so existing consumers do not break.
Notes
- Letterboxd film/list IDs are short base62 strings (e.g.
2a9q= Fight Club). Get them from a Search or Browse run, then feed them into the detail / reviews / list modes. - The API is not bot-gated; a proxy is optional.
- Review text is plain text with its paragraphs kept as blank lines. It comes from Letterboxd's
own markup rather than the HTML copy of the same review, so punctuation arrives as
punctuation (
they're, notthey're). maxItemscounts rows, and a statistics-enriched film is still one row.
Pricing
The current price of every event is on the Pricing tab of this Actor's page in Apify Store. That tab is generated from the Actor's own pricing record, so it is always current, and your plan's rung is applied automatically. A figure repeated here would be a second copy that drifts out of date.
You can cap what any single run may spend with Max total charge.