IMDb API: Get IMDb Parents Guide
Gets age certifications and non-spoiler Parents Guide summaries (severity votes and example descriptions for five categories) for a movie or show by title, IMDb link or title ID. A year selects a specific release.
Unofficial. Not affiliated with or endorsed by IMDb.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Year optional
year Release or first-air year to select a matching title, such as 2016.
2001
Whole number.
- Title, required
title Movie or show name, IMDb title link, or title ID, such as Deadpool or tt1431045.
The Office
Input as JSON
{ "year": 2001, "title": "The Office"}Output
{ "year": 2001, "title": "The Office", "imdb_link": "https://www.imdb.com/title/tt0290978/parentalguide/" , "categories": [ { "category": "Sex and Nudity", "severity": "moderate", "imdb_link": "https://www.imdb.com/title/tt0290978/parentalguide/#nudity" , "mild_votes": 24, "none_votes": 8, "severe_votes": 6, "moderate_votes": 29, "example_descriptions": [ "Chris Finch makes sexual references in all of his appearances, and has sexual intercourse in a short, 10 second end credits scene. Played for laughs.", "The \"Party\" episode often features a dildo, in one scene it is accidentally turned on and it spins around. It is never used in a sexual context. Played for laughs", "Season one, episode three (\"The Quiz\"): someone gets a life-size inflatable penis as a gift, and multiple characters joke about it. This scene lasts for about 30 seconds. Near the end of the episode, it's kicked around by Gareth for a couple of seconds." ] }, { "category": "Violence and Gore", "severity": "none", "imdb_link": "https://www.imdb.com/title/tt0290978/parentalguide/#violence" , "mild_votes": 3, "none_votes": 39, "severe_votes": 1, "moderate_votes": 0, "example_descriptions": [ "extremely rare slapstick" ] }, { "category": "Profanity", "severity": "moderate", "imdb_link": "https://www.imdb.com/title/tt0290978/parentalguide/#profanity" , "mild_votes": 3, "none_votes": 3, "severe_votes": 33, "moderate_votes": 32, "example_descriptions": [ "Frequent crude language regarding manual stimulation", "Stronger language than The Office US (which is, for the most part, censored.)", "Contains only occasional use of strong language such as fuck, shit, bitch, cock, wanker and one use of cunt in the second season." ] } ], "age_certifications": [ { "notes": null, "rating": "13", "country": "Argentina" }, { "notes": null, "rating": "M", "country": "Australia" }, { "notes": null, "rating": "12", "country": "Brazil" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"imdb.com/get_parents_guide","input":{"year":2001,"title":"The Office"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "imdb.com/get_parents_guide" , "input": { "year": 2001, "title": "The Office" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "imdb.com/get_parents_guide" , "input": { "year": 2001, "title": "The Office" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run imdb.com/get_parents_guide# with {"year":2001,"title":"The Office"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "title" ], "properties": { "year": { "type": "integer", "description": "Release or first-air year to select a matching title, such as 2016." }, "title": { "type": "string", "minLength": 1, "description": "Movie or show name, IMDb title link, or title ID, such as Deadpool or tt1431045." } }}Output schema
{ "type": "object", "required": [ "title", "year", "imdb_link", "age_certifications", "categories" ], "properties": { "year": { "type": [ "integer", "null" ] }, "title": { "type": "string" }, "imdb_link": { "type": "string" }, "categories": { "type": "array", "items": { "type": "object", "required": [ "category", "severity", "none_votes", "mild_votes", "moderate_votes", "severe_votes", "example_descriptions", "imdb_link" ], "properties": { "category": { "type": "string" }, "severity": { "type": [ "string", "null" ] }, "imdb_link": { "type": "string" }, "mild_votes": { "type": "integer" }, "none_votes": { "type": "integer" }, "severe_votes": { "type": "integer" }, "moderate_votes": { "type": "integer" }, "example_descriptions": { "type": "array", "items": { "type": "string" } } } } }, "age_certifications": { "type": "array", "items": { "type": "object", "required": [ "country", "rating", "notes" ], "properties": { "notes": { "type": [ "string", "null" ] }, "rating": { "type": "string" }, "country": { "type": "string" } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
imdb.com/get_parents_guide- Returns
- title, year, IMDb link, age certifications by country, Parents Guide categories with severity, vote counts and example descriptions
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method imdb.com/get_parents_guide with the inputs above.
Ask your agent
- Is Oppenheimer okay for my 13-year-old? I want to know how bad the nudity and violence are and what it's rated in different countries.
- Check IMDb's parents guide for tt0944947 — what are the severity ratings for sex, violence, profanity, drugs and frightening scenes?
- How much swearing and gore is in the 2018 Halloween movie? Need severity votes and some example descriptions, no spoilers.
- What age ratings did Euphoria get around the world, and how intense is the drug and sexual content according to IMDb users?
- Content advisory for The Batman (2022): certifications by country plus how viewers rated the frightening and intense scenes.
See more
All IMDb methodsGets a movie or TV show's IMDb details from its name, IMDb title link or title ID; a year picks between titles with the same name. Unavailable details are null.
imdb.com/get_movie_or_showLists titles in an IMDb movie or TV chart (Top 250 movies, Top 250 TV shows, most popular movies or TV shows) with ratings, votes, runtime, age rating and weekly rank movement for popularity charts. Popular charts contain up to 100 titles.
imdb.com/list_top_chartsFinds a film person on IMDb by name, IMDb person link or person ID and returns their biography, awards summary, known-for titles and filmography (without self-appearances, archive footage and thanks).
imdb.com/get_personFinds the Common Sense Media review of a movie, TV show, game, book, app or podcast by title (optionally type and year) and returns its age rating, star rating, verdict and parents' guide.
commonsensemedia.org/get_age_ratingFinds a movie on TMDB by exact title (optionally its release year) or by TMDB movie link, and returns its details, cast, crew, trailers, and the release date, age rating and streaming services for a chosen country.
themoviedb.org/get_movieGets Rotten Tomatoes critic and audience scores and title details for a movie or TV show, optionally for one TV season. Audience rating counts may be unavailable for series.
rottentomatoes.com/get_scoresGets one Netflix movie or series by its exact name or Netflix title URL: title details, publicly shown seasons and episodes, and whether it is available in a given country's catalogue (checked against public JustWatch listings).
netflix.com/get_movie_or_showReads the newest critic or audience reviews for a Rotten Tomatoes movie or TV show. For a whole TV show it combines reviews from its seasons.
rottentomatoes.com/get_reviews