OrbTop

JustWatch Streaming Availability Scraper

VIDEOSECOMMERCE

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: 0 to crawl the full catalog for a country. The US catalog has ~200,000 titles.