JustWatch Streaming Availability Scraper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
JustWatch Streaming Availability Scraper
Bulk-extracts streaming availability data from JustWatch's public GraphQL API. Returns one flat record per offer — which providers carry each title, in what video format (SD/HD/4K), at what price, with a direct deeplink URL.
Covers Netflix, Amazon Prime Video, Disney+, Max, Hulu, Apple TV+, Peacock, Paramount+, and 200+ more streaming services across 80+ countries.
What it does
Queries the popularTitles endpoint on JustWatch's public GraphQL API (apis.justwatch.com/graphql) for each country you specify. For every title it retrieves all current streaming offers, flattening the result into one record per offer (title × provider × format combination).
Each output record includes:
- Title metadata (name, type, release year, runtime, genres, IMDb/TMDB IDs and scores)
- Provider details (name, JustWatch package ID)
- Offer details (monetization type, format, retail price, currency, deeplink URL)
- Country queried
Use cases
- Streaming catalog analytics — which providers carry which content, by country
- Price tracking — monitor rental/purchase prices across services over time
- Affiliate deeplink monetization — get direct watch-now URLs for any title on any provider
- Availability-change monitoring — detect when titles enter or leave a streaming service
- Content licensing research — identify gaps in streaming coverage by region
Input
| Field | Type | Description | Default |
|---|---|---|---|
country |
string | ISO 3166-1 alpha-2 country code (e.g. US, GB, DE, AU, JP, BR) |
US |
providers |
string[] | Filter by JustWatch provider slug(s). Leave empty for all. nfx=Netflix, prv=Prime Video, dnp=Disney+, hlu=Hulu, hbm=Max, atp=Apple TV+, pct=Peacock, pbk=Paramount+ |
["nfx"] |
monetizationTypes |
string[] | Filter by monetization type(s). Options: FLATRATE, RENT, BUY, FREE, ADS, CINEMA. Leave empty for all. |
[] |
objectTypes |
string[] | Filter by content type. Options: MOVIE, SHOW. Leave empty for both. |
[] |
maxItems |
integer | Max offer records to collect. 0 = unlimited. |
0 |
Output
One record per streaming offer. A popular show may have 15–25 offers (different providers and quality tiers).
{
"title": "Succession",
"object_type": "SHOW",
"jw_entity_id": "ts78125",
"imdb_id": "tt7660850",
"tmdb_id": 76331,
"original_release_year": 2018,
"runtime_minutes": 60,
"genres": "drm",
"imdb_score": 8.9,
"imdb_votes": 501234,
"tmdb_popularity": 142.5,
"country": "US",
"provider_id": "cGF8MjQ=",
"provider_name": "Max",
"monetization_type": "FLATRATE",
"presentation_type": "HD",
"price_amount": null,
"price_currency": "USD",
"deeplink_url": "https://play.max.com/show/..."
}
Monetization types
| Type | Meaning |
|---|---|
FLATRATE |
Included in subscription (no extra charge) |
RENT |
Digital rental — price shown in price_amount |
BUY |
Digital purchase — price shown in price_amount |
FREE |
Free to watch (with or without ads) |
ADS |
Free with ads |
CINEMA |
In theaters |
Presentation types
| Type | Meaning |
|---|---|
SD |
Standard definition |
HD |
High definition |
_4K |
Ultra HD / 4K |
Notes
- One record per offer: a title with 3 providers × 2 formats = 6 records. This is intentional — each offer is independently actionable for affiliate links or price tracking.
- No authentication required: JustWatch's GraphQL API is fully public.
- Rate limiting: a 200ms courtesy delay is applied between page requests.
- Unlimited mode: set
maxItems: 0to crawl the full catalog for a country. The US catalog has ~200,000 titles.