Letterboxd API endpoint
Returns a Letterboxd film chart ranked by popularity. Omit `period` for all-time, or set `day`, `week`, `month` or `year`. `genre` takes a genre slug, `decade` a value like `2010s`, and `limit` defaults to 10 with a max of 50. Each film has its `slug`, title and Letterboxd URL.
/letterboxd/popularReturns a Letterboxd popularity-ranked film chart, optionally scoped to a time window, genre, and/or decade.
Query parameters:
period (optional, omit for all-time). Allowed values: day, week, month, year.genre (optional) — genre slug, e.g. mystery (see the genre list on letterboxd.com/films/).decade (optional) — decade filter formatted like 2010s.limit (optional, default 10, max 50).Response includes period, genre, decade (echoed back when provided) and films[] (slug, title, uri).
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| slug | 20 | |
| title | 20 | |
| uri | 20 | letterboxd.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| period | string | No | Popularity window, omit for all-time Allowed values: day, week, month, year. | ||
| genre | string | No | Genre slug filter | mystery | |
| decade | string | No | Decade filter, e.g. 2010s | 2010s | |
| limit | integer | No | Max films, default 10, max 50 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/letterboxd/popular?period=day&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"period": "week",
"films": [
{
"slug": "obsession-2025",
"title": "Obsession",
"uri": "https://letterboxd.com/film/obsession-2025/"
},
{
"slug": "project-hail-mary",
"title": "Project Hail Mary",
"uri": "https://letterboxd.com/film/project-hail-mary/"
}
],
"source_url": "https://letterboxd.com/csi/films/films-browser-list/popular/this/week/?esiAllowFilters=true"
}
}Request schema
No body schema
Response schema
#/definitions/letterboxd.popularResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | letterboxd.PopularResponse | No | ||||
| data.decade | string | No | Decade filter that was applied, for example `2010s`. Omitted when none was set. | |||
| data.films | array | No | Films in the chart, most popular first. | |||
| data.films[].slug | string | No | Letterboxd film slug. Use it with the film endpoint for full detail. | |||
| data.films[].title | string | No | Title of the film. | |||
| data.films[].uri | string | No | Link to the film's page on Letterboxd. | |||
| data.genre | string | No | Genre filter that was applied. Omitted when none was set. | |||
| data.period | string | No | Time window of the chart: `day`, `week`, `month` or `year`. Omitted for the all-time chart. | |||
| data.source_url | string | No | URL the data was read from. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/letterboxd/popular?period=day&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"