JustWatch Streaming Availability Tracker avatar

JustWatch Streaming Availability Tracker

Pricing

from $1.49 / 1,000 results

Go to Apify Store
JustWatch Streaming Availability Tracker

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

Inus Grobler

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

5

Monthly active users

8 hours ago

Last modified

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

FieldDescription
titlesMovie or TV titles to search.
countriesCountry codes such as US, GB, ZA, AU, CA, DE, FR, IN, ES, IT, NL, BR, MX, or JP.
providersOptional provider filter. Leave empty to return every provider found.
yearOptional release year for distinguishing remakes and similarly named titles.
contentTypeOptional movie, show, or all title filter.
exactMatchOnlyRequire the requested title; combine with year and content type for deterministic checks.
maxResultsOptional cap for result rows. Useful for tests and budget control.
maxConcurrencyBrowser concurrency. Start with 1; increase only after confirming the target tolerates parallel requests.
startUrlsOptional 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:

FieldDescription
titleMatched movie or TV show title.
contentTypemovie or show when visible.
availabilityStatusavailable for provider rows or unavailable when a confirmed title page has no offers.
releaseYearRelease year when available.
countryCode, countryNameCountry searched.
providerName, providerSlugStreaming or purchase provider.
monetizationTypeSubscription, rent, buy, free, ads, cinema, disc, bundle, or unknown.
presentationTypeQuality such as 4K, HD, or SD when visible.
price, currency, priceTextPrice details when visible.
watchUrlProvider watch or purchase URL when available.
justWatchUrlSource JustWatch title page.
ratings, rankingOptional ratings and chart information when visible.
availabilityHashStable hash for detecting availability changes.
scrapedAtTimestamp 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

  1. Open the Actor on Apify.
  2. Enter one or more titles and countries.
  3. Optionally set provider filters, matching options, or a result cap.
  4. Start the run.
  5. Download results from the Dataset tab as JSON, CSV, Excel, XML, RSS, or HTML.

Python API Example

from apify_client import ApifyClient
client = 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).items
print(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

ProblemWhat to try
Too many unrelated resultsUse the exact JustWatch title, include the year in the title text, or use direct JustWatch URLs.
No rows for a titleTry the exact JustWatch title name, include the release year in the title text, or use startUrls.
Run takes longer than expectedLower the number of titles or countries, add maxResults, or use direct JustWatch URLs.
Provider is missingLeave providers empty first to confirm the offer appears on JustWatch.
Country looks wrongUse 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.