exepal
exepal / tools / movie-showtimes

What's on tonight, answered in one call.

Give a city ("Mumbai, India") and get every film playing there with start times per cinema. Add a film to see where it's on, or a cinema's name to see its whole listing. Your assistant can answer "what's on tonight" and then hand the person a booking link.

What you get back

  • Days (today, tomorrow and on) with the cinemas and start times for each
  • Formats per showing: Standard, 3D, IMAX, Dolby and others
  • Cinema name, address and distance; film details (rating, runtime, genres) when you search one film
  • Local booking sites for the country, such as BookMyShow in India or QFX and Big Movies in Nepal

Call it from your code or agent

Same input and the same JSON answer everywhere. You're only charged when the call succeeds.

This tool is paid only: your key spends prepaid credit, or pay per call in USDC with the x402 tab. Get a free key at exepal.com/key.

curl -X POST https://api.exepal.com/v1/movies/showtimes \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_KEY" \
  -d '{"location":"Mumbai, India","movie":"Dune: Part Three"}'

This tool is paid only: your key spends prepaid credit, or pay per call in USDC with the x402 tab. Get a free key at exepal.com/key.

const res = await fetch("https://api.exepal.com/v1/movies/showtimes", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_KEY" },
  body: JSON.stringify({
    "location": "Mumbai, India",
    "movie": "Dune: Part Three"
  }),
});
const data = await res.json();

This tool is paid only: your key spends prepaid credit, or pay per call in USDC with the x402 tab. Get a free key at exepal.com/key.

import requests

r = requests.post(
    "https://api.exepal.com/v1/movies/showtimes",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={
        "location": "Mumbai, India",
        "movie": "Dune: Part Three"
    },
    timeout=120,
)
print(r.json())

Add Exepal once and your assistant can call movies_showtimes by itself. More clients on the integrate page.

# Claude Code
claude mcp add --transport http exepal "https://api.exepal.com/mcp?key=YOUR_KEY"

# Cursor, Windsurf, Claude Desktop and most clients (mcp.json)
{
  "mcpServers": {
    "exepal": { "url": "https://api.exepal.com/mcp?key=YOUR_KEY" }
  }
}

No key at all: an agent with a wallet pays per call in USDC on Base. npm i @x402/fetch @x402/evm viem. How x402 works.

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(process.env.WALLET_KEY)) }],
});
const res = await pay("https://api.exepal.com/v1/movies/showtimes", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "location": "Mumbai, India",
    "movie": "Dune: Part Three"
  }),
});

Questions

Where does the data come from?
Google's public showtimes, fetched through SerpAPI. That covers India, the US, the UK, Europe and most large cities.
Does it work in Nepal?
Only where Google has listings, which is thin today. When nothing is found you get an error naming QFX, Big Movies and FCube's own sites, and you are not charged.
Can it book tickets?
No. It is read-only: no seat holds and no payments. Send the person to the cinema link or the booking site in the answer.

Related tools

palnext step

Run Movie showtimes from your agent today.

20 free calls a day on the everyday tools, the price shown before every call, and nothing charged when a call fails.