JustWatch Streaming Availability Tracker
Pricing
from $1.49 / 1,000 results
JustWatch Streaming Availability Tracker
Search one or many movie and TV titles across countries and streaming providers on JustWatch. Get flat JSON results for availability, pricing, provider offers, ratings, and title metadata.
Pricing
from $1.49 / 1,000 results
Rating
0.0
(0)
Developer
Inus Grobler
Maintained by CommunityActor stats
0
Bookmarked
18
Total users
5
Monthly active users
8 hours ago
Last modified
Categories
Share
Find where movies and TV shows are available to stream, rent, or buy by scraping public JustWatch pages across countries and providers.
Use this JustWatch scraper when you need clean availability data for catalog research, streaming-rights checks, provider monitoring, pricing comparisons, BI exports, or alerts. Results are returned as flat dataset rows: one row per title, country, provider, monetization type, and offer.
What You Can Do
- Check one movie or TV show in one country.
- Search many titles across many countries in a single run.
- Filter output to providers such as Netflix, Prime Video, Disney Plus, Hulu, Max, Apple TV, Plex, Peacock, or other providers.
- Start from known JustWatch title URLs to skip search and reduce runtime.
- Export JSON, CSV, Excel, RSS, or API results from the Apify dataset.
Input
The simplest setup needs only titles and countries.
{"titles": ["Dune"],"countries": ["US"],"year": 2021,"contentType": "movie","exactMatchOnly": true,"maxResults": 5,"maxConcurrency": 1}
For multiple titles and countries:
{"titles": ["Dune", "The Matrix", "Oppenheimer"],"countries": ["US", "GB", "ZA"]}
To keep exploratory runs predictable:
{"titles": ["Dune", "The Matrix"],"countries": ["US", "GB"],"maxResults": 100}
Main Input Fields
| Field | Description |
|---|---|
titles | Movie or TV titles to search. |
countries | Country codes such as US, GB, ZA, AU, CA, DE, FR, IN, ES, IT, NL, BR, MX, or JP. |
providers | Optional provider filter. Leave empty to return every provider found. |
year | Optional release year for distinguishing remakes and similarly named titles. |
contentType | Optional movie, show, or all title filter. |
exactMatchOnly | Require the requested title; combine with year and content type for deterministic checks. |
maxResults | Optional cap for result rows. Useful for tests and budget control. |
maxConcurrency | Browser concurrency. Start with 1; increase only after confirming the target tolerates parallel requests. |
startUrls | Optional direct JustWatch movie or TV show URLs. Use this for large recurring monitoring when you already know the pages. |
Older integrations that send title, searchQuery, searchQueries, or country continue to work through the API.
For large recurring monitoring jobs, use startUrls with known JustWatch title pages. Direct URLs skip the search step, stream results sooner, and make repeated catalog checks more predictable.
Provider Filtering
Preset provider values include:
netflix, prime-video, disney-plus, hulu, max, apple-tv-plus, apple-tv, google-play-movies, amazon-video, plex, peacock, and other.
Examples:
["netflix"]returns only Netflix offers.["netflix", "other"]returns Netflix plus providers outside the preset list.["other"]returns only providers outside the preset list.
Output
Each dataset item is one availability row. Common fields include:
| Field | Description |
|---|---|
title | Matched movie or TV show title. |
contentType | movie or show when visible. |
availabilityStatus | available for provider rows or unavailable when a confirmed title page has no offers. |
releaseYear | Release year when available. |
countryCode, countryName | Country searched. |
providerName, providerSlug | Streaming or purchase provider. |
monetizationType | Subscription, rent, buy, free, ads, cinema, disc, bundle, or unknown. |
presentationType | Quality such as 4K, HD, or SD when visible. |
price, currency, priceText | Price details when visible. |
watchUrl | Provider watch or purchase URL when available. |
justWatchUrl | Source JustWatch title page. |
ratings, ranking | Optional ratings and chart information when visible. |
availabilityHash | Stable hash for detecting availability changes. |
scrapedAt | Timestamp when the row was produced. |
Example result:
{"source": "justwatch","countryCode": "US","countryName": "United States","title": "Dune","contentType": "movie","releaseYear": 2021,"justWatchUrl": "https://www.justwatch.com/us/movie/dune-2021","providerName": "Max","providerSlug": "max","monetizationType": "subscription","presentationType": "4K","price": null,"currency": "USD","watchUrl": "https://www.max.com/...","availabilityHash": "c237b31e1b402f33eb7eb8971c3ab808fd9878de925a845a71309c1f06fa8aeb","scrapedAt": "2026-06-13T19:44:10.000Z"}
If an individual page or title cannot be processed, the Actor emits an error row with itemType: "error" and a clear errorMessage. If the complete run produces no confirmed availability or confirmed-unavailable title row, the run fails instead of silently reporting an empty successful dataset.
Running on Apify
- Open the Actor on Apify.
- Enter one or more titles and countries.
- Optionally set provider filters, matching options, or a result cap.
- Start the run.
- Download results from the Dataset tab as JSON, CSV, Excel, XML, RSS, or HTML.
Python API Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"titles": ["Dune", "The Matrix"],"countries": ["US", "GB"],"maxResults": 100,}run = client.actor("thescrapelab/justwatch-streaming-availability-tracker").call(run_input=run_input)items = client.dataset(run["defaultDatasetId"]).list_items(clean=True).itemsprint(f"Returned {len(items)} availability rows")print(items[:3])
Pricing
The current Store price appears before each run. Each title can return several rows across countries, providers, and offer types. Small direct title checks use less browser time than broad multi-country searches, so start with one title and country and use maxResults to cap the first dataset.
Runtime and charge limits
Keep the default 30-minute timeout for multi-title, multi-country searches, or test a shorter allowance on your workload before scaling. A matched three-title, five-country batch with maxConcurrency: 3 returned 139 rows with zero errors in 387 seconds at 1,024 MB and 258 seconds at 2,048 MB. Both runs used a 600-second timeout and a 150-row limit. A 300-second timeout can cut this workload short; these measurements are guidance rather than a completion guarantee. Start with maxConcurrency: 1 for small checks. If faster completion matters, compare the 2 GB resource tier on your own batch.
maxResults limits dataset rows, and one title can produce several provider offers. Size the run's maximum charge using the current Store price and leave room for startup and platform usage. A very low charge cap can abort a valid run before its timeout or requested result count is reached. Use known title URLs to avoid discovery overhead when monitoring the same titles repeatedly.
Limits and Caveats
- Results reflect public JustWatch pages at scrape time.
- Some titles are unavailable or named differently in some countries.
- Provider links, prices, ratings, and ranking data may be missing when JustWatch does not expose them on the page.
- Broad franchise queries can return multiple strong matches. Use a more specific title, include the year in the title text, or use direct JustWatch URLs for recurring monitoring.
- More titles, countries, and broad searches increase runtime and cost.
- This Actor scrapes public web pages and does not use private JustWatch APIs or paid third-party data APIs.
Troubleshooting
| Problem | What to try |
|---|---|
| Too many unrelated results | Use the exact JustWatch title, include the year in the title text, or use direct JustWatch URLs. |
| No rows for a title | Try the exact JustWatch title name, include the release year in the title text, or use startUrls. |
| Run takes longer than expected | Lower the number of titles or countries, add maxResults, or use direct JustWatch URLs. |
| Provider is missing | Leave providers empty first to confirm the offer appears on JustWatch. |
| Country looks wrong | Use ISO-style country codes such as US, GB, or ZA. |
FAQ
Can I scrape JustWatch streaming availability by country?
Yes. Add one or more country codes in countries, and the Actor returns availability rows for each matched title-country-provider combination.
Can I track Netflix, Prime Video, Disney Plus, Max, or Apple TV availability?
Yes. Use providers to filter to specific services, or leave it empty to return all providers found.
Can I monitor changes over time?
Yes. Schedule recurring runs and compare availabilityHash, provider fields, prices, and scrapedAt timestamps.
For large recurring monitoring jobs, use startUrls with known JustWatch title pages. Direct URLs skip title search and make repeated checks more predictable.
Does this Actor return one row per title?
No. It returns one flat row per provider offer so exports are easy to filter, group, and join.
Is this a JustWatch API?
No. It is a scraper for public JustWatch web pages.
Workload and timeout planning
Title searches can require a search page plus multiple title-detail pages for every country. A prior 24-page job reached its 300-second platform timeout after 17 pages even though it had no failed requests. For multi-title/multi-country jobs, start with a 600–900 second allowance or split countries into explicit smaller runs. Keep the result and per-title match caps appropriate to your task. Longer timeouts are an allowance, not a reliability guarantee.
If a run fails, distinguish an input validation error, country/title not found, access challenge, parser failure, platform timeout and charge-cap abort. Share the failed run URL and its input/logs with support when possible. A successful test of another title or country cannot explain a customer failure with inaccessible input. The generated daily example is intentionally small; manual successful runs are separate from Apify's official daily QA evidence.