JustWatch API endpoint
Returns popular movies and shows filtered by optional genre short names, provider short names, production countries, monetization types, and release year bounds. Combine `providers` with `production_countries` to build charts such as most popular Korean or Japanese titles on a given service. Type accepts only `all`, `movie`, or `show`; monetization_types accepts only `FLATRATE`, `FREE`, `ADS`, `RENT`, or `BUY`.
/justwatch/discoverReturns popular JustWatch movie/show titles filtered by optional genres, providers, production countries, monetization types, and release years. Results come back in JustWatch popularity order, so limit=10 yields a Top 10.
country optional string. Two-letter country code (the catalog/market to search). Defaults to US.language optional string. Two-letter language code. Defaults to en.limit optional integer. Defaults to 20; maximum 50.type optional string. Allowed values: all, movie, show. Defaults to all.genres optional string. Comma-separated JustWatch genre short names such as act or scf.providers optional string. Comma-separated JustWatch provider short names such as nfx or amp.production_countries optional string. Up to 20 comma-separated two-letter ISO country codes that filter titles by where they were produced, such as KR, JP, CN, TW, HK, or TH. Combine with providers to build charts like "most popular Korean shows on Netflix in a market".monetization_types optional string. Comma-separated allowed values: FLATRATE, FREE, ADS, RENT, BUY.year_min optional integer. Minimum release year.year_max optional integer. Maximum release year.country, language, type, genres, providers, production_countries, monetization_types, year_min, or year_max values return 400.production_countries filters on the title's country of origin (JustWatch popularity within a country market), not the market itself. Use country for the market and production_countries for the origin.production_countries array so callers can confirm the origin used for the filter.503./api/v1/justwatch/providers; genre short names can be discovered with /api/v1/justwatch/genres.Request: /api/v1/justwatch/discover?country=TW&language=zh&type=show&providers=nfx&production_countries=KR&limit=10 (most popular Korean shows on Netflix in Taiwan).
{
"code": 200,
"msg": "OK",
"data": {
"country": "TW",
"language": "zh",
"type": "show",
"providers": ["nfx"],
"production_countries": ["KR"],
"results": [
{
"id": "ts287292",
"object_type": "SHOW",
"title": "魷魚遊戲",
"year": 2021,
"path": "/tw/tv-show/squid-game",
"production_countries": ["KR"]
}
]
}
}
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| object_id | 20 | |
| object_type | 20 | SHOW (11), MOVIE (9) |
| title | 20 | “The Ministry of Ungentlemanly Warfare” and 19 other values |
| year | 20 | 2,020 to 2,026, median 2,023 |
| path | 20 | “/us/movie/the-ministry-of-ungentlemanly-warfare” and 19 other values |
| url | 20 | justwatch.com |
| poster_url | 20 | images.justwatch.com |
| production_countries | 20 | median 1 entry |
| offers | 20 | median 16 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| country | string | No | Two-letter country code | US | |
| language | string | No | Two-letter language code | en | |
| limit | integer | No | 20 and clamps to 50 | Maximum results, defaults to 20 and clamps to 50 | 20 |
| type | string | No | Title type: all, movie, show Allowed values: all, movie, show. | all | |
| genres | string | No | Comma-separated JustWatch genre short names | act,scf | |
| providers | string | No | Comma-separated JustWatch provider short names | nfx,amp | |
| production_countries | string | No | Comma-separated two-letter ISO production-country codes | KR,JP | |
| monetization_types | string | No | Comma-separated monetization types: FLATRATE, FREE, ADS, RENT, BUY Allowed values: FLATRATE, FREE, ADS, RENT, BUY. | FLATRATE,FREE | |
| year_min | integer | No | Minimum release year | 2020 | |
| year_max | integer | No | Maximum release year | 2026 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/justwatch/discover?country=us&language=en&limit=10&type=all&monetization_types=FLATRATE" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"country": "TW",
"language": "zh",
"type": "show",
"providers": [
"nfx"
],
"production_countries": [
"KR"
],
"results": [
{
"id": "ts287292",
"object_type": "SHOW",
"title": "魷魚遊戲",
"year": 2021,
"path": "/tw/tv-show/squid-game",
"production_countries": [
"KR"
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/justwatch.discoverResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | justwatch.DiscoverResponse | No | ||||
| data.country | string | No | US | Two-letter ISO country code the results are for. | ||
| data.genres | array | No | act | Genre short names that were used as filters. | ||
| data.language | string | No | en | Two-letter language code used for titles and descriptions. | ||
| data.monetization_types | array | No | FLATRATE | Monetization types that were used as filters, for example `FLATRATE`. | ||
| data.production_countries | array | No | KR | Production country codes that were used as filters. | ||
| data.providers | array | No | nfx | Provider short names that were used as filters, for example `nfx`. | ||
| data.results | array | No | Titles matching the request, one item per title. | |||
| data.results[].id | string | No | tm92641 | JustWatch title id, for example `tm92641` for a movie. | ||
| data.results[].object_id | integer | No | 92641 | Numeric JustWatch id of the title. | ||
| data.results[].object_type | string | No | MOVIE | JustWatch object type of the title, for example `MOVIE` or `SHOW`. | ||
| data.results[].offers | array | No | Streaming, rental and purchase offers for the title. | |||
| data.results[].offers[].availability | string | No | https://schema.org/InStock | Availability of the offer as a schema.org URL, for example `https://schema.org/InStock`. | ||
| data.results[].offers[].category | string | No | Blu-Ray | Format label shown for the offer, for example `Blu-Ray`. | ||
| data.results[].offers[].currency | string | No | USD | Currency of `price`, as an ISO 4217 code such as `USD`. | ||
| data.results[].offers[].monetization_type | string | No | RENT | How the title is offered: `FLATRATE`, `FREE`, `ADS`, `RENT` or `BUY`. | ||
| data.results[].offers[].presentation_type | string | No | 4K | Picture format of the offer, for example `HD` or `4K`. | ||
| data.results[].offers[].price | number | No | 4.99 | Price of the offer in `currency`. Omitted for free and subscription offers without a price. | ||
| data.results[].offers[].provider | string | No | Amazon Video | Name of the provider offering the title, for example `Amazon Video`. | ||
| data.results[].offers[].provider_id | integer | No | 10 | JustWatch id of the provider. | ||
| data.results[].offers[].provider_short | string | No | amz | Short provider code, for example `amz`. | ||
| data.results[].offers[].provider_technical | string | No | amazon | Technical provider name used by JustWatch, for example `amazon`. | ||
| data.results[].offers[].url | string | No | Link to watch or buy the title at the provider. | |||
| data.results[].path | string | No | /us/movie/inception | JustWatch page path of the title, for example `/us/movie/inception`. | ||
| data.results[].poster_url | string | No | https://images.justwatch.com/poster/302449148/s718/inception.jpg | URL of the poster image for the title. | ||
| data.results[].production_countries | array | No | KR | ProductionCountries lists the title's country of origin as two-letter ISO codes. It is only populated on surfaces that request it, such as discover. | ||
| data.results[].title | string | No | Inception | Name of the title in the requested language. | ||
| data.results[].url | string | No | https://www.justwatch.com/us/movie/inception | Full JustWatch page URL of the title. | ||
| data.results[].year | integer | No | 2010 | Release year of the title. | ||
| data.type | string | No | all | Content type filter applied: `all`, `movie` or `show`. | ||
| data.year_max | integer | No | 2026 | Latest release year used as a filter. | ||
| data.year_min | integer | No | 2020 | Earliest release year used as a filter. | ||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/justwatch/discover?country=us&language=en&limit=10&type=all&monetization_types=FLATRATE" \
-H "x-api-key: $CRAWLORA_API_KEY"