Cinemark APIcinemark.cl ↗
Access Cinemark Chile cinemas, showtimes, ticket prices, concessions, promotions, and movie details via a structured JSON API. 11 endpoints.
What is the Cinemark API?
The Cinemark Chile API exposes 11 endpoints covering every theater in Chile, current and upcoming movies, session-level showtimes, ticket pricing, and concessions menus. Starting with get_cinemas you can retrieve all Cinemark locations with coordinates, city, available formats, and room counts, then drill down to showtimes and ticket prices for any specific theater and session.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/c41820e7-6833-4249-9478-8e3e925c3114/get_cinemas' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cinemark-cl-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Cinemark Chile API - Usage Example
Get your API key from: https://parse.bot/settings
"""
import requests
import os
class ParseClient:
"""Client for Cinemark Chile API."""
def __init__(self, api_key=None):
self.api_key = api_key or os.getenv("PARSE_API_KEY")
self.base_url = "https://api.parse.bot"
self.scraper_id = "c41820e7-6833-4249-9478-8e3e925c3114"
def _call(self, endpoint, method="POST", **params):
"""Make API call."""
url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
headers = {
"X-API-Key": self.api_key,
"Content-Type": "application/json",
}
payload = dict(params)
if method.upper() == "GET":
response = requests.get(url, headers=headers, params=payload)
else:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
return data
def get_cinemas(self):
"""Get a list of all Cinemark cinemas in Chile with their addresses, locations, available formats, and room counts. Returns all theaters regardless of location."""
return self._call("get_cinemas", method="GET")
def get_movies_now_showing(self, cinema_id):
"""Get the currently showing movies and showtimes for a specific cinema, grouped by date and movie. Each movie entry includes its sessions with times, formats, seat availability, and room numbers."""
return self._call("get_movies_now_showing", method="GET", cinema_id=cinema_id)
def get_movie_details(self, slug):
"""Get detailed information for a specific movie including synopsis, cast, genres, available formats, versions, languages, and trailer URL. The slug is available from get_movies results. Returns the movie object directly."""
return self._call("get_movie_details", method="GET", slug=slug)
def get_ticket_prices(self, cinema_id, showtime_id):
"""Get ticket types and prices for a specific showtime session."""
return self._call("get_ticket_prices", method="GET", cinema_id=cinema_id, showtime_id=showtime_id)
def get_releases(self, date=None):
"""Get movies available for presale or coming soon. Returns movies with status PRESALE or COMING_SOON from the full movies catalog. Optionally filter by opening date."""
return self._call("get_releases", method="GET", date=date)
def get_confiteria(self, cinema_id):
"""Get the snack bar / concessions menu items for a specific cinema. Returns categories of items (Combos, Coleccionables, Rellenos, etc.) with prices in cents, descriptions, and modifier options."""
return self._call("get_confiteria", method="GET", cinema_id=cinema_id)
def get_promotions(self):
"""Get current promotions and discounts available at Cinemark Chile cinemas. Each promotion includes title, description, image, validity dates, applicable theater IDs, and terms."""
return self._call("get_promotions", method="GET")
def get_muvi_club_info(self):
"""Get Muvi Club loyalty program information and benefits."""
return self._call("get_muvi_club_info", method="GET")
def get_movies(self, status=None):
"""Get all movies currently available at Cinemark Chile including those showing now, in presale, and coming soon. Optionally filter by status. Each movie includes id, slug, title, status, openingDate, runTime, posterUrl, rating, formats, and languages."""
return self._call("get_movies", method="GET", status=status)
def get_showtimes(self, theater_id, date=None):
"""Get showtimes for a specific theater. Returns all available sessions for the next several days, including movie name, session time, format, language, room, and seat availability. May return an empty array if no showtimes are currently published."""
return self._call("get_showtimes", method="GET", theater_id=theater_id, date=date)
def get_formats(self):
"""Get available cinema formats at Cinemark Chile (2D, 3D, IMAX, DBOX, XD, PALCO, PREMIER, PLAY) with descriptions, images, and feature flags."""
return self._call("get_formats", method="GET")
if __name__ == "__main__":
client = ParseClient()
result = client.get_cinemas()
print("get_cinemas:", result)
result = client.get_movies_now_showing(cinema_id="<The numeric ID of the cinema (>")
print("get_movies_now_showing:", result)
result = client.get_movie_details(slug="<The URL slug of the movie (e.g>")
print("get_movie_details:", result)
result = client.get_ticket_prices(cinema_id="<The unique ID of the cinema.>", showtime_id="<The unique ID of the showtime >")
print("get_ticket_prices:", result)
result = client.get_releases(date="<Filter releases by opening dat>")
print("get_releases:", result)
result = client.get_confiteria(cinema_id="<The numeric ID of the cinema (>")
print("get_confiteria:", result)
result = client.get_promotions()
print("get_promotions:", result)
result = client.get_muvi_club_info()
print("get_muvi_club_info:", result)
result = client.get_movies(status="<Filter movies by status. Accep>")
print("get_movies:", result)
result = client.get_showtimes(theater_id="<Numeric theater ID from get_ci>", date="<Date to filter showtimes for i>")
print("get_showtimes:", result)
result = client.get_formats()
print("get_formats:", result)
Get a list of all Cinemark cinemas in Chile with their addresses, locations, available formats, and room counts. Returns all theaters regardless of location.
No input parameters required.
{
"type": "object",
"fields": {
"theaters": "array of theater objects with id, name, slug, address, city, latitude, longitude, location, formats, totalCinemaRooms, hasConcessions, loyaltyCode, mapUrl"
},
"sample": {
"data": {
"theaters": [
{
"id": 512,
"city": "Santiago",
"name": "Cinemark Alto Las Condes",
"slug": "cinemark-alto-las-condes",
"address": "Avenida Kennedy 9001, Local 3092, Las Condes",
"latitude": "-33.3906",
"longitude": "-70.5466",
"hasConcessions": true,
"totalCinemaRooms": 12
}
]
},
"status": "success"
}
}About the Cinemark API
Theaters, Movies, and Showtimes
get_cinemas returns every Cinemark Chile location as an array of theater objects including id, name, slug, address, city, latitude, longitude, available formats, totalCinemaRooms, and a hasConcessi flag. Those IDs feed directly into get_showtimes and get_movies_now_showing. get_showtimes accepts a theater_id and an optional date (YYYY-MM-DD) and returns session-level detail: movieId, movieName, language, formats, theaterRoom, sessionId, and seat availability. get_movies_now_showing accepts a cinema_id and returns results grouped first by date, then by movie, with each movie's sessions nested underneath.
Movie Catalog and Releases
get_movies returns the full catalog — SHOWING_NOW, PRESALE, and COMING_SOON titles — with an optional status filter. Each movie object includes id, corporateId, slug, title, openingDate, runTime, posterUrl, rating, formats, and languages. For richer detail, pass a movie slug to get_movie_details to receive the full synopsis, cast, genres, versions, and trailer URL. get_releases narrows the catalog to presale and upcoming titles and accepts an optional date prefix to filter by opening date.
Ticket Prices and Concessions
get_ticket_prices requires both a cinema_id and a showtime_id (available from showtime results) and returns the full Tickets array for that session, including ticket types and prices. get_confiteria takes a cinema_id and returns the snack bar menu organized into categories such as Combos, Coleccionables, and Rellenos — each item includes mCode, title, description, salePri (price in cents), and any modifier options.
Promotions and Loyalty
get_promotions returns current deals with title, description, image, startDate, endDate, applicable theaterIds, and termsAndConditions. get_muvi_club_info returns structured information about Cinemark Chile's Muvi Club loyalty program. get_formats lists all cinema formats (2D, 3D, IMAX, DBOX, XD, PALCO, PREMIER, PLAY) with description, images, feature flags, and labelList.
The Cinemark API is a managed, monitored endpoint for cinemark.cl — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cinemark.cl changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cinemark.cl API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a showtime aggregator that displays all Cinemark Chile sessions by city using
get_cinemasandget_showtimes. - Compare ticket prices across formats (IMAX vs 2D) for the same session using
get_ticket_priceswith differentshowtime_idvalues. - Send push notifications for presale openings by polling
get_releasesand watching for status changes to SHOWING_NOW. - Display a full movie profile page by combining
get_movie_details(synopsis, cast, trailer) with session data fromget_movies_now_showing. - Build a concessions pre-order tool using the
get_confiteriamenu categories, item prices, and modifier options. - Track which promotions apply to a given theater by matching
theaterIdsfromget_promotionsagainst a selectedcinema_id. - List upcoming releases filtered by opening date by passing a YYYY-MM-DD prefix to
get_releases.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Cinemark Chile have an official developer API?+
How do `get_showtimes` and `get_movies_now_showing` differ?+
get_showtimes returns a flat array of session objects keyed by sessionId, each with movieId, language, formats, theaterRoom, and seat availability. get_movies_now_showing returns the same theater's sessions but grouped hierarchically by date and then by movie, which is useful when you need to render a schedule view without doing that grouping yourself. Both require a theater ID; get_showtimes additionally accepts an optional date filter.Does `get_ticket_prices` return prices for all ticket categories?+
Tickets array for the requested session, which includes all ticket types and their prices that Cinemark Chile publishes for that showtime. The response object also contains a ResponseCode field. Prices are session-specific, so the same movie in IMAX vs 2D will require separate calls with different showtime_id values.Can I look up showtimes across all cinemas in one call?+
get_showtimes and get_movies_now_showing both require a specific theater_id or cinema_id, so a cross-theater schedule requires one call per theater. You can fork this API on Parse and revise it to add a multi-theater aggregation endpoint.Is seat-map or seat-selection data available?+
get_showtimes and get_movies_now_showing) but does not expose individual seat identifiers, seat categories, or interactive seating layouts. You can fork this API on Parse and revise it to add a seat-map endpoint if that data becomes accessible.