Letterboxd Scraper - Films, Ratings & Reviews avatar

Letterboxd Scraper - Films, Ratings & Reviews

Pricing

from $1.20 / 1,000 film records

Go to Apify Store
Letterboxd Scraper - Films, Ratings & Reviews

Letterboxd Scraper - Films, Ratings & Reviews

Scrape Letterboxd films and reviews by search phrase, popular or genre lists, or film URL. Extract ratings, directors, runtimes, review text and star ratings. Includes incremental monitoring, resume support and MCP connectors.

Pricing

from $1.20 / 1,000 film records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Letterboxd Film & Reviews Scraper

Extract film metadata and reader reviews from Letterboxd into a clean Apify dataset. The actor supports title-phrase search and direct Letterboxd URL/browse-path mode, then returns ratings, directors, runtime, and tagline for every matched film — with reader reviews as an optional per-film enrichment.

Why This Scraper?

  • Two clear modes: search by film title phrase, or paste Letterboxd film/browse URLs.
  • Useful film fields in every row: title, release year, directors, genre, average rating, ratings count, runtime, and tagline.
  • Optional reader reviews per film (author, star rating, date, text, likes, spoiler flag), billed only when turned on.
  • Output limits apply in both modes, so pasted URL runs can still be capped.
  • MCP connector export can send a concise film summary into Notion, Linear, Airtable, or Apify connectors while the full record stays in the dataset.
  • Resume & recurring updates - turn on Incremental mode to get only NEW, UPDATED, and REAPPEARED films on every scheduled run, or use Resume from a previous run to continue one interrupted crawl. See "Incremental & Dedup Mode" below.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
urlhttps://letterboxd.com/film/dune-part-two/
slugdune-part-two
titleDune: Part Two
imagehttps://a.ltrbxd.com/resized/poster.jpg
descriptionPaul Atreides unites with Chani and the Fremen...
genre["Science Fiction", "Adventure"]
directors["Denis Villeneuve"]
averageRating4.3
averageRatingPrecise4.31
ratingsCount900000
datePublished2024-03-01
releaseYear2024
runtimeMinutes166
taglineLong live the fighters.
scrapedAt2026-01-01T00:00:00Z

How to Use

Search by title phrase:

{
"mode": "search",
"queries": ["dune"],
"maxItems": 20
}

Search multiple phrases with reviews enrichment:

{
"mode": "search",
"queries": ["dune", "oppenheimer"],
"fetchReviews": true,
"maxReviewsPerFilm": 25,
"maxItems": 25
}

Use direct Letterboxd URLs:

{
"mode": "url",
"startUrls": [
{ "url": "https://letterboxd.com/films/popular/" },
{ "url": "https://letterboxd.com/film/dune-part-two/" }
],
"maxItems": 10
}

Send a film digest into an app connector:

{
"mode": "search",
"queries": ["dune"],
"maxItems": 10,
"mcpConnectors": ["YOUR_CONNECTOR_ID"],
"notionParentPageUrl": "https://www.notion.so/your-page",
"maxNotifyListings": 10
}

Input Parameters

