Find an API

Search public APIs with auth details & Postman guides

← All APIs

OMDb API

www.omdbapi.com · Media

Media API Key Free Tier Movies TV Ratings

Movie and TV metadata including IMDb ratings, Rotten Tomatoes scores, Metacritic, poster URLs, plots, and full cast lists. Search by title or IMDb ID. Free tier: 1,000 requests/day.

Authentication

API Key authentication Free API key at omdbapi.com. Pass as ?apikey= query parameter.

Sample Requests

GET Search by title

Get full details for the movie Inception.

https://www.omdbapi.com?t=Inception&apikey=YOUR_KEY

Hover any highlighted part to learn what it does

curl -X GET "https://www.omdbapi.com/?t=Inception&apikey=YOUR_KEY"
import requests
params = {
    "t": "Inception",
    "apikey": "YOUR_KEY"
}
response = requests.get(
    "https://www.omdbapi.com/",
    params=params,
)
print(response.json())
const url = new URL('https://www.omdbapi.com/');
url.searchParams.set('t', 'Inception');
url.searchParams.set('apikey', 'YOUR_KEY');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://www.omdbapi.com/")
	q := baseURL.Query()
	q.Set("t", "Inception")
	q.Set("apikey", "YOUR_KEY")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://www.omdbapi.com/")
uri.query = URI.encode_www_form({
  "t" => "Inception",
  "apikey" => "YOUR_KEY"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://www.omdbapi.com/?" . http_build_query([
    "t" => "Inception",
    "apikey" => "YOUR_KEY"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Search by IMDb ID

Get details for The Shawshank Redemption by IMDb ID.

https://www.omdbapi.com?i=tt0111161&apikey=YOUR_KEY

Hover any highlighted part to learn what it does

curl -X GET "https://www.omdbapi.com/?i=tt0111161&apikey=YOUR_KEY"
import requests
params = {
    "i": "tt0111161",
    "apikey": "YOUR_KEY"
}
response = requests.get(
    "https://www.omdbapi.com/",
    params=params,
)
print(response.json())
const url = new URL('https://www.omdbapi.com/');
url.searchParams.set('i', 'tt0111161');
url.searchParams.set('apikey', 'YOUR_KEY');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://www.omdbapi.com/")
	q := baseURL.Query()
	q.Set("i", "tt0111161")
	q.Set("apikey", "YOUR_KEY")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://www.omdbapi.com/")
uri.query = URI.encode_www_form({
  "i" => "tt0111161",
  "apikey" => "YOUR_KEY"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://www.omdbapi.com/?" . http_build_query([
    "i" => "tt0111161",
    "apikey" => "YOUR_KEY"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. Get a free API key at omdbapi.com (1,000 req/day)
  2. By title: GET /?t=The+Matrix&apikey=KEY
  3. By IMDb ID: GET /?i=tt0133093&apikey=KEY
  4. Search: GET /?s=Batman&type=movie&apikey=KEY (returns list)
  5. Add &plot=full for full plot or &plot=short (default) for synopsis

What can you build with OMDb API?

OMDb API is a Media API. Developers commonly use media APIs for:

  • storing and delivering images, video, and audio
  • building digital asset management and media libraries
  • transcoding and optimising media for the web
  • adding video streaming and playback to your app
  • automating content tagging and metadata extraction

API Key authentication. You'll receive a key after signing up. Send it with every request — in a header or query parameter. Keep it out of client-side code and never commit it to version control. OMDb API is free to use up to a usage limit, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide

Open documentation ↗