Letterboxd Scraper — Films, Ratings, Reviews & Member Activity
Pricing
from $2.75 / 1,000 results
Letterboxd Scraper — Films, Ratings, Reviews & Member Activity
Scrape Letterboxd film data (rating, cast, director, genre, runtime, watched/liked counts), member reviews with star ratings, and any member's full watch & rating history. Paste film URLs and/or usernames.
Pricing
from $2.75 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract structured data from Letterboxd at scale: film details (weighted rating, cast, director, genre, runtime, watched/liked/list counts), member reviews (reviewer, date, text, likes & comments), and any member's full watch & rating history. Paste film URLs and/or usernames and get clean JSON/CSV/Excel in seconds. Built for film researchers, data journalists, recommender systems, marketers and fans.
What This Actor Does
Letterboxd is the world's largest social network for film lovers — hundreds of millions of ratings, reviews and watch logs. This Actor turns that public activity into a structured dataset. Three kinds of records, mix and match in a single run:
Record type | You provide | You get |
|---|---|---|
film | A film URL or slug | Weighted average rating, rating count, watched-by / liked-by / list counts, cast, director, genres, country, language, runtime, tagline, description, poster |
review | A film URL (with reviews enabled) | Each member review: reviewer, display name, watched date, full review text, likes & comment count |
activity | A member username | That member's recent watch & rating history: film, their star rating, watched date, rewatch flag, liked flag, review text |
Everything is public data you can see on letterboxd.com — this Actor just collects it into rows you can analyze.
Why Use This
- The social layer, not just metadata. IMDb and TMDb give you a film's facts. Letterboxd gives you what real viewers think — the weighted community rating, the review text, the taste of individual members. That's the data you can't get anywhere else.
- Three data types, one Actor. Research a film, pull its reviews, and profile a member's taste — all in one run, all in one clean dataset.
- Fast and reliable. Pure-HTTP with a browser-grade fingerprint. No headless browser, so it's cheap and quick even across many films and members.
- Flatten the mess. Ratings, cast, genres and counts live in different places on the page — this Actor normalizes it all into tidy, flat rows.
Quick Start
Run it in the console (no code)
- Open the Actor in Apify Console.
- Films: paste one or more Letterboxd film URLs (e.g.
https://letterboxd.com/film/parasite-2019/) or plain slugs (parasite-2019). - Members: paste one or more usernames (e.g.
davidehrlich) to also pull their watch history. - Toggle Include film reviews if you want reviews for each film.
- Click Start, then export as JSON, CSV, Excel or HTML, or push to Google Sheets, a webhook or a database.
Run it via API (Python)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"filmUrls": ["https://letterboxd.com/film/parasite-2019/","https://letterboxd.com/film/past-lives/",],"usernames": ["davidehrlich"],"includeReviews": True,"maxReviewsPerFilm": 100,}run = client.actor("YOUR_USERNAME/letterboxd-scraper").call(run_input=run_input)for rec in client.dataset(run["defaultDatasetId"]).iterate_items():if rec["type"] == "film":print(rec["name"], rec["year"], rec["rating"], "·", rec["watchedBy"], "watches")
Analyze a member's taste (Python)
run = client.actor("YOUR_USERNAME/letterboxd-scraper").call(run_input={"usernames": ["davidehrlich"],"maxUserActivities": 200,})rows = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items() if r["type"] == "activity"]rated = [r for r in rows if r.get("memberRating") is not None]print("avg rating:", sum(r["memberRating"] for r in rated) / len(rated))print("top films:", [r["filmTitle"] for r in rated if r["memberRating"] >= 4.5][:10])
Pull a film's reviews (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('YOUR_USERNAME/letterboxd-scraper').call({filmUrls: ['https://letterboxd.com/film/parasite-2019/'],includeReviews: true,maxReviewsPerFilm: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const reviews = items.filter(r => r.type === 'review');console.log(`${reviews.length} reviews, most commented:`);console.log(reviews.sort((a,b) => (b.commentCount||0) - (a.commentCount||0)).slice(0, 5));
Input Parameters
| Field | Type | Description |
|---|---|---|
filmUrls | array | Letterboxd film URLs or slugs. Each returns one film record (and reviews if enabled). |
usernames | array | Letterboxd usernames or profile URLs. Each returns that member's watch/rating activity. |
includeReviews | boolean | Also collect member reviews for each film. Default false. |
includeStats | boolean | Include watched-by / liked-by / list-appearance counts per film. Default true. |
maxReviewsPerFilm | integer | Cap on reviews collected per film. Default 40. |
maxUserActivities | integer | Cap on activity entries per member. Default 100. |
maxItems | integer | Optional hard cap on total records. 0 = no limit. |
proxyConfiguration | object | Apify Proxy. Datacenter is enough and enabled by default. |
You can provide films, members, or both in a single run.
Output
type: "film"
{"type": "film","slug": "parasite-2019","filmId": "426406","name": "Parasite","year": "2019","tagline": "Act like you own the place.","director": ["Bong Joon Ho"],"cast": ["Song Kang-ho", "Lee Sun-kyun", "Cho Yeo-jeong", "Choi Woo-shik"],"genres": ["Thriller", "Comedy", "Drama"],"country": ["South Korea"],"language": "Korean","runtimeMinutes": 133,"rating": 4.52,"ratingCount": 1300000,"watchedBy": 7590088,"likedBy": 3909420,"listAppearances": 895159,"posterUrl": "https://a.ltrbxd.com/resized/film-poster/...jpg","url": "https://letterboxd.com/film/parasite-2019/"}
type: "review"
{"type": "review","filmSlug": "parasite-2019","filmName": "Parasite","username": "philbertdy","displayName": "Philbert Dy","watchedDate": "2019-08-14","reviewText": "There is a house on a hill, and there are people in it…","commentCount": 248,"liked": false,"reviewUrl": "https://letterboxd.com/philbertdy/film/parasite-2019/"}
type: "activity"
{"type": "activity","username": "davidehrlich","filmTitle": "Past Lives","filmYear": "2023","memberRating": 4.5,"liked": true,"rewatch": false,"watchedDate": "2023-06-02","reviewText": "…","filmUrl": "https://letterboxd.com/davidehrlich/film/past-lives/"}
Use Cases
1. Film research & analytics
Pull the community rating, rating volume and popularity (watched/liked/lists) for any set of films. Compare how audiences score titles across a director, a genre or an awards slate.
2. Review sentiment & text mining
Collect hundreds of reviews per film with full text, likes and comment counts — a ready-made corpus for sentiment analysis, topic modeling, or LLM summarization of what viewers actually say.
3. Recommender systems & taste graphs
A member's watch history with their own star ratings is the perfect signal for collaborative filtering. Build taste profiles, find similar members, or seed a recommendation engine.
4. Talent & title tracking
Monitor how a film's rating and popularity evolve after release, festival buzz or streaming drops. Track a director's or actor's catalog in one dataset.
5. Marketing & influencer discovery
Find the members whose reviews get the most likes and comments for films in your niche — the tastemakers worth engaging for film marketing and PR.
6. Data journalism
Quantify audience reception for a story: average ratings, the split between critics and crowds, the most-liked takes on a controversial release.
Tips
- Film slugs: the slug is the last path segment of a film URL —
letterboxd.com/film/parasite-2019/→parasite-2019. You can pass either the full URL or just the slug. - Reviews are optional and add a few extra requests per film — enable
includeReviewsonly when you need them. - Member feeds return recent activity newest-first; raise
maxUserActivitiesfor deeper history. - Schedule it with Apify Schedules to track ratings and reviews over time.
Frequently Asked Questions
Do I need a Letterboxd account? No. The Actor reads publicly visible data — no login required.
Can I get a member's full history?
It returns recent watch & rating activity, newest first. Increase maxUserActivities for more.
Why is a member's star rating in activity but not always in review?
A member's own rating is captured in their activity records. Reviews are collected for their text, author and engagement; not every review carries a visible star rating.
What export formats are supported? JSON, CSV, Excel, HTML, or via API — plus Google Sheets, webhooks, Make and Zapier.
Can I scrape many films and members at once? Yes. Provide arrays of film URLs and usernames; the Actor processes them all in one run and dedups results.
Legal & Responsible Use
This Actor collects only publicly available information for research, analytics and personal use. You are responsible for how you use the data. Please:
- Respect Letterboxd's Terms of Service and robots directives.
- Comply with applicable data-protection laws when handling member data.
- Do not use the data for spam, harassment, or any unlawful purpose.
- Use reasonable request volumes and scheduling.
This project is an independent tool and is not affiliated with, endorsed by, or sponsored by Letterboxd.