Tony Wang4 min de lecturaCómo scrapear JustWatch en 2026 (API y Python)
Scrapea la disponibilidad en streaming de JustWatch en 2026 — ofertas, títulos y providers en 120+ países — DIY, no-code o API estructurada.
La forma más rápida de scrapear JustWatch en 2026 es llamar a una API estructurada que devuelve JSON normalizado — ofertas de dónde ver, detalles de títulos, providers y discovery en más de 120 países — en lugar de hacer ingeniería inversa de la API GraphQL de JustWatch tú mismo. JustWatch es la mayor base de datos de "dónde ver", pero no tiene una API pública de autoservicio y la librería no oficial más usada prohíbe el uso comercial. Esta guía cubre los tres enfoques, qué devuelve cada uno, dónde se rompe cada uno y lo básico en materia legal.
¿Por qué scrapear JustWatch?
JustWatch mapea qué títulos están en streaming y dónde, lo que impulsa:
- Seguimiento de disponibilidad en streaming — saber qué servicios tienen un título, en qué país, a qué precio.
- Funciones de "dónde ver" — añadir datos de disponibilidad a una app de medios o a una guía.
- Análisis de catálogo y ventanas — rastrear cuándo llegan y se van los títulos de los servicios.
- Investigación competitiva de OTT — comparar catálogos de providers entre mercados.
¿Es legal scrapear JustWatch?
Opción 1: Hacerlo tú mismo (DIY) en Python (y por qué se rompe)
El sitio de JustWatch funciona sobre una API GraphQL pública, así que un scraper DIY replica esas queries:
import requests
# JustWatch serves data from a GraphQL endpoint; you replicate its persisted queries
resp = requests.post(
"https://apis.justwatch.com/graphql",
json={"operationName": "GetSearchTitles", "variables": {"country": "US"}, "query": "..."},
)
Funciona en la demo y luego se rompe:
- No hay API oficial de autoservicio. La oferta oficial de JustWatch es un producto de partnership/enterprise — informes de datos y widgets a medida, acordados a través de
[email protected]— no una clave pública a la que puedas registrarte. - La librería no oficial es no comercial. La popular librería de Python
JustWatchAPIenvuelve el endpoint GraphQL, pero sus términos prohíben el uso comercial, así que queda fuera de límites para un producto. - Deriva de GraphQL. JustWatch usa queries GraphQL persistidas/hasheadas que cambian, así que las queries replicadas se rompen cuando los hashes o el esquema cambian.
- Fan-out por país. La disponibilidad es por país — para saber dónde está en streaming un título en todo el mundo hay que consultar cada uno de los más de 120 locales y unir los resultados, todo mientras te mantienes por debajo de los rate limits.
Opción 2: Herramientas no-code
Los actores de "disponibilidad de JustWatch" en marketplaces exportan CSV/JSON y sirven para extracciones puntuales, pero son incómodos en un pipeline dentro de un producto y heredan la misma fragilidad de GraphQL.
Opción 3: Una API estructurada de JustWatch
Para flujos de trabajo repetibles, una API de scraping de JustWatch devuelve JSON normalizado sin GraphQL que mantener. Busca un título:
curl "https://api.crawlora.net/api/v1/justwatch/search?query=inception&country=US" \
-H "x-api-key: $CRAWLORA_API_KEY"
Luego resuelve el id del título y trae sus ofertas de dónde ver en Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/justwatch"
# search returns a JustWatch title id (e.g. tm92641)
hits = requests.get(f"{base}/search", headers=h, params={"query": "inception", "country": "US"}).json()["data"]["results"]
title_id = hits[0]["id"]
offers = requests.get(f"{base}/title/offers", headers=h, params={"id": title_id, "countries": "US,GB"}).json()["data"]
providers = requests.get(f"{base}/providers", headers=h, params={"country": "US"}).json()["data"]
Una respuesta de búsqueda es JSON normalizado (campos reales):
{
"code": 200,
"msg": "OK",
"data": {
"query": "inception",
"country": "US",
"language": "en",
"results": [
{ "id": "tm92641", "object_type": "MOVIE", "title": "Inception", "year": 2010, "path": "/us/movie/inception", "url": "https://www.justwatch.com/us/movie/inception", "poster_url": "https://images.justwatch.com/poster/302449148/s718/inception.jpg" }
]
}
}
Las ofertas llegan por país (los campos son ilustrativos — revisa los docs): cada una lleva un provider, un monetization_type (flatrate/rent/buy/free/ads), un formato de presentación (SD/HD/4K), un price y un deeplink. Usa /justwatch/providers para listar servicios, y /justwatch/discover, /provider/titles, /genre/titles o /popular para explorar catálogos. Guarda una fila por oferta y vuelve a traer los datos con un calendario definido.
Qué puedes recopilar
Metadatos públicos de disponibilidad: resultados de búsqueda (id, tipo MOVIE/SHOW, título, año, path, url, poster); detalle del título, media y títulos similares; ofertas de dónde ver por país (provider, tipo de monetización, formato, precio, deeplink); la lista de providers; y discovery por provider, género, tipo de monetización o popularidad. Solo datos públicos de disponibilidad.
Limitaciones y retos habituales
- No hay API oficial de autoservicio. Los datos oficiales de JustWatch son solo de partnership/enterprise, y la librería no oficial de Python es no comercial — así que un producto comercial implica scrapear los datos públicos tú mismo o a través de una API estructurada.
- La disponibilidad es por país. Las ofertas están acotadas a un país, así que la cobertura mundial implica consultar cada mercado que te interese y unir los resultados.
- Los precios y las ventanas cambian rápido. Los títulos llegan y se van de los servicios y los precios cambian, así que vuelve a traer los datos con un calendario definido en lugar de confiar en una instantánea única.
- Datos públicos, no acceso. Esto te dice dónde está disponible un título; nunca salta el paywall ni el DRM de un provider.
Dónde se usa esto
- Seguimiento de disponibilidad en streaming — monitorear dónde está en streaming un título, por país y precio.
- Funciones de "dónde ver" — dar potencia a los datos de disponibilidad en una app de medios o una guía.
- Investigación de catálogo OTT — comparar bibliotecas de providers y ventanas de estreno entre mercados.
Fuentes
Empieza a recopilar
Pruébalo primero, gratis: pasa cualquier URL pública por el Free Web Scraper, o revisa si un sitio bloquea bots con el Anti-Bot Checker — sin registro.
Prueba los endpoints de búsqueda y ofertas en el Playground, revisa el esquema en los API docs y consulta los pricing. La disponibilidad responde dónde está en streaming un título; dos conjuntos de datos vecinos responden si alguien lo está buscando: cómo scrapear Google Trends muestra la demanda de búsqueda de un título frente a los providers que realmente lo tienen, y cómo scrapear reseñas de App Store cubre cómo se valoran las propias apps de streaming — la profundidad del catálogo y la calidad de la app son las dos mitades de una comparación OTT. Ver también how to choose a web scraping API y is web scraping legal — o descubre lo que revelan los datos de disponibilidad de JustWatch en nuestro streaming fragmentation study.
Preguntas frecuentes
¿Tiene JustWatch una API oficial?
No de autoservicio. La oferta oficial de JustWatch es un producto de partnership/enterprise — informes de datos, widgets y dashboards a medida, acordados a través de [email protected] — no una clave pública a la que puedas registrarte. La popular librería no oficial de JustWatch para Python envuelve su endpoint GraphQL, pero prohíbe el uso comercial — el scraping público (o una API estructurada) es la vía práctica para un producto.
¿Puedo scrapear la disponibilidad en streaming sin que me bloqueen?
JustWatch entrega datos a través de una API GraphQL pública con queries persistidas que cambian, además de anti-bot y fan-out por país — así que un scraper DIY necesita headers realistas, proxies y mantenimiento continuo. Una API estructurada se encarga de GraphQL y del proxying detrás de una sola clave, para datos públicos de disponibilidad.
¿Cómo obtengo las ofertas de dónde ver un título?
Busca el título para obtener su id de JustWatch (por ejemplo tm92641) y luego llama a /justwatch/title/offers con ese id y los países que te interesen. Cada oferta lleva un provider, un tipo de monetización (flatrate/rent/buy/free/ads), un formato (SD/HD/4K), un precio y un deeplink.
¿Por qué la disponibilidad es por país?
Los derechos de streaming varían según el mercado, así que JustWatch acota las ofertas a un país. Para saber dónde está en streaming un título en todo el mundo, consultas cada país que te interese y unes los resultados — JustWatch cubre más de 120 países.
¿Qué datos de JustWatch puedo recopilar?
Metadatos públicos de disponibilidad: resultados de búsqueda (id, tipo, título, año, poster), detalle del título/media/similares, ofertas de dónde ver por país, la lista de providers y discovery por provider, género, tipo de monetización o popularidad.
¿Es legal scrapear JustWatch?
Recopilar hechos públicos de disponibilidad suele ser web scraping público de menor riesgo, pero los términos de JustWatch restringen el acceso automatizado, la librería no oficial es no comercial, y nunca debes usarlo para saltarte el paywall ni el DRM de un provider. Solo datos públicos de disponibilidad. No es asesoría legal.