Letterboxd Scraper
Pricing
from $3.00 / 1,000 films
Letterboxd Scraper
Extract films, reviews, and watch history from Letterboxd. Get titles, directors, cast, genres, ratings, and full user reviews. Search by keyword or paste film, member, or list URLs. Films and reviews returned as separate rows.
Pricing
from $3.00 / 1,000 films
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Pull films and their user reviews from Letterboxd at scale — title, director, full cast, genres, runtime, country, average rating, ratings count, plus every review with its star rating, full text, spoiler flag, and date. Films and reviews come back as separate, joinable rows. Built for film researchers, data scientists, and recommendation-engine builders who need structured Letterboxd data without collecting it title by title.
Why This Scraper?
- 16 film fields per title — director, full cast list, genres, runtime in minutes, synopsis, tagline, country of origin, original language, poster URL, plus Letterboxd's 0–5 average rating, ratings count, and review count.
- Films and reviews as separate, joinable rows — every output row carries a
recordTypeoffilmorreview, and each review references its parent film byfilmSlugandfilmTitleso you can join the two sides cleanly. - Star ratings and spoiler flags on every review — capture the reviewer's username and display name, the half-star rating (0–5), the full review text, the spoiler flag, and the publish date for sentiment and audience analysis.
- Auto-detects film, member, and list URLs — paste a film page, a member profile, or a curated list and the scraper figures out what to pull. No mode toggle, no separate inputs.
- Member watch histories and curated lists — point it at any member's films or a published list to harvest hundreds of titles in one run, far beyond what keyword search returns.
- Per-film review cap you control — set
maxReviewsPerFilmto keep runs lean (default 20, most-popular-first) or set it to 0 to pull every review on a title. - Unrated reviews stay honest — a review with no star comes back as
rating: null, never a misleading zero, so your rating distributions aren't skewed. - Reviews don't count against your film cap —
maxResultslimits films only, so a 50-film run with reviews on still returns all 50 films plus their reviews.
Use Cases
Film Research & Recommendation
- Build a structured catalogue of films with director, cast, genre, and runtime
- Train and evaluate recommendation engines on real audience ratings
- Compare average ratings and ratings counts across genres or directors
- Assemble a director or franchise filmography from a curated list
Sentiment & Review Analysis
- Mine review text for sentiment, themes, and recurring praise or complaints
- Measure how spoiler-flagged reviews differ from spoiler-free ones
- Track a film's star-rating distribution from the most popular reviews
- Compare critical reception between two films side by side
Market & Audience Research
- Gauge audience reception for a release using ratings count and review volume
- Profile a member's taste from their watch history and personal ratings
- Benchmark a genre's typical rating and review engagement
- Identify under-reviewed titles with high ratings for content gaps
Journalism & Content
- Source quotes and reactions for a film feature or retrospective
- Compile "most-loved" lists ranked by Letterboxd average rating
- Fact-check release year, runtime, and country for an article
- Build year-end roundups from a list of nominees or festival selections
Getting Started
Search by Keyword
The simplest run — search a film title and pull metadata plus reviews:
{"searchTerms": ["parasite"],"maxResults": 10}
Specific Films by URL
Paste Letterboxd film pages to pull exactly the titles you want:
{"startUrls": ["https://letterboxd.com/film/parasite-2019/","https://letterboxd.com/film/portrait-of-a-lady-on-fire/"],"maxReviewsPerFilm": 50}
Member Watch History or a Curated List
Harvest every film in a member's history or a published list, with reviews off for a faster, cheaper run:
{"startUrls": ["https://letterboxd.com/dave/films/","https://letterboxd.com/crew/list/official-top-250-narrative-feature-films/"],"includeReviews": false,"maxResults": 250}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | [] | Letterboxd URLs — film pages (/film/parasite-2019/), member profiles (/username/), or curated lists (/username/list/my-favourites/). The scraper auto-detects which kind each URL is. |
searchTerms | string[] | ["parasite"] | Film titles or keywords to search on Letterboxd. Each term returns the matching films. Ignored when you supply URLs above. |
Output Options
| Parameter | Type | Default | Description |
|---|---|---|---|
includeReviews | boolean | true | Collect user reviews for each film as their own rows (reviewer, star rating, full text, spoiler flag, date). Turn off for a faster, cheaper run that returns only film metadata. |
maxReviewsPerFilm | integer | 20 | Cap on reviews captured per film, most popular first. Set to 0 to collect every available review for each film. Ignored when includeReviews is off. |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 50 | Cap on the total number of films collected across all URLs and search terms. Set to 0 for no cap. Reviews collected for these films do not count against this limit. |
Output
Every row carries a recordType field — film or review — so the two sides are easy to split and rejoin downstream. Each review references its parent film by filmSlug and filmTitle.
Film (recordType: "film")
{"recordType": "film","filmSlug": "parasite-2019","title": "Parasite","year": 2019,"director": "Bong Joon-ho","cast": ["Song Kang-ho", "Lee Sun-kyun", "Cho Yeo-jeong", "Choi Woo-shik"],"genres": ["Comedy", "Thriller", "Drama"],"runtime": 133,"averageRating": 4.56,"ratingsCount": 1284503,"reviewCount": 312045,"language": "Korean","country": "South Korea","tagline": "Act like you own the place.","description": "All unemployed, Ki-taek's family takes peculiar interest in the wealthy and glamorous Parks...","posterUrl": "https://a.ltrbxd.com/resized/film-poster/parasite.jpg","filmUrl": "https://letterboxd.com/film/parasite-2019/","scrapedAt": "2026-06-28T14:30:00Z"}
| Field | Type | Description |
|---|---|---|
recordType | string | Always "film" |
filmSlug | string | Letterboxd URL slug, e.g. parasite-2019 |
title | string | Film title |
year | number | Release year |
director | string | Director(s), comma-separated |
cast | string[] | Full cast list |
genres | string[] | Genre tags |
runtime | number | Runtime in minutes |
averageRating | number | Letterboxd average rating (0–5) |
ratingsCount | number | Number of ratings |
reviewCount | number | Number of reviews on Letterboxd |
language | string | Original language |
country | string | Country of origin |
tagline | string | Film tagline |
description | string | Synopsis text |
posterUrl | string | Poster image URL |
filmUrl | string | Letterboxd film page URL |
scrapedAt | string | ISO timestamp of data extraction |
Review (recordType: "review")
Emitted when includeReviews is on, up to maxReviewsPerFilm per film.
{"recordType": "review","filmTitle": "Parasite","filmYear": 2019,"filmSlug": "parasite-2019","filmUrl": "https://letterboxd.com/film/parasite-2019/","reviewer": "Karsten","username": "karsten","rating": 4.5,"reviewText": "A perfect mesh of genre and class commentary that escalates with surgical precision...","isSpoiler": false,"reviewUrl": "https://letterboxd.com/karsten/film/parasite-2019/","reviewDate": "2026-02-11"}
| Field | Type | Description |
|---|---|---|
recordType | string | Always "review" |
filmTitle | string | Parent film's title |
filmYear | number | Parent film's release year |
filmSlug | string | Parent film's slug — join key back to the film row |
filmUrl | string | Parent film's Letterboxd URL |
reviewer | string | Reviewer's display name |
username | string | Reviewer's Letterboxd username |
rating | number | Star rating, 0–5 in half steps (null when the reviewer left no star) |
reviewText | string | Full review text |
isSpoiler | boolean | Whether the review is flagged as containing spoilers |
reviewUrl | string | Direct link to the review |
reviewDate | string | Review publish date |
Tips for Best Results
- Use member or list URLs for large sets. Keyword search returns roughly 20 films per term — Letterboxd's search caps at one page. To pull hundreds of titles, point the scraper at a member's films or a curated list instead.
- Start small to test. Set
maxResultsto 10 on a first run to confirm the fields match your needs, then scale up. - Turn reviews off when you only need metadata.
includeReviews: falseskips all review fetching for a much faster, cheaper run when you just want film catalogue data. - Cap reviews on blockbusters. Setting
maxReviewsPerFilm: 0collects as many reviews as possible, but hugely popular titles (hundreds of thousands of reviews) stop after a generous limit to keep runs efficient — so0returns a large sample, not literally every review, on the biggest films. Keep a sensible cap (20–100) unless you want the largest sample available. - Mix URLs and search terms in one run. Combine specific film URLs, a member profile, and a few search terms in a single invocation — they're all collected together and de-duplicated by film.
- Join films to reviews on
filmSlug. Both record types carryfilmSlug, so you can rebuild the one-film-to-many-reviews relationship in any spreadsheet or database. - Sort and rank by
averageRatingandratingsCount. Pair a high average rating with a high ratings count to surface broadly loved films rather than niche titles with a handful of votes.
Pricing
From $3.00 per 1,000 films — reviews are billed separately at the lower rate of $0.50 per 1,000 reviews. This is a pay-per-result model: you're charged per film plus per review collected, with no compute or time-based charges.
| Volume | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 1,000 films | $3.60 | $3.40 | $3.20 | $3.00 |
| 1,000 reviews | $0.60 | $0.56 | $0.53 | $0.50 |
Apify's loyalty tiers (Bronze, Silver, Gold) apply automatically in the Console — the more you run, the less you pay. Here's what realistic mixes cost at the Gold tier:
| Example run | Films | Reviews | Gold total |
|---|---|---|---|
| 50 films, 20 reviews each | 50 | 1,000 | $0.65 |
| 10 films, reviews off | 10 | 0 | $0.03 |
| 100 films, 50 reviews each | 100 | 5,000 | $2.80 |
No compute or time-based charges — you pay per film and per review, plus a small fixed per-run start fee. Platform fees depend on your Apify plan.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate film research, audience analysis, content creation, and recommendation work. Users are responsible for complying with applicable laws and Letterboxd's Terms of Service. Reviews and member profiles may contain personal data — handle it responsibly, respect reviewers' rights, and do not use extracted data for spam, harassment, or any illegal purpose.