
Instagram Reel Scraper
scrape.ly/store/echofield/instagram-reel-scraperSocial mediaVideos
1 monthly user

Scrape Letterboxd films, reviews, user diaries, lists and profiles: title, year, directors, cast, genres, runtime, average rating, rating histogram, watches, likes, TMDb and IMDb IDs, plus reviews. No login needed.
Scrape Letterboxd films, reviews, diaries, lists and member profiles. Each film comes with directors, cast and roles, full crew, genres, themes, runtime, average rating, the full rating histogram, watches, likes and lists counts, synopsis, poster, trailer and TMDb/IMDb IDs. Reviews come with rating, full text, date, likes and comments. No login needed.
| Field | What it does |
|---|---|
startUrls | Film, film reviews, list, browse (/films/...), search, profile, diary, reviews, watchlist and lists URLs; boxd.it links. |
searchTerms | Film titles or keywords. |
usernames | Letterboxd usernames. |
userContent | profile (default), diary, films, reviews, watchlist or lists. |
maxItems | Maximum results per input (default 10, 0 = all). |
maxTotalItems | Optional cap for the whole run. |
scrapeFilmDetails | Full film details (default on). Off = fast film lists. |
includeReviews / maxReviewsPerFilm / reviewsSort | Reviews for each film. |
fullReviewText | Expand long reviews (default on). |
proxyConfiguration | US residential proxy by default. |
{
"startUrls": [
"https://letterboxd.com/film/parasite-2019/",
"https://letterboxd.com/films/popular/this/week/"
],
"searchTerms": ["the godfather"],
"maxItems": 10,
"includeReviews": true,
"maxReviewsPerFilm": 20
}
Every row has a type: film, review, diaryEntry, list or profile.
| Film field | Description |
|---|---|
title, year, originalTitle, tagline, synopsis | Basics |
directors, cast, castNames, crew | People (cast with character names, crew by role) |
genres, themes, studios, countries, primaryLanguage, spokenLanguages, alternativeTitles | Details |
runtimeMinutes, releaseDate | Runtime and release date |
averageRating, ratingsCount, reviewsCount, ratingHistogram | Ratings |
watchesCount, likesCount, listsCount, topListRank | Popularity |
posterUrl, backdropUrl, trailerUrl | Media |
imdbId, tmdbId, tmdbType | External IDs |
| Review field | Description |
|---|---|
filmTitle, filmYear, filmUrl | The film |
username, reviewer, rating, reviewDate | Reviewer, stars (0.5–5) and date |
reviewText, isSpoiler, isRewatch | Text and flags |
likes, comments, reviewUrl | Engagement |
Diary entries have watchedDate, rating, isRewatch, isLiked and the film; profiles have filmsWatched, filmsThisYear, followersCount, followingCount, bio, location and favoriteFilms; lists have name, filmCount, likes and description.
Example (trimmed):
[
{
"type": "film",
"id": 426406,
"slug": "parasite-2019",
"url": "https://letterboxd.com/film/parasite-2019/",
"title": "Parasite",
"year": 2019,
"originalTitle": "기생충",
"tagline": "Act like you own the place.",
"synopsis": "All unemployed, Ki-taek's family takes peculiar interest in the wealthy and glamorous Parks for their livelihood until they get entangled in an unexpected incident....",
"directors": [
"Bong Joon Ho"
],
"cast": [
{
"name": "Song Kang-ho",
"role": "Kim Ki-taek",
"url": "https://letterboxd.com/actor/song-kang-ho/"
},
{
"name": "Lee Sun-kyun",
"role": "Park Dong-ik",
"url": "https://letterboxd.com/actor/lee-sun-kyun/"
},
{
"name": "Cho Yeo-jeong",
"role": "Yeon-kyo",
"url": "https://letterboxd.com/actor/cho-yeo-jeong/"
}
],
"castNames": [
"Song Kang-ho",
"Lee Sun-kyun",
"Cho Yeo-jeong"
],
"crew": {
"Director": [
"Bong Joon Ho"
],
"Producers": [
"Jang Young-hwan",
"Moon Yang-kwon",
"Kwak Sin-ae",
"Lee Joo-hyun",
"Bong Joon Ho"
],
"Writers": [
"Kim Dae-hwan",
"Han Jin-won",
"Bong Joon Ho"
]
},
"genres": [
"Thriller",
"Comedy",
"Drama"
],
"themes": [
"Intense violence and sexual transgression",
"Humanity and the world around us",
"Moving relationship stories"
],
"studios": [
"Barunson E&A"
],
"countries": [
"South Korea"
],
"primaryLanguage": "Korean",
"spokenLanguages": [
"English",
"German",
"Korean"
],
"alternativeTitles": [
"ชนชั้นปรสิต",
"パラサイト 半地下の家族:2019",
"Parazitlər"
],
"runtimeMinutes": 133,
"releaseDate": "2019-05-21",
"averageRating": 4.52,
"ratingsCount": 5937523,
"reviewsCount": 799143,
"ratingHistogram": [
{
"stars": 4.0,
"count": 1329513,
"percent": 22
},
{
"stars": 4.5,
"count": 1031300,
"percent": 17
},
{
"stars": 5.0,
"count": 2940052,
"percent": 50
}
],
"watchesCount": 7676050,
"likesCount": 3944736,
"listsCount": 902217,
"topListRank": 16,
"topListSize": 500,
"posterUrl": "https://a.ltrbxd.com/resized/film-poster/4/2/6/4/0/6/426406-parasite-0-600-0-900-crop.jpg?v=8f5653f710",
"backdropUrl": "https://a.ltrbxd.com/resized/sm/upload/oi/ha/78/z8/parasite-1920-1920-1080-1080-crop-000000.jpg?v=03b9da4410",
"trailerUrl": "https://www.youtube.com/watch?v=bM9QabAojCg",
"imdbId": "tt6751668",
"imdbUrl": "https://www.imdb.com/title/tt6751668/",
"tmdbId": 496243,
"tmdbType": "movie",
"tmdbUrl": "https://www.themoviedb.org/movie/496243/",
"source": "https://letterboxd.com/film/parasite-2019/",
"scrapedAt": "2026-10-16T02:21:45Z"
},
{
"type": "review",
"reviewId": 72286970,
"reviewUrl": "https://letterboxd.com/philbertdy/film/parasite-2019/",
"filmSlug": "parasite-2019",
"filmTitle": "Parasite",
"filmYear": 2019,
"filmUrl": "https://letterboxd.com/film/parasite-2019/",
"username": "philbertdy",
"reviewer": "Philbert Dy",
"reviewerUrl": "https://letterboxd.com/philbertdy/",
"rating": 5.0,
"reviewText": "Update: Now in video form\n\nThere is a house on a hill, and there are people in it. And they're nice, but not really. There is a garden, and there they get a lot of sunlight. And it is nice, and they g",
"isTruncated": false,
"isSpoiler": true,
"isRewatch": false,
"likes": 44707,
"comments": 248,
"reviewDate": "2019-08-14",
"source": "https://letterboxd.com/film/parasite-2019/",
"scrapedAt": "2026-10-16T02:21:46Z"
}
]
You pay $4.00 per 1,000 results (one result = one film, review, diary entry, list or profile row), plus a small amount of platform usage (compute and residential proxy traffic, roughly 40 KB per row). Example: 10 films with 20 reviews each = 210 results ≈ $0.84 plus about $0.02 of usage.
Is it legal to scrape Letterboxd? The actor reads only public pages that anyone can open without logging in. Respect Letterboxd's terms and privacy laws, especially when you store member data.
Do I need a Letterboxd account? No. No login, cookies or API key are needed. Private or deleted profiles simply return nothing.
Why a residential proxy? Letterboxd challenges most datacenter IPs. US residential exits work reliably and the traffic per row is small.
How many results can I get? Set maxItems to 0 for everything an input has (all films of a list, a whole diary, all reviews of a film).
What if a field is empty? Not every film has every field (for example no tagline, no trailer or too few ratings for a histogram).
Can I schedule runs or use the API? Yes, schedule the actor in the console or start it through the API and fetch the dataset in JSON, CSV or Excel.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalLetterboxd URLs
Film pages (letterboxd.com/film/parasite-2019/), film review pages (.../reviews/), lists (letterboxd.com/user/list/name/), browse pages (letterboxd.com/films/popular/this/week/), search pages, user profiles (letterboxd.com/username/) and user pages (films/diary/, films/reviews/, watchlist/, lists/). boxd.it short links work too.
searchTermsarrayOptionalSearch films
Film titles or keywords to search on Letterboxd.
usernamesarrayOptionalUsernames
Letterboxd usernames. What you get for each user is set in 'User content'.
userContentenumOptionaldefault "profile"User content
What to scrape for usernames and profile URLs: the public profile (stats, bio, favorite films), the diary, watched films, reviews, watchlist or lists.
maxItemsintegerOptionaldefault 10Maximum results per input
Maximum results for each URL, search term or username (films for lists, searches and browse pages; entries for diaries, reviews and lists). 0 means all.
Total limit and film details.
maxTotalItemsintegerOptionalMaximum results in total
Optional cap for the whole run across all inputs, counting every saved row (films, reviews, entries). 0 means no total cap.
scrapeFilmDetailsbooleanOptionaldefault trueFull film details
Open every film for cast, crew, genres, runtime, rating histogram, watches/likes/lists counts, synopsis and TMDb/IMDb IDs. Turn off for fast film lists (title, year, Letterboxd ID, average rating where shown).
Reviews for each film.
includeReviewsbooleanOptionaldefault falseInclude reviews
Also save each film's reviews as separate rows (reviewer, rating, text, date, likes, comments).
maxReviewsPerFilmintegerOptionaldefault 20Maximum reviews per film
How many reviews to save per film. 0 means all.
reviewsSortenumOptionaldefault "popular"Review order
Order of reviews for films and film review URLs.
fullReviewTextbooleanOptionaldefault trueFull review text
Letterboxd cuts long reviews; load the complete text (one extra request per long review).
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
US residential proxies are used by default (Letterboxd challenges most datacenter IPs).
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | null | film, review, diaryEntry, list or profile |
| title | string | null | Film title |
| year | number | null | Release year |
| url | string | null | Letterboxd URL |
| directors | array | null | Directors |
| genres | array | null | Genres |
| runtimeMinutes | number | null | Runtime in minutes |
| averageRating | number | null | Average rating (0.5-5) |
| ratingsCount | number | null | Number of ratings |
| ratingHistogram | array | null | Ratings per half star |
| watchesCount | number | null | Members who watched |
| likesCount | number | null | Members who liked |
| listsCount | number | null | Lists containing the film |
| synopsis | string | null | Synopsis |
| tmdbId | number | null | TMDb ID |
| imdbId | string | null | IMDb ID |
| reviewText | string | null | Review text |
| rating | number | null | Rating given (0.5-5) |
| username | string | null | Letterboxd username |
| likes | number | null | Likes |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One Letterboxd film, review, diary entry, list or profile saved to the dataset. | $0.004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('echofield/letterboxd-scraper').call({
"startUrls": [
"https://letterboxd.com/film/parasite-2019/",
"https://letterboxd.com/films/popular/this/week/"
],
"searchTerms": [
"the godfather"
],
"maxItems": 10,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "US"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run echofield/letterboxd-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=echofield/letterboxd-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Reviews and film details from a Letterboxd reviews URL.
Film search with full film details.
Film details, reviews and a member's diary entries.
Profile data for a Letterboxd username.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.