MovieDB API
Uma API completa e poderosa para acessar informações sobre filmes e séries. Obtenha dados detalhados, listas personalizadas e muito mais com nossa interface RESTful.
Visão Geral
Conheça os recursos e funcionalidades da MovieDB API
Listagem de Conteúdo
Acesse listas completas de filmes e séries com opções avançadas de filtros e ordenação.
- Filmes e séries separados ou combinados
 - Múltiplas opções de ordenação
 - Filtros por categoria e classificação
 - Paginação para grandes volumes
 
Busca Individual
Obtenha informações detalhadas de títulos específicos usando seus identificadores únicos.
- Dados completos do título
 - Informações de elenco e equipe
 - Avaliações e estatísticas
 - Metadados técnicos
 
Filtros Avançados
Personalize suas consultas com filtros específicos para diferentes tipos de conteúdo.
- Filtro por conteúdo adulto
 - Separação de animes
 - Ordenação por popularidade
 - Filtros por data de lançamento
 
Fácil Integração
Interface RESTful simples e intuitiva, compatível com qualquer linguagem de programação.
- Respostas em formato JSON
 - URLs amigáveis e semânticas
 - Documentação completa
 - Exemplos práticos de uso
 
Início Rápido
Escolha o Endpoint
                        Selecione entre /list para obter listas de títulos ou /{id} para buscar um título específico.
                    
Defina o Tipo
                        Especifique se deseja buscar movie (filmes) ou tv (séries) na URL do endpoint.
                    
Configure Parâmetros
                        Adicione parâmetros opcionais como sort_by, page ou is_anime para personalizar os resultados.
                    
Faça a Requisição
Execute a requisição HTTP GET e receba os dados em formato JSON estruturado e fácil de processar.
Endpoints da API
Conheça todos os endpoints disponíveis e suas funcionalidades
                    Retorna uma lista paginada de filmes ou séries com opções avançadas de filtros e ordenação. 
                    Substitua {type} por movie para filmes ou tv para séries.
                
Exemplos de URLs:
https://themoviesdb.net/api/movie/list
https://themoviesdb.net/api/tv/list
https://themoviesdb.net/api/movie/list?sort_by=popularity.desc
https://themoviesdb.net/api/tv/list?sort_by=vote_average.desc&page=2
                Parâmetros Suportados:
| Parâmetro | Tipo | Padrão | Descrição | 
|---|---|---|---|
| sort_by | string | id.desc | Define a ordenação dos resultados | 
| is_anime | integer | null | Filtra animes (0 = excluir, 1 = apenas animes) | 
| is_adult | integer | 0 | Filtra conteúdo adulto (0 = excluir, 1 = apenas +18) | 
| page | integer | 1 | Número da página para paginação | 
                    Retorna informações detalhadas de um título específico usando seu ID único. 
                    Substitua {type} por movie ou tv e {id} pelo ID do título.
                
Exemplos de URLs:
https://themoviesdb.net/api/movie?id=100088
https://themoviesdb.net/api/tv?id=100088
https://themoviesdb.net/api/movie?id=550
https://themoviesdb.net/api/tv?id=1399
                Parâmetros Obrigatórios:
| Parâmetro | Tipo | Obrigatório | Descrição | 
|---|---|---|---|
| id | integer | Sim | ID único do filme ou série a ser consultado | 
Parâmetros Detalhados
Guia completo de todos os parâmetros disponíveis e suas opções
Parâmetro: sort_by
                    Define como os resultados serão ordenados. Por padrão, os títulos são ordenados por id.desc (últimos adicionados primeiro).
                
Valores Disponíveis:
| Valor | Descrição | Exemplo de Uso | 
|---|---|---|
| id.desc | Últimos adicionados primeiro (padrão) | ?sort_by=id.desc | 
                        
| id.asc | Primeiros adicionados primeiro | ?sort_by=id.asc | 
                        
| vote_count.desc | Mais votados primeiro | ?sort_by=vote_count.desc | 
                        
| vote_count.asc | Menos votados primeiro | ?sort_by=vote_count.asc | 
                        
