Skip to main content

Fake Movie Data API

MOCK DATA

Fake movies with genre-flavored titles, release-year windows, genre-aware runtimes and ratings (animation is never R) and one-decimal scores.

Generated test data for fixtures and development

Base URL
/api/movies
Capabilities
1 route Seedable
Last updated
July 29, 2026

GET /api/movies

Live requestRuns against the public API
No key required
GET/api/movies?genre=scifi&count=5

Request parameters

Only generate movies in this genre — the title comes from the genre's own word pools, runtime and rating follow its rules. Omit for a mix.

Earliest release year (inclusive). Must be ≤ maxYear.

Latest release year (inclusive), up to 2027. Defaults to the current year.

Advanced response options7 options

How many records to generate (1–100).

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/movies?genre=scifi&count=5"
const res = await fetch("https://randomapi.dev/api/movies?genre=scifi&count=5");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/movies?genre=scifi&count=5").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/movies?genre=scifi&count=5"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 3
genre enum

Only generate movies in this genre — the title comes from the genre's own word pools, runtime and rating follow its rules. Omit for a mix.

allowed: action | comedy | drama | horror | scifi | fantasy | thriller | romance | animation | documentary
example: genre=scifi
minYear int

Earliest release year (inclusive). Must be ≤ maxYear.

default: 1980
allowed: 1930 – 2027
example: minYear=1990
maxYear int

Latest release year (inclusive), up to 2027. Defaults to the current year.

allowed: 1930 – 2027
example: maxYear=1999
Universal parameters Shared response and formatting options 7
count int

How many records to generate (1–100).

default: 10
allowed: 1 – 100
example: count=3
seed int

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

example: seed=42
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=title,genre
exclude list

Return all fields except these (comma-separated).

example: exclude=director
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 7
title string

Genre-flavored title assembled from the genre's word pools — never a real film.

example: The Quantum Paradox of Titan Station

genre string

One of the 10 genres; always matches the pools the title came from.

example: scifi

year integer

Release year within minYear..maxYear (inclusive).

example: 1994

runtimeMinutes integer

Runtime in minutes: 75–200 for features, 60–150 for documentaries.

example: 128

rating string

G | PG | PG-13 | R. Animation is never rated R.

example: PG-13

score float (one decimal)

Critic score from 1.0 to 10.0, always exactly one decimal.

example: 7.4

director string

Fake director full name (given name + family name).

example: Miriam Voss

Documented examples

Build-generated requests and complete responses
3
Five sci-fi films
GET /api/movies?genre=scifi&count=5
{
  "data": [
    {
      "title": "The Eclipse of Titan Station",
      "genre": "scifi",
      "year": 1981,
      "runtimeMinutes": 84,
      "rating": "PG-13",
      "score": 4.7,
      "director": "Kaylie Gorczany-Considine"
    },
    {
      "title": "The Quantum Paradox of Epsilon Prime",
      "genre": "scifi",
      "year": 1988,
      "runtimeMinutes": 111,
      "rating": "G",
      "score": 5.7,
      "director": "Waino Marvin"
    },
    {
      "title": "The Colony of the Void",
      "genre": "scifi",
      "year": 1980,
      "runtimeMinutes": 149,
      "rating": "R",
      "score": 1.2,
      "director": "Hailee Streich"
    },
    {
      "title": "The Orbital Horizon of Titan Station",
      "genre": "scifi",
      "year": 2019,
      "runtimeMinutes": 161,
      "rating": "PG",
      "score": 3.8,
      "director": "Otis Hodkiewicz"
    },
    {
      "title": "The Synthetic Paradox",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Reproducible 90s thrillers
GET /api/movies?genre=thriller&minYear=1990&maxYear=1999&seed=42&count=5
{
  "data": [
    {
      "title": "The Cipher of Zurich",
      "genre": "thriller",
      "year": 1990,
      "runtimeMinutes": 84,
      "rating": "PG-13",
      "score": 4.7,
      "director": "Kaylie Gorczany-Considine"
    },
    {
      "title": "The Cold Alibi of the Seventh Floor",
      "genre": "thriller",
      "year": 1991,
      "runtimeMinutes": 111,
      "rating": "G",
      "score": 5.7,
      "director": "Waino Marvin"
    },
    {
      "title": "The Motive of Midnight",
      "genre": "thriller",
      "year": 1990,
      "runtimeMinutes": 149,
      "rating": "R",
      "score": 1.2,
      "director": "Hailee Streich"
    },
    {
      "title": "The Hidden Witness of Zurich",
      "genre": "thriller",
      "year": 1998,
      "runtimeMinutes": 161,
      "rating": "PG",
      "score": 3.8,
      "director": "Otis Hodkiewicz"
    },
    {
      "title": "The Perfect Alibi",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Kids' animation slate
GET /api/movies?genre=animation&count=10&seed=3
{
  "data": [
    {
      "title": "The Brave Dragonling of Cloud Kingdom",
      "genre": "animation",
      "year": 2013,
      "runtimeMinutes": 164,
      "rating": "G",
      "score": 3.9,
      "director": "Joana Marvin"
    },
    {
      "title": "The Fox of the Big Forest",
      "genre": "animation",
      "year": 2019,
      "runtimeMinutes": 181,
      "rating": "PG-13",
      "score": 9.9,
      "director": "Molly Jacobi"
    },
    {
      "title": "The Penguin of Tumbleweed Valley",
      "genre": "animation",
      "year": 2000,
      "runtimeMinutes": 118,
      "rating": "G",
      "score": 2.1,
      "director": "Cathy Prohaska"
    },
    {
      "title": "The Bouncy Whale of Tumbleweed Valley",
      "genre": "animation",
      "year": 1992,
      "runtimeMinutes": 93,
      "rating": "G",
      "score": 7,
      "director": "Deshaun Schinner-Sawayn"
    },
    {
      "title": "The Tiny Dragonling",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

About this API

Coverage & behavior

Generates believable movie records for streaming-app demos, watchlist UIs and recommendation fixtures. Titles are assembled from per-genre word pools (adjective + noun + motif) — ?genre=scifi really returns things like The Quantum Paradox of Titan Station. They are combinatorial inventions, never real film titles, and the genre field always matches the pools the title came from; omit genre for a mix across all 10.

The metadata follows the genre's conventions instead of being plain random:

  • runtimeMinutes is 75–200 for features, but 60–150 for documentary.
  • rating is one of G / PG / PG-13 / R — and animation is never rated R.
  • score is a one-decimal critic score from 1.0 to 10.0.

minYear/maxYear bound the release year inclusively (hard limits 1930–2027; minYear defaults to 1980, maxYear to the current year — set it up to 2027 for upcoming releases). minYear above maxYear is a 400, not a silent fix. Directors are fake names. With a seed the same request returns byte-identical movies forever.

Use it for

  • Fill a streaming-service or watchlist UI demo with genre-consistent titles
  • Test decade filters and rating badges against a bounded year window
  • Reproducible catalog fixtures via seed — the same shelf in every CI run

Frequently asked questions

Are these real movies?

No — titles, directors and scores are generated (badged mock). Use it for UI fixtures, not film trivia.

Can I bound the release years?

Yes — minYear/maxYear genuinely constrain year, and genre locks records to one genre.

What do the ratings look like?

An age-rating label plus a one-decimal review score — coherent enough for cards, tables and sort demos.