curl --request GET \
--url https://api.simkl.com/movies/{id} \
--header 'User-Agent: <user-agent>' \
--header 'simkl-api-key: <api-key>'Full detail record for one movie — title, overview, year, runtime, country, language, certification, genres, director, ratings, posters, fanart, external IDs, alternate titles, release-date list per region, budget, revenue, trailers, similar-movie recommendations. The default response is already complete; no flags needed.
Responses are Cloudflare-cached by Simkl ID, so repeat lookups of popular titles are near-free. Parallel requests against this endpoint are explicitly allowed (see Rate limits → Parallel requests).
Cache invalidation is automatic. When Simkl updates the underlying record (admin edits, automated metadata refresh, image swap, related-titles change, etc.), the corresponding Cloudflare cache entry is purged server-side. The next call to this endpoint returns the fresh data — there’s no TTL to wait out and no client-side cache-busting needed. Your own app-level cache, if any, still has to be invalidated by your client.
Use a Simkl ID for the lookup. If you only have an external ID, resolve it via GET /redirect first.
Which IDs can I send/expect? All accepted input identifiers and the keys you’ll see echoed back in responses are listed at Standard media objects → Supported ID keys. Send every ID you have on writes — Simkl picks the first that resolves and ignores the rest. Reminder: slug is response-only (never send it on a request).
curl --request GET \
--url https://api.simkl.com/movies/{id} \
--header 'User-Agent: <user-agent>' \
--header 'simkl-api-key: <api-key>'Documentation Index
Fetch the complete documentation index at: https://api.simkl.org/llms.txt
Use this file to discover all available pages before exploring further.
Optional alias for the client_id query parameter. Simkl accepts your client_id either as the simkl-api-key request header or as the ?client_id=… query parameter — pick one. The query-parameter form is preferred because it makes the request fully self-describing in URL form.
Descriptive identifier for your app, ideally name/version. Examples: PlexMediaServer/1.43.1.10540, kodi-simkl/0.9.2, MyApp/2.4.1 (https://myapp.com).
Simkl ID for the item. Simkl IDs are stable, unambiguous, and the response is Cloudflare-cached by Simkl ID, so repeat lookups are very fast.
If you only have an external ID (IMDb, TMDB, TVDB, MAL, AniDB, etc.), resolve it to a Simkl ID first via GET /redirect — it returns the Simkl ID in the Location header without a JSON payload, and the follow-up detail call is Cloudflare-cached.
Your client_id from your Simkl developer settings. Required on every request.
Short, lowercase identifier for your app (e.g. plex-scrobbler, kodi-bridge). Helps Simkl identify which apps are using the API.
Your app's current version (e.g. 1.0, 2.4.1). Helps Simkl debug issues you report.
OK
Full movie record returned by GET /movies/{id}. The response shape is the same regardless of any extended query value — the parameter is a legacy no-op for this endpoint. Responses are Cloudflare-cached by Simkl ID. See Null and missing values for the nullable-field semantics used below.
Display title in the response language (defaults to English unless the request's language overrides it).
Release year.
Always movie on this endpoint.
movie External and internal identifiers for an item. Pass as many as you have — Simkl resolves to the canonical record.
Hide child attributes
Simkl internal ID. Most reliable.
53536
URL-safe slug returned in responses.
"attack-on-titan"
IMDb ID.
"tt0181852"
TMDb ID.
"296"
TVDB ID or slug.
153021
MyAnimeList ID.
"4246"
AniDB ID. Specifying just this is enough for anime lookups.
"10846"
AniList ID.
"21"
Kitsu ID.
"12"
aniSearch ID.
"2227"
Anime-Planet slug.
"one-piece"
LiveChart ID.
"321"
Letterboxd slug.
"the-truman-show"
Netflix movie ID.
"70210890"
Hulu episode ID.
Crunchyroll episode ID.
Trakt slug.
"john-wick-chapter-4-2023"
{
"simkl": 53536,
"imdb": "tt0181852",
"tmdb": 296
}
Type 4 null — data not on file in that field's slot. See Null and missing values. Position in Simkl's popularity ranking. Null when not ranked.
Percentage of users who started watching but dropped, e.g. "0.1%". Type 4 null when the metric isn't computed.
Background/hero image path. Type 4 null when no fanart on file.
Initial release date (YYYY-MM-DD). Type 4 null when unknown.
Runtime in minutes. Type 4 null when not on file.
Primary director. Type 4 null when unknown.
Content rating (e.g. PG-13, R). Type 4 null when not rated for the response country.
Production budget in USD. Type 4 null when not on file.
Box-office revenue in USD. Type 4 null when not on file.
Plot synopsis. Type 4 null when no overview is available.
Genre names.
ISO 3166-1 alpha-2 production country code.
ISO 639-1 language code in UPPERCASE.
Localized and alternate titles. May contain many entries for popular titles.
Hide child attributes
Simkl internal language code.
Classification of an entry in alt_titles. official = broadcaster/distributor-supplied localization, short = shortened form, synonym = community-supplied alias, original = original-language title (typically Japanese for anime).
official, short, synonym, original Ratings keyed by source. Movies always carry simkl and imdb.
Hide child attributes
YouTube-hosted trailers and promo clips. Type 4 null when no trailers on file.
Hide child attributes
YouTube video ID (not a full URL).
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values. Max video resolution height (720, 1080, 2160).
Per-country release event timeline.
Hide child attributes
ISO 3166-1 alpha-2 country code.
Mini media objects suggested by Simkl based on this title's viewers.
Hide child attributes
Type 4 null — data not on file in that field's slot. See Null and missing values.
Type 4 null — data not on file in that field's slot. See Null and missing values.
Was this page helpful?