39+ endpoints for movies, TV shows, streaming links, genres, cast, sub/dub info. No API key required. Free forever.
All endpoints are accessed via this base URL. No authentication needed.
success, results, and creator fields.Complete list of every API endpoint with descriptions and examples.
Embed our ad-blocked player on your website. Popup ads, redirects, and overlays are automatically blocked.
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Required | movie or tv |
| title | string | Optional | Content title for page title |
| season | integer | TV Only | Season number |
| episode | integer | TV Only | Episode number |
| server | integer | Optional | Server index (default: 0) |
| year | string | Optional | Release year for TMDB lookup |
<!-- Ad-blocked player iframe --> <iframe src="https://multimoviesapis.vercel.app/api/player/inception?type=movie&title=Inception" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; picture-in-picture" ></iframe>
Copy-paste ready code for JavaScript, PHP, Python, and cURL.
const API = 'https://multimoviesapis.vercel.app'; const search = async (query) => { const res = await fetch(`${API}/api/search?q=${query}`); const data = await res.json(); return data.results; }; const getMovie = async (slug) => { const res = await fetch(`${API}/api/movies/${slug}`); return (await res.json()).results; }; function loadPlayer(containerId, slug, type) { const url = `${API}/api/player/${slug}?type=${type}`; document.getElementById(containerId).innerHTML = `<iframe src="${url}" style="width:100%;height:500px;border:none;" allowfullscreen></iframe>`; }
<?php $API = 'https://multimoviesapis.vercel.app'; function api_get($endpoint) { global $API; $data = file_get_contents($API . $endpoint); return json_decode($data, true); } $results = api_get('/api/search?q=batman'); foreach ($results['results']['items'] as $movie) { echo $movie['title'] . '<br>'; } function player_embed($slug, $type = 'movie') { global $API; $url = "$API/api/player/$slug?type=$type"; return "<iframe src='$url' style='width:100%;height:500px;border:none;' allowfullscreen></iframe>"; }
import requests API = "https://multimoviesapis.vercel.app" def search(query): r = requests.get(f"{API}/api/search", params={"q": query}) return r.json()["results"]["items"] def get_movie(slug): r = requests.get(f"{API}/api/movies/{slug}") return r.json()["results"] def player_url(slug, type_="movie"): return f"{API}/api/player/{slug}?type={type_}" movies = search("batman") print(movies[0]["title"])
# Search curl "https://multimoviesapis.vercel.app/api/search?q=batman" # Movie detail curl "https://multimoviesapis.vercel.app/api/movies/inception" # TV show episodes curl "https://multimoviesapis.vercel.app/api/tvshows/the-boys/seasons/1/episodes" # Filter movies curl "https://multimoviesapis.vercel.app/api/filter?genre=action&year=2024&type=movie" # Health check curl "https://multimoviesapis.vercel.app/api/status" | jq
<!-- Responsive ad-blocked player --> <div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:8px;"> <iframe src="https://multimoviesapis.vercel.app/api/player/inception?type=movie" style="position:absolute;top:0;left:0;width:100%;height:100%;border:none;" allowfullscreen allow="autoplay; fullscreen; picture-in-picture" ></iframe> </div>
Make a live request to any endpoint directly from this page.
// Click "Run" to test
Fair usage limits protect the API from abuse and ensure availability for everyone.
| Limit | Value | Description |
|---|---|---|
| Requests per minute | 60 | Per IP address |
| Burst allowance | 10 | Short burst allowed |
| Cache TTL | 30 min | In-memory response cache |
429 Too Many Requests. Cache responses on your end when possible.Common HTTP status codes returned by the API.
| Status | Meaning | When It Happens |
|---|---|---|
| 200 OK | Success | Request succeeded |
| 400 Bad Request | Client Error | Missing or invalid parameters |
| 404 Not Found | Not Found | Content or endpoint doesn't exist |
| 429 Too Many Requests | Rate Limited | Request quota exceeded |
| 500 Server Error | Server Error | Upstream source failed |
| 503 Service Unavailable | Unavailable | Source website temporarily down |
Every endpoint returns data in this consistent format.
{
"success": true,
"results": {
"title": "Inception",
"type": "movie",
"slug": "inception",
"sources": [
{
"title": "Server 01",
"embed_url": "https://gdmirrorbot.nl/embed/abt92w4",
"type": "iframe"
}
]
},
"creator": {
"name": "Shinei Nouzen",
"github": "https://github.com/Shineii86",
"telegram": "https://t.me/Shineii86",
"timestamp": "2026-06-16T12:00:00+05:30"
}
}
Complete coverage — search, filter, detail, streaming, genres, cast, directors.
Zero authentication. Just call the endpoint and get JSON data. Free forever.
Built-in player wrapper that blocks popups, redirects, and ad overlays.
In-memory caching with 30-minute TTL. Sub-second response times.
Responsive JSON data. Works seamlessly on mobile and desktop clients.
DooPlayer + CineVerse (TMDB) sources. Automatic fallback between servers.
TMDB_API_KEY env var. DooPlayer sources work without configuration.creator attribution. Please keep it intact when using the API.