JustWatch Scraper - Streaming Availability, Offers & Prices avatar

JustWatch Scraper - Streaming Availability, Offers & Prices

Pricing

$3.00 / 1,000 streaming title results

Go to Apify Store
JustWatch Scraper - Streaming Availability, Offers & Prices

JustWatch Scraper - Streaming Availability, Offers & Prices

Scrape JustWatch for where to watch any movie or TV show: streaming, rent & buy offers across Netflix, Prime, Disney+, Max, Hulu, Apple TV & 300+ services — prices, HD/4K quality, deep links, IMDb/TMDB scores, cast & leaving-soon dates. Discover, search or look up titles. Price-drop monitoring.

Pricing

$3.00 / 1,000 streaming title results

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

JustWatch Scraper — Streaming Availability, Offers & Prices (Movies & TV)

Find out where to watch any movie or TV show and what it costs — straight from JustWatch. For every title this actor returns the full list of streaming, rent and buy offers across Netflix, Prime Video, Disney+, Max, Hulu, Apple TV, Paramount+, Peacock and 300+ services in 140+ countries, with prices, video quality (HD/4K), deep links, previous prices, and "leaving soon" dates — plus rich metadata: IMDb & TMDB ids and scores, JustWatch rating, runtime, genres, age rating, poster, cast & crew, and seasons.

No login, no cookies, no browser, no API key — fast, reliable extraction over JustWatch's public GraphQL API. Discover the catalogue by provider/genre/country, search by title, or look up specific titles by URL or id. Turn on monitoring to capture only new releases, price drops and titles leaving a service.

Why this JustWatch scraper?

Generic "paste-a-URL" crawlers grab a few visible fields and miss what actually matters: the offers. This actor reads JustWatch's offer graph directly and ships the richest dataset in the category — every provider, every monetisation type, every price and quality tier, flattened into easy columns and kept as a full offers array.

DataGeneric crawlersThis actor
Title, year, type, runtime, age ratingpartial
Genres, poster, descriptionspartial
IMDb id + score + votes, TMDB id + score, JustWatch rating
Every streaming/rent/buy offer (provider, type, price, currency)
Video quality per offer (SD / HD / 4K / Blu-ray)
Deep link to watch/rent/buypartial
Previous price + price-drop flag
"Leaving soon" date + days remaining
Flattened summary: where to stream, cheapest rent/buy, best quality
Cast (with characters), directors, seasons✅ (optional)
Per-country availability (140+ countries)
New-release / price-drop monitoring

Use cases

  • Streaming guide & affiliate sites — power "where to watch" pages and earn on rent/buy/sub deep links, kept fresh automatically.
  • Price intelligence & comparison — track rental and purchase prices across providers and currencies; catch price drops the day they happen.
  • Catalogue & competitive analysis — see exactly what's on Netflix vs Disney+ vs Max in any country, by genre, year or rating.
  • "Leaving soon" alerts — surface titles about to leave a subscription service so your users (or your app) never miss them.
  • Content & market research — build datasets of availability, popularity and ratings for studios, distributors, analysts and journalists.
  • Recommendation & app data — feed apps, bots and newsletters structured, LLM-ready availability data.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the JustWatch Scraper and pick a mode: Discover (filter the catalogue), Search (by title name), or Specific titles (by URL/id).
  3. Choose your countries (offers differ per country) and any filters — provider, genre, content type, year, offer type.
  4. Click Start and watch results stream into the dataset table.
  5. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"mode": "discover",