ParameterTypeDefaultDescription
modestringsearchChoose search for title-phrase search or url for pasted Letterboxd links.
queriesarray["dune"]Film title phrases for search mode.
startUrlsarraysample URLLetterboxd film pages, browse lists, or direct film slugs for URL mode.
browsePathstring/films/popular/Used only in URL mode when Start URLs is empty; a site path to browse.
maxItemsinteger20Maximum matching films to save. Runs can return fewer rows when a search/browse source matches fewer films.
maxPagesintegerempty (unlimited)Maximum pages to read per search/browse source. Leave empty to walk every result page; maxItems is the primary output cap.
fetchReviewsbooleanfalseTurn on to also fetch reader reviews for each returned film (charged as a separate per-film enrichment event).
maxReviewsPerFilminteger25Only used when fetchReviews is on. Maximum reviews to collect per film.
proxyobjectApify proxyConnection settings. The default is recommended for Letterboxd.
mcpConnectorsarrayemptyOptional connector ids for sending a concise summary into your apps.
notionParentPageUrlstringemptyRequired only for Notion page export.
maxNotifyListingsinteger50Maximum rows to send to each selected connector. Does not affect the dataset.
resumeFromRunIdstringemptyOptional previous run ID (or dataset ID) from this actor. Films already collected there (matched by slug) are skipped, so the run returns only new ones. For recurring daily monitoring of the same search, use incrementalMode instead.
incrementalModebooleanfalseDaily/recurring monitoring of this same search. First run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED by default. See "Incremental & Dedup Mode" below.
stateKeystringemptyOptional name for a monitoring campaign, so its incremental state stays stable or is deliberately shared. Auto-derived from your mode/queries/URLs when left empty.
emitUnchangedbooleanfalseIncremental mode only. Also return films unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have.
emitExpiredbooleanfalseIncremental mode only. Also return films from a previous run no longer found, marked EXPIRED, once a run has fully scanned the search (not capped, not a resume). Adds and bills extra synthetic rows.

Incremental & Dedup Mode

Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED films by default; duplicates and unchanged films are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per mode/queries/startUrls/browsePath setup automatically; set stateKey to name or deliberately share a monitoring campaign.

This is a different tool from resumeFromRunId, which continues ONE specific interrupted run from a pasted run/dataset ID. Use resumeFromRunId after a run was cut off; use incrementalMode for a schedule that runs the same search again and again.

Every returned record in incremental mode also carries:

FieldMeaning
changeTypeOne of NEW, UPDATED, UNCHANGED, REAPPEARED, EXPIRED.
changedFieldsNames of the fields that changed since the last run (empty for NEW/UNCHANGED/REAPPEARED/EXPIRED).
firstSeenAtWhen this film was first seen by this monitoring campaign.
lastSeenAtWhen this film was last seen.

EXPIRED rows are only produced when a run fully scans the tracked search end to end (no maxItems cap hit, no resumeFromRunId, every source read to its natural end) and emitExpired is on. A capped or resumed run leaves the previous state untouched for those films rather than guessing they disappeared.

Example: run the same search every day and receive only changes:

{ "mode": "search", "queries": ["dune"], "incrementalMode": true }

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"url": "https://letterboxd.com/film/dune-part-two/",
"slug": "dune-part-two",
"title": "Dune: Part Two",
"image": "https://a.ltrbxd.com/resized/poster.jpg",
"description": "Paul Atreides unites with Chani and the Fremen while seeking revenge.",
"genre": ["Science Fiction", "Adventure"],
"directors": ["Denis Villeneuve"],
"averageRating": 4.3,
"averageRatingPrecise": 4.31,
"ratingsCount": 900000,
"datePublished": "2024-03-01",
"releaseYear": 2024,
"runtimeMinutes": 166,
"tagline": "Long live the fighters.",
"reviews": [
{
"filmSlug": "dune-part-two",
"author": "hooviesmovies",
"rating": 4.5,
"reviewDate": "2024-03-05",
"text": "Great sequel, the worm ride delivers.",
"likes": 3,
"containsSpoilers": false
}
],
"scrapedAt": "2026-01-01T00:00:00Z"
}

reviews is only present when fetchReviews is on.

Send Results Into Your Apps

The optional MCP connector inputs let you send a condensed, human-readable summary of each selected film into your connected apps. Authorize a connector under Apify > Settings > API & Integrations, select it in mcpConnectors, and set notionParentPageUrl when using Notion.

The connector export is a side output. It does not change the dataset, and connector write errors do not fail the run. The complete record always remains available in the Apify dataset.

Plan Requirement

For best reliability, keep the default Apify proxy setting. maxItems is a maximum cap, not a guaranteed count; a run can save fewer rows when the selected search phrase, URL, or browse path matches fewer films.