| popularity.desc | Mais populares primeiro | ?sort_by=popularity.desc | 
                        
| popularity.asc | Menos populares primeiro | ?sort_by=popularity.asc | 
                        
| vote_average.desc | Melhor avaliados primeiro | ?sort_by=vote_average.desc | 
                        
| vote_average.asc | Pior avaliados primeiro | ?sort_by=vote_average.asc | 
                        
| release_date.desc | Lançados recentemente primeiro | ?sort_by=release_date.desc | 
                        
| release_date.asc | Primeiros lançados primeiro | ?sort_by=release_date.asc | 
                        
| updated_at.desc | Últimas atualizações primeiro | ?sort_by=updated_at.desc | 
                        
| updated_at.asc | Atualizações antigas primeiro | ?sort_by=updated_at.asc | 
                        
Exemplos Práticos:
// Filmes mais populares
https://themoviesdb.net/api/movie/list?sort_by=popularity.desc
// Séries melhor avaliadas
https://themoviesdb.net/api/tv/list?sort_by=vote_average.desc
// Filmes lançados recentemente
https://themoviesdb.net/api/movie/list?sort_by=release_date.desc
                Parâmetro: is_anime
Filtra conteúdo de anime. Por padrão, animes são incluídos nos resultados junto com outros conteúdos.
| Valor | Comportamento | Exemplo de Uso | 
|---|---|---|
| 0 | Excluir animes dos resultados | ?is_anime=0 | 
                        
| 1 | Retornar apenas animes | ?is_anime=1 | 
                        
| null | Incluir todos (padrão) | sem parâmetro | 
                        
// Apenas filmes de anime mais populares
https://themoviesdb.net/api/movie/list?sort_by=popularity.desc&is_anime=1
// Séries excluindo animes
https://themoviesdb.net/api/tv/list?is_anime=0
                Parâmetro: is_adult
Controla a inclusão de conteúdo adulto (+18) nos resultados. Por padrão, conteúdo adulto é excluído.
| Valor | Comportamento | Exemplo de Uso | 
|---|---|---|
| 0 | Excluir conteúdo adulto (padrão) | ?is_adult=0 | 
                        
| 1 | Retornar apenas conteúdo adulto | ?is_adult=1 | 
                        
// Filmes excluindo conteúdo adulto (padrão)
https://themoviesdb.net/api/movie/list
// Filmes apenas para adultos
https://themoviesdb.net/api/movie/list?is_adult=1
                Parâmetro: page
Controla a paginação dos resultados. Cada página contém um número limitado de itens. Por padrão, retorna a página 1.
| Valor | Descrição | Exemplo de Uso | 
|---|---|---|
| 1 | Primeira página (padrão) | ?page=1 | 
                        
| 2, 3, ... | Páginas subsequentes | ?page=2 | 
                        
// Segunda página de filmes populares
https://themoviesdb.net/api/movie/list?sort_by=popularity.desc&page=2
// Terceira página de séries
https://themoviesdb.net/api/tv/list?page=3
                Combinando Parâmetros
Você pode combinar múltiplos parâmetros para criar consultas mais específicas e personalizadas.
Exemplos Avançados:
// Animes mais populares, página 2
https://themoviesdb.net/api/movie/list?sort_by=popularity.desc&is_anime=1&page=2
// Séries melhor avaliadas, excluindo animes
https://themoviesdb.net/api/tv/list?sort_by=vote_average.desc&is_anime=0
// Filmes lançados recentemente, sem conteúdo adulto
https://themoviesdb.net/api/movie/list?sort_by=release_date.desc&is_adult=0
// Todos os parâmetros combinados
https://themoviesdb.net/api/tv/list?sort_by=popularity.desc&is_anime=0&is_adult=0&page=3
                Exemplos de Código