"countries": ["US", "GB"],
"contentTypes": ["MOVIE"],
"providers": ["Netflix", "Max"],
"genres": ["Science-Fiction"],
"monetizationTypes": ["FLATRATE"],
"sortBy": "TRENDING",
"includeCredits": true,
"maxResults": 100
}
  • mode (default discover)discover (filter/browse the catalogue), search (by title name), or titles (exact titles by URL/id). The mode auto-switches if you fill in search terms or title URLs.
  • searchQueries — movie/show names for Search mode (e.g. Oppenheimer, Dune).
  • titleUrls — JustWatch URLs for Specific titles mode (e.g. https://www.justwatch.com/us/movie/oppenheimer). Availability is resolved for every country you list.
  • titleIds — JustWatch node ids: movies tm… (e.g. tm1111989), shows ts… (e.g. ts70).
  • countries (default ["US"]) — ISO country codes; one record is produced per title per country.
  • language (default en) — 2-letter language code for titles & descriptions.
  • contentTypesMOVIE and/or SHOW (Discover/Search).
  • providers — only titles on these services; use names (Netflix, Disney Plus, Max) or JustWatch short codes (nfx, dnp, mxx). Resolved per country.
  • genres — names (Comedy, Horror, Science-Fiction) or codes (cmy, hrr, scf).
  • monetizationTypesFLATRATE (subscription), RENT, BUY, FREE, ADS.
  • releaseYearMin / releaseYearMax — year range.
  • minImdbScore — keep only titles at/above this IMDb score.
  • sortBy (default POPULAR)POPULAR, TRENDING, IMDB_SCORE, TMDB_POPULARITY, ALPHABETICAL, RANDOM.
  • includeCredits / includeSeasons / includeRawFields (default false) — extra detail per title.
  • maxResults / maxResultsPerQuery — caps for the run and per query/country.
  • monitorMode / monitorKey — emit only new & changed titles across runs (see below).
  • maxConcurrency (default 4) and proxyConfiguration — performance & proxy settings.

Output

One clean record per title, per country. Beyond the flat columns below, every record keeps a full offers array and an availability summary.

{
"recordType": "title",
"id": "tm1111989",
"objectId": 1111989,
"contentType": "movie",
"country": "US",
"title": "Oppenheimer",
"releaseYear": 2023,
"runtimeMinutes": 180,
"ageCertification": "R",
"genres": ["Drama", "History"],
"posterUrl": "https://images.justwatch.com/poster/305252655/s592/oppenheimer.jpg",
"justWatchUrl": "https://www.justwatch.com/us/movie/oppenheimer",
"imdbId": "tt15398776",
"imdbScore": 8.2,
"imdbVotes": 1013416,
"tmdbId": 872585,
"tmdbScore": 8.026,
"justWatchRating": 0.9239,
"cast": [{ "name": "Cillian Murphy", "character": "J. Robert Oppenheimer" }],
"directors": ["Christopher Nolan"],
"offerCount": 27,
"streamingOn": [],
"canRent": true,
"canBuy": true,
"cheapestRentPrice": 3.99,
"cheapestRentProvider": "Amazon Video",
"cheapestBuyPrice": 7.5,
"bestQuality": "4K Blu-ray",
"has4K": true,
"anyPriceDropped": false,
"leavingSoon": [],
"offers": [
{
"provider": "Amazon Video",
"type": "RENT",
"typeLabel": "Rent",
"quality": "HD",
"price": 3.99,
"priceFormatted": "$3.99",
"previousPrice": 3.79,
"priceDropped": false,
"currency": "USD",
"url": "https://watch.amazon.com/detail?gti=...",
"leavingDate": null
}
],
"scrapedAt": "2026-06-21T12:00:00.000Z"
}

Use the dataset views to switch focus instantly: Where to watch, Offers & prices, and Catalog & ratings.

What to expect (field coverage)

JustWatch aggregates studio/provider data, so a handful of fields appear only when the source has them. Verified across many titles, you can typically expect:

Field groupCoverage
Title, type, year, JustWatch URL, poster~100%
Offers (when the title is available in that country)✅ full list with provider, type, price, quality, deep link
IMDb id & score, TMDB id & score~90%+ for mainstream titles
Runtime, genres, age rating, descriptionusually present
previousPrice / price-drop flagpresent when JustWatch recorded a recent price change
leavingSoon / leaving datepresent when a provider published an expiry
Cast & crew, seasonspresent with includeCredits / includeSeasons

A blank field means the source didn't publish it for that title in that country — not that scraping failed. Nothing is dropped, so you always get the richest dataset available.

Monitoring — only new & changed titles

Turn on monitorMode and the actor remembers each title's offers in a named key-value store. On the next run it emits only titles that are new or whose availability or price changed — perfect for:

  • New-release alerts — a title just appeared on Netflix/Prime/etc.
  • Price-drop tracking — a rental or purchase price went down.
  • "Leaving soon" watches — a title is about to leave a service.

Give each saved watch its own monitorKey so monitors don't share state. This works alongside Apify Schedules — the schedule starts the run; monitoring decides what's worth emitting.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/justwatch-streaming-scraper').call({
mode: 'discover',
countries: ['US'],
providers: ['Netflix'],
contentTypes: ['MOVIE'],
sortBy: 'TRENDING',
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} titles`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new releases or price drops into Slack, Sheets or your app.
  • Slack — get notified when a monitored title changes availability.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find where to watch Oppenheimer in the US and the cheapest rental price" and let it run the scraper for you.

More scrapers from scrapesage

Build a complete entertainment & media data stack:

Tips

  • Pick the right mode: Discover for catalogue/competitive pulls, Search to resolve titles by name, Specific titles when you already have URLs/ids.
  • Compare countries by listing several in countries — availability and prices differ a lot by region.
  • Provider names just work: type Netflix or Disney Plus — the actor resolves them to JustWatch codes per country. Add several to widen the net.
  • Price-drop watch: run in monitorMode on a daily Schedule with a RENT/BUY filter to track price movements automatically.
  • Lean responses: leave includeCredits/includeSeasons off for big catalogue pulls; turn them on when you need full detail.

FAQ

Does it need a JustWatch API key or login? No. It reads JustWatch's public GraphQL data — no key, no cookies, no browser.

How do I get availability for several countries? List them in countries. Each title produces one record per country, since offers and prices are region-specific.

Can I filter to one streaming service? Yes — put it in providers (e.g. Netflix, Max) and the actor returns only titles available there.

Where do prices come from? From JustWatch's rent/buy/subscription offers per provider and country, including the formatted price, currency and the previous price when a recent change was recorded.

Can I track price drops or new releases? Yes — enable monitorMode. The actor emits only titles that are new or whose offers/prices changed since the last run.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

A field is empty — why? Some titles lack an IMDb/TMDB id, a description, or offers in a given country. Fields are blank only when the source didn't publish that data — never because the scraper skipped it.

Is scraping JustWatch legal? This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws and JustWatch's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.