API Documentation

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.

2 Endpoints Principais
8 Parâmetros de Filtro
100% JSON Response

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

1

Escolha o Endpoint

Selecione entre /list para obter listas de títulos ou /{id} para buscar um título específico.

2

Defina o Tipo

Especifique se deseja buscar movie (filmes) ou tv (séries) na URL do endpoint.

3

Configure Parâmetros

Adicione parâmetros opcionais como sort_by, page ou is_anime para personalizar os resultados.

4

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

GET https://themoviesdb.net/api/{type}/list

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
GET https://themoviesdb.net/api/{type}?id={id}

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

200
OK
Requisição bem-sucedida. Dados retornados normalmente.
400
Bad Request
Parâmetros inválidos ou malformados na requisição.
404
Not Found
Título não encontrado ou endpoint inválido.
429
Too Many Requests
Limite de requisições excedido. Tente novamente mais tarde.
500
Internal Server Error
Erro interno do servidor. Tente novamente em alguns minutos.
503
Service Unavailable
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); } });