Aprenda a integrar a API com exemplos práticos em PHP e JavaScript
Exemplos em PHP
1. Buscar Lista de Filmes
// Função para buscar lista de filmes
function getMovieList($sortBy = 'id.desc', $page = 1) {
    $url = "https://themoviesdb.net/api/movie/list?sort_by={$sortBy}&page={$page}";
    
    // Fazer requisição
    $response = file_get_contents($url);
    
    // Verificar se a requisição foi bem-sucedida
    if ($response === false) {
        return null;
    }
    
    // Decodificar JSON
    $data = json_decode($response, true);
    
    return $data;
}
// Exemplo de uso
$movies = getMovieList('popularity.desc', 1);
if ($movies) {
    foreach ($movies as $movie) {
        echo $movie['title'] . " - " . $movie['year'] . "\n";
    }
}
                    2. Buscar Filme Individual
// Função para buscar filme por ID
function getMovieById($id) {
    $url = "https://themoviesdb.net/api/movie?id={$id}";
    
    // Usar cURL para melhor controle de erros
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    curl_close($ch);
    
    if ($httpCode === 200 && $response !== false) {
        return json_decode($response, true);
    }
    
    return null;
}
// Exemplo de uso
$movie = getMovieById(100088);
if ($movie) {
    echo "Título: " . $movie['title'] . "\n";
    echo "Ano: " . $movie['year'] . "\n";
    echo "Avaliação: " . $movie['rating'] . "\n";
}
                    3. Buscar Animes Populares
// Função para buscar animes populares
function getPopularAnimes($type = 'movie') {
    $url = "https://themoviesdb.net/api/{$type}/list?sort_by=popularity.desc&is_anime=1";
    
    $context = stream_context_create([
        'http' => [
            'timeout' => 30,
            'method' => 'GET'
        ]
    ]);
    
    $response = file_get_contents($url, false, $context);
    
    if ($response !== false) {
        return json_decode($response, true);
    }
    
    return [];
}
// Buscar filmes de anime
$animeMovies = getPopularAnimes('movie');
// Buscar séries de anime
$animeSeries = getPopularAnimes('tv');
                    Exemplos em JavaScript
1. Buscar Lista com Fetch API
// Função assíncrona para buscar lista de filmes
async function getMovieList(sortBy = 'id.desc', page = 1) {
    const url = `https://themoviesdb.net/api/movie/list?sort_by=${sortBy}&page=${page}`;
    
    try {
        const response = await fetch(url);
        
        if (!response.ok) {
            throw new Error(`HTTP error! status: ${response.status}`);
        }
        
        const data = await response.json();
        return data;
        
    } catch (error) {
        console.error('Erro ao buscar filmes:', error);
        return null;
    }
}
// Exemplo de uso
getMovieList('popularity.desc', 1)
    .then(movies => {
        if (movies) {
            movies.forEach(movie => {
                console.log(`${movie.title} - ${movie.year}`);
            });
        }
    });
                    2. Buscar Série Individual
// Função para buscar série por ID
async function getTvShowById(id) {
    const url = `https://themoviesdb.net/api/tv?id=${id}`;
    
    try {
        const response = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            }
        });
        
        if (response.status === 404) {
            console.log('Série não encontrada');
            return null;
        }
        
        if (!response.ok) {
            throw new Error(`Erro ${response.status}: ${response.statusText}`);
        }
        
        return await response.json();
        
    } catch (error) {
        console.error('Erro ao buscar série:', error);
        return null;
    }
}
// Exemplo de uso
getTvShowById(100088)
    .then(tvShow => {
        if (tvShow) {
            console.log('Título:', tvShow.title);
            console.log('Ano:', tvShow.year);
            console.log('Avaliação:', tvShow.rating);
        }
    });
                    3. Buscar com Axios (Alternativa)
// Usando Axios para requisições (instale: npm install axios)
const axios = require('axios');
// Função para buscar séries melhor avaliadas
async function getTopRatedSeries() {
    try {
        const response = await axios.get('https://themoviesdb.net/api/tv/list', {
            params: {
                sort_by: 'vote_average.desc',
                is_anime: 0,
                page: 1
            },
            timeout: 5000
        });
        
        return response.data;
        
    } catch (error) {
        if (error.response) {
            console.error('Erro de resposta:', error.response.status);
        } else if (error.request) {
            console.error('Erro de rede:', error.message);
        } else {
            console.error('Erro:', error.message);
        }
        return null;
    }
}
// Exemplo de uso
getTopRatedSeries()
    .then(series => {
        if (series) {
            console.log(`Encontradas ${series.length} séries`);
        }
    });
                    4. Exemplo com jQuery
