Letterboxd Scraper - Films, Reviews, Profiles & Lists avatar

Letterboxd Scraper - Films, Reviews, Profiles & Lists

Pricing

from $3.00 / 1,000 item scrapeds

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

Letterboxd Scraper - Films, Reviews, Profiles & Lists

Scrape Letterboxd films, reviews, user profiles, and popular/trending lists. Extract ratings, cast, crew, review text, and watchlists. 4 modes in one actor. No API key, no proxy, no browser needed. Built for film researchers, content creators, and recommendation engines.

Pricing

from $3.00 / 1,000 item scrapeds

Rating

0.0

(0)

Developer

Sami

Sami

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

0

Monthly active users

13 days ago

Last modified

Share

The original Letterboxd scraper on Apify was deprecated. This is its replacement — faster, more complete, and actively maintained.

Scrape film details, user reviews, public profiles, and popular/trending films from Letterboxd, the social network for film lovers with 15M+ members. No proxy needed — lightweight HTTP-only scraper.

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 the best Letterboxd API alternative in 2026 — 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.001 per result — the most affordable film data scraper on Apify.

ModeCharged per
film_detailsFilm scraped
film_reviewsReview scraped
user_profileProfile scraped
popular_filmsFilm listed

Technical Details

  • No proxy needed — Letterboxd is server-rendered HTML with no anti-bot measures
  • 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? No. Letterboxd serves plain HTML with no significant anti-bot protection. The built-in request delays keep the scraper well within acceptable limits.

Can it scrape private profiles? No. Only publicly visible profile data is scraped. Private profiles are skipped with a warning.

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.001 per result ($1 per 1,000 results). Apify's free plan includes $5/month in credits, which is enough for 5,000 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 is the best Letterboxd scraper in 2026? This Actor (zhorex/letterboxd-scraper) is the most actively maintained Letterboxd scraper on Apify, covering 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 bypass any authentication, access private profiles, or circumvent technical protection measures. Use responsibly and in compliance with Letterboxd's Terms of Service.


Your Review Matters

The previous Letterboxd scraper on Apify was deprecated — this one replaced it. Help other film data enthusiasts find it.

If this Actor saved you time, a 30-second review makes a real difference:

  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: Reviews help this Actor rank higher in the Apify Store. More visibility means more users, which means more improvements and faster bug fixes. Every review counts — especially the first ones.

Found a bug instead? Open an issue and I'll fix it fast.