Letterboxd Scraper avatar

Letterboxd Scraper

Pricing

from $3.00 / 1,000 films

Go to Apify Store
Letterboxd Scraper

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

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 recordType of film or review, and each review references its parent film by filmSlug and filmTitle so 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 maxReviewsPerFilm to 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 capmaxResults limits 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

ParameterTypeDefaultDescription
startUrlsstring[][]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.
searchTermsstring[]["parasite"]Film titles or keywords to search on Letterboxd. Each term returns the matching films. Ignored when you supply URLs above.

Output Options

ParameterTypeDefaultDescription
includeReviewsbooleantrueCollect 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.
maxReviewsPerFilminteger20Cap 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

ParameterTypeDefaultDescription
maxResultsinteger50Cap 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"
}
FieldTypeDescription
recordTypestringAlways "film"
filmSlugstringLetterboxd URL slug, e.g. parasite-2019
titlestringFilm title
yearnumberRelease year
directorstringDirector(s), comma-separated
caststring[]Full cast list
genresstring[]Genre tags
runtimenumberRuntime in minutes
averageRatingnumberLetterboxd average rating (0–5)
ratingsCountnumberNumber of ratings
reviewCountnumberNumber of reviews on Letterboxd
languagestringOriginal language
countrystringCountry of origin
taglinestringFilm tagline
descriptionstringSynopsis text
posterUrlstringPoster image URL
filmUrlstringLetterboxd film page URL
scrapedAtstringISO 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"
}
FieldTypeDescription
recordTypestringAlways "review"
filmTitlestringParent film's title
filmYearnumberParent film's release year
filmSlugstringParent film's slug — join key back to the film row
filmUrlstringParent film's Letterboxd URL
reviewerstringReviewer's display name
usernamestringReviewer's Letterboxd username
ratingnumberStar rating, 0–5 in half steps (null when the reviewer left no star)
reviewTextstringFull review text
isSpoilerbooleanWhether the review is flagged as containing spoilers
reviewUrlstringDirect link to the review
reviewDatestringReview 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 maxResults to 10 on a first run to confirm the fields match your needs, then scale up.
  • Turn reviews off when you only need metadata. includeReviews: false skips all review fetching for a much faster, cheaper run when you just want film catalogue data.
  • Cap reviews on blockbusters. Setting maxReviewsPerFilm: 0 collects as many reviews as possible, but hugely popular titles (hundreds of thousands of reviews) stop after a generous limit to keep runs efficient — so 0 returns 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 carry filmSlug, so you can rebuild the one-film-to-many-reviews relationship in any spreadsheet or database.
  • Sort and rank by averageRating and ratingsCount. 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.

VolumeNo discountBronzeSilverGold
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 runFilmsReviewsGold total
50 films, 20 reviews each501,000$0.65
10 films, reviews off100$0.03
100 films, 50 reviews each1005,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

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.