Letterboxd Scraper — Movie Reviews, Films, Profiles & Lists avatar

Letterboxd Scraper — Movie Reviews, Films, Profiles & Lists

Pricing

from $3.00 / 1,000 item scrapeds

Go to Apify Store
Letterboxd Scraper — Movie Reviews, Films, Profiles & Lists

Letterboxd Scraper — Movie Reviews, Films, Profiles & Lists

Scrape Letterboxd movie reviews, films, user profiles and popular or trending lists. Extract ratings, cast, crew, and review text. 4 modes in one Actor. No API key, no browser; runs on Apify residential proxy by default. Built for film researchers and content teams.

Pricing

from $3.00 / 1,000 item scrapeds

Rating

0.0

(0)

Developer

Sami

Sami

Maintained by Community

Actor stats

0

Bookmarked

95

Total users

5

Monthly active users

10 days ago

Last modified

Share

Letterboxd Scraper - Films, Reviews, Profiles & Lists

Scrape film details, user reviews, public profiles, and popular/trending films from Letterboxd, the social network for film lovers with 15M+ members. Lightweight HTTP-only scraper; it runs on Apify residential proxy by default because Letterboxd blocks datacenter IPs, so leave the default on.

How to scrape Letterboxd data in 3 easy steps

  1. Go to the Letterboxd Scraper page on Apify and click "Try for free"
  2. Configure your input — choose a mode (film_details, film_reviews, user_profile, or popular_films), paste Letterboxd URLs or slugs, and set maxResults
  3. Click "Run", wait for the scraper to finish, and download your data in JSON, CSV, or Excel

No coding required. Works with Apify's free plan.

What can this scraper do?

Mode 1: Film Details (film_details)

Extract complete metadata for any film on Letterboxd.

Input example:

{
"mode": "film_details",
"urls": [
"https://letterboxd.com/film/parasite-2019/",
"https://letterboxd.com/film/everything-everywhere-all-at-once/",
"the-godfather"
]
}

Output per film:

{
"filmUrl": "https://letterboxd.com/film/parasite-2019/",
"title": "Parasite",
"year": 2019,
"director": ["Bong Joon-ho"],
"cast": ["Song Kang-ho", "Lee Sun-kyun", "Cho Yeo-jeong"],
"genres": ["Comedy", "Drama", "Thriller"],
"countries": ["South Korea"],
"languages": ["Korean"],
"runtime": 132,
"averageRating": 4.6,
"totalRatings": 1250000,
"totalReviews": 85000,
"totalLists": 120000,
"posterUrl": "https://...",
"tagline": "Act like you own the place.",
"description": "All unemployed, Ki-taek's family...",
"studios": ["Barunson E&A"],
"scrapedAt": "2026-04-09T15:00:00Z"
}

Mode 2: Film Reviews (film_reviews)

Extract reviews for any film with sorting and pagination.

Input example:

{
"mode": "film_reviews",
"urls": ["https://letterboxd.com/film/parasite-2019/"],
"maxResults": 100,
"sortBy": "popular"
}

Output per review:

{
"filmTitle": "Parasite",
"filmUrl": "https://letterboxd.com/film/parasite-2019/",
"reviewerUsername": "john_doe",
"reviewerDisplayName": "John",
"reviewerUrl": "https://letterboxd.com/john_doe/",
"rating": 4.5,
"reviewText": "A masterclass in social commentary...",
"reviewDate": "2026-03-15",
"reviewUrl": "https://letterboxd.com/john_doe/film/parasite-2019/",
"likes": 42,
"isContainsSpoilers": false,
"scrapedAt": "2026-04-09T15:00:00Z"
}

Sort options: popular (default), recent, earliest, highest, lowest

Mode 3: User Profile (user_profile)

Extract public profile information including stats, favorites, and recent activity.

Input example:

{
"mode": "user_profile",
"urls": ["dave", "https://letterboxd.com/sally/"]
}

Output per user:

{
"username": "dave",
"displayName": "Dave",
"profileUrl": "https://letterboxd.com/dave/",
"avatarUrl": "https://...",
"bio": "Film lover from NYC",
"location": "New York",
"filmsWatched": 1250,
"filmsThisYear": 87,
"listsCount": 15,
"followingCount": 200,
"followersCount": 150,
"favoriteFilms": [
{"title": "Parasite", "url": "https://letterboxd.com/film/parasite-2019/"}
],
"recentRatings": [
{"title": "Dune: Part Two", "rating": 4.0, "url": "https://letterboxd.com/film/dune-part-two/"}
],
"scrapedAt": "2026-04-09T15:00:00Z"
}

Scrape trending and popular films with optional genre filtering.

Input example:

{
"mode": "popular_films",
"category": "this-week",
"genre": "horror",
"maxResults": 100
}

Output per film:

{
"title": "Nosferatu",
"year": 2024,
"url": "https://letterboxd.com/film/nosferatu-2024/",
"posterUrl": "https://...",
"averageRating": 3.8,
"director": null,
"scrapedAt": "2026-04-09T15:00:00Z"
}