// Usando jQuery para requisições AJAX
function loadMovies(sortBy = 'popularity.desc') {
    $.ajax({
        url: 'https://themoviesdb.net/api/movie/list',
        method: 'GET',
        data: {
            sort_by: sortBy,
            is_adult: 0
        },
        timeout: 10000,
        success: function(data) {
            console.log('Filmes carregados:', data.length);
            
            // Processar dados
            data.forEach(function(movie) {
                $('#movies-container').append(
                    `
                        ${movie.title}
                        Ano: ${movie.year}
                        Avaliação: ${movie.rating}
                    `
                );
            });
        },
        error: function(xhr, status, error) {
            console.error('Erro ao carregar filmes:', error);
            $('#movies-container').html('Erro ao carregar filmes
');
        }
    });
}
// Carregar filmes quando a página estiver pronta
$(document).ready(function() {
    loadMovies('popularity.desc');
});
                    Estrutura das Respostas
Entenda o formato JSON retornado pela API e como processar os dados
Resposta: Lista de Títulos
                        Quando você faz uma requisição para /list, a API retorna um array de objetos JSON com os seguintes campos:
                    
[
  {
    "id": 100088,
    "title": "Deu Match: A Rainha de Apps de Namoro",
    "original_title": "Deu Match: A Rainha de Apps de Namoro",
    "overview": "Whitney Wolfe, recém-formada da faculdade, usa uma combinação extraordinária de coragem e criatividade para conquistar espaço na indústria de tecnologia...",
    "release_date": "2025-06-04",
    "poster_path": "/path/to/poster.jpg",
    "backdrop_path": "/path/to/backdrop.jpg",
    "vote_average": 6.4,
    "vote_count": 128,
    "popularity": 45.123,
    "adult": false,
    "genre_ids": [18, 35],
    "original_language": "pt",
    "video": false
  },
  {
    "id": 200156,
    "title": "A Big Bold Beautiful Journey",
    "original_title": "A Big Bold Beautiful Journey",
    "overview": "Uma jornada épica através de paisagens deslumbrantes...",
    "release_date": "2025-03-15",
    "poster_path": "/path/to/poster2.jpg",
    "backdrop_path": "/path/to/backdrop2.jpg",
    "vote_average": 6.7,
    "vote_count": 89,
    "popularity": 32.456,
    "adult": false,
    "genre_ids": [12, 18],
    "original_language": "en",
    "video": false
  }
]
                    Resposta: Título Individual
Quando você busca um título específico por ID, a API retorna um objeto JSON detalhado:
{
  "id": 100088,
  "title": "Deu Match: A Rainha de Apps de Namoro",
  "original_title": "Deu Match: A Rainha de Apps de Namoro",
  "overview": "Whitney Wolfe, recém-formada da faculdade, usa uma combinação extraordinária de coragem e criatividade para conquistar espaço na indústria de tecnologia dominada por homens.",
  "tagline": "Uma história de inovação e determinação",
  "release_date": "2025-06-04",
  "runtime": 118,
  "budget": 15000000,
  "revenue": 45000000,
  "poster_path": "/path/to/poster.jpg",
  "backdrop_path": "/path/to/backdrop.jpg",
  "vote_average": 6.4,
  "vote_count": 128,
  "popularity": 45.123,
  "adult": false,
  "video": false,
  "homepage": "https://example.com/movie",
  "imdb_id": "tt1234567",
  "original_language": "pt",
  "status": "Released",
  "genres": [
    {
      "id": 18,
      "name": "Drama"
    },
    {
      "id": 35,
      "name": "Comédia"
    }
  ],
  "production_companies": [
    {
      "id": 1,
      "name": "Netflix",
      "logo_path": "/netflix-logo.png",
      "origin_country": "US"
    }
  ],
  "production_countries": [
    {
      "iso_3166_1": "BR",
      "name": "Brazil"
    }
  ],
  "spoken_languages": [
    {
      "iso_639_1": "pt",
      "name": "Português"
    }
  ]
}
                    Descrição dos Campos
| Campo | Tipo | Descrição | 
|---|---|---|
| id | integer | Identificador único do título | 
| title | string | Título do filme/série | 
| overview | string | Sinopse do título | 
| release_date | string | Data de lançamento (formato: YYYY-MM-DD) | 
| vote_average | float | Avaliação média (0.0 a 10.0) | 
| vote_count | integer | Número total de votos | 
| popularity | float | Índice de popularidade | 
| poster_path | string | Caminho para a imagem do pôster | 
| backdrop_path | string | Caminho para a imagem de fundo | 
| adult | boolean | Indica se é conteúdo adulto (+18) | 
| genre_ids | array | Array com IDs dos gêneros (apenas em listas) | 
| genres | array | Array com objetos de gêneros completos (apenas individual) | 
Códigos de Status e Erros
Entenda os códigos de resposta HTTP e como tratar erros adequadamente
Requisição bem-sucedida. Dados retornados normalmente.
Parâmetros inválidos ou malformados na requisição.
Título não encontrado ou endpoint inválido.
Limite de requisições excedido. Tente novamente mais tarde.
Erro interno do servidor. Tente novamente em alguns minutos.
Serviço temporariamente indisponível para manutenção.
Exemplos de Tratamento de Erros
PHP - Tratamento Completo
function fetchMovieWithErrorHandling($id) {
    $url = "https://themoviesdb.net/api/movie?id={$id}";
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    
    curl_close($ch);
    
    // Verificar erros de conexão
    if ($response === false || !empty($error)) {
        return [
            'success' => false,
            'error' => 'Erro de conexão: ' . $error
        ];
    }
    
    // Verificar códigos de status HTTP
    switch ($httpCode) {
        case 200:
            $data = json_decode($response, true);
            if (json_last_error() !== JSON_ERROR_NONE) {
                return [
                    'success' => false,
                    'error' => 'Erro ao decodificar JSON'
                ];
            }
            return [
                'success' => true,
                'data' => $data
            ];
            
        case 404:
            return [
                'success' => false,
                'error' => 'Filme não encontrado'
            ];
            
        case 429:
            return [
                'success' => false,
                'error' => 'Muitas requisições. Tente novamente em alguns minutos.'
            ];
            
        default:
            return [
                'success' => false,
                'error' => "Erro HTTP: {$httpCode}"
            ];
    }
}
                JavaScript - Tratamento com Fetch
async function fetchMovieWithErrorHandling(id) {
    const url = `https://themoviesdb.net/api/movie?id=${id}`;
    
    try {
        const response = await fetch(url, {
            method: 'GET',
            headers: {
                'Content-Type': 'application/json'
            },
            signal: AbortSignal.timeout(10000) // 10 segundos timeout
        });
        
        // Verificar status da resposta
        if (!response.ok) {
            let errorMessage;
            
            switch (response.status) {
                case 400:
                    errorMessage = 'Parâmetros inválidos na requisição';
                    break;
                case 404:
                    errorMessage = 'Filme não encontrado';
                    break;
                case 429:
                    errorMessage = 'Muitas requisições. Tente novamente mais tarde.';
                    break;
                case 500:
                    errorMessage = 'Erro interno do servidor';
                    break;
                default:
                    errorMessage = `Erro HTTP: ${response.status}`;
            }
            
            throw new Error(errorMessage);
        }
        
        const data = await response.json();
        
        return {
            success: true,
            data: data
        };
        
    } catch (error) {
        if (error.name === 'AbortError') {
            return {
                success: false,
                error: 'Requisição cancelada por timeout'
            };
        }
        
        if (error.name === 'TypeError') {
            return {
                success: false,
                error: 'Erro de rede ou conectividade'
            };
        }
        
        return {
            success: false,
            error: error.message
        };
    }
}
// Exemplo de uso
fetchMovieWithErrorHandling(100088)
    .then(result => {
        if (result.success) {
            console.log('Filme encontrado:', result.data.title);
        } else {
            console.error('Erro:', result.error);
        }
    });