Categories: popular, this-week, this-month, this-year

URL Flexibility

You don't need to provide full URLs. The scraper accepts:

InputInterpreted as
https://letterboxd.com/film/parasite-2019/Film URL (used directly)
letterboxd.com/film/parasite-2019Film URL (https:// added)
parasite-2019Film slug (full URL constructed)
https://letterboxd.com/dave/User profile URL
daveUsername (full URL constructed)

Letterboxd API alternative

There is no official public Letterboxd API available to developers. This scraper is a Letterboxd API alternative — it gives you structured access to film details, reviews, user profiles, and trending data without needing API keys or authentication. It returns clean JSON data that you can integrate into any application, database, or workflow.

Use Cases

  • Film industry research — Analyze ratings and review trends across thousands of films
  • Content creator analytics — Track film popularity and audience reception over time
  • Academic research — Study film criticism patterns, audience behavior, and cultural trends
  • Recommendation engines — Build datasets for ML-based movie recommendation systems
  • Entertainment journalism — Monitor trending films and critical reception in real time

Use with Python, JavaScript, or no code

You can call this scraper programmatically using the Apify API client.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("zhorex/letterboxd-scraper").call(run_input={
"mode": "film_details",
"urls": ["parasite-2019", "everything-everywhere-all-at-once"]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('zhorex/letterboxd-scraper').call({
mode: 'film_details',
urls: ['parasite-2019', 'everything-everywhere-all-at-once'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Or skip coding entirely and use the web interface with no-code tools like Zapier, Make, or n8n.

Pricing

$0.003 per result.

ModeCharged per
film_detailsFilm scraped
film_reviewsReview scraped
user_profileProfile scraped
popular_filmsFilm listed

Technical Details

  • Residential proxy by default — Letterboxd blocks datacenter IPs, so the Actor runs on Apify residential proxy; leave the default on
  • Lightweight — HTTP-only requests, no headless browser, 256MB RAM is sufficient
  • Respectful — Built-in 1.5s delay between requests
  • Resilient — Automatic retry with exponential backoff on rate limits (429)
  • Fast — Processes ~40 items/minute with built-in delays

FAQ

Does this need a proxy? Yes. Letterboxd blocks datacenter IPs, so the Actor runs on Apify residential proxy by default; leave the default on. The built-in request delays keep the request rate low.

Can it scrape private profiles? No. Only data shown on the public profile page is returned.

What's the rate limit? The scraper has a built-in 1.5-second delay between requests to be respectful to Letterboxd's servers. If rate-limited (HTTP 429), it backs off exponentially.

Can I get full watch history? Only what's publicly visible on the user's profile page. The scraper does not authenticate or access private data.

What if a film page has changed its layout? The scraper uses multiple fallback CSS selectors. If a field can't be parsed, it returns null instead of crashing.

How much does it cost to scrape Letterboxd? $0.003 per result ($3 per 1,000 results). Apify's free plan includes $5/month in credits, which is enough for roughly 1,600 results. No subscription required — you only pay for what you use.

Can I use this Letterboxd scraper in Python? Yes. Install the Apify Python client (pip install apify-client) and call the Actor with a few lines of code. See the Python example above.

Is scraping Letterboxd legal? This scraper only accesses publicly available data and does not bypass authentication or access private profiles. Always review Letterboxd's Terms of Service and applicable laws in your jurisdiction before scraping.

What does this Letterboxd scraper cover? This Actor (zhorex/letterboxd-scraper) covers film details, reviews, user profiles, and trending films with 4 dedicated modes.

Can I export Letterboxd data to CSV or Excel? Yes. After each run, you can download your results in JSON, CSV, or Excel format directly from the Apify dashboard. You can also push data to Google Sheets, a webhook, or any API endpoint.

Integrations & data export

This Actor integrates with the full Apify ecosystem:

  • Google Sheets — Automatically send scraped film data to a spreadsheet
  • Zapier / Make / n8n — Connect Letterboxd data to 5,000+ apps with no-code automation
  • REST API — Start runs, fetch results, and manage datasets programmatically
  • Webhooks — Get notified when a scrape finishes and push data to your backend
  • Amazon S3 / Google Cloud Storage — Export datasets directly to cloud storage
  • Slack / Email — Receive notifications with results after each run

Other Scrapers by Zhorex

Social & Entertainment

Business & Reviews

SEO & Data Tools

This actor only accesses publicly available data on letterboxd.com. It does not log in or access private profiles. Use responsibly and in compliance with Letterboxd's Terms of Service.


Your Review Matters

If you have used this Actor, a 30-second rating helps, good or bad:

  1. Go to the Letterboxd Scraper page
  2. Scroll down and click the star rating
  3. Optionally leave a one-line comment about your use case

Why it matters: Ratings help other users judge whether this Actor fits their use case.

Found a bug? Open an issue and it will be looked at.