Scrape Netflix Most Watched Shows & Movies Data


Steve Spagnola
Written by Steve Spagnola
Last updated Nov. 22, 2021

UPDATE: Just scroll to the bottom of the Netflix Top 10 Page and you can download the raw data. There’s no need to do all of this!

On November 16, 2021 Netflix launched a new website reporting its top 10 titles that you can access at Netflix Top 10 Page. This is big news - as many people wish that Netflix would restore its official Data API to scrape popular movies, shows, trends and related viewership data from. Netflix thus far has refused & kept viewership data relatively private until now, where we can scrape this historical data directly from the source!

This all changes with this new website, as I was able to easily scrape & visualize weekly Squid Game viewership hours since its release (took about 5 minutes to make this):

Squid Game Viewership Hours Week-by-Week

This article will show you how to make a chart like this, but for any top 10 Netflix show or movie (either global stats or by country) using the Stevesie Data Platform (note, we’ll be using the paid version of the platform, but you can also follow these steps with the free version and get some useful JSON data back).

How to Scrape the Netflix Viewership Data

Since the website sends data to the browser in JSON format, we’re able to easily intercept this data (without violating the Netflix Terms of Service) and then use the HAR File Web Scraper to transform the scraped JSON data into a bulk CSV file we can perform historical analysis on.

1. Select the Netflix Data You Need

The first step is to go to Netflix Top 10 Page in your favorite browser (we’ll show Chrome specifically) and select the data you want to scrape. E.g. for Squid Game, we need to select TV (Non-English):

Select the Top 10 List You Need

You can also click on the Top 10 lists by country link and then select your country and follow this tutorial the same way:

Select by Country if You Need this Data Instead

Once you’re on the page that you need the data for, scroll down until you see the stats with the time picker like this:

Scroll to the Data with the Time Picker

2. Open Developer Tools to Record Web Traffic

Now right click somewhere on the page and hit Inspect to open up developer tools:

Right click on the webpage and hit Inspect

You’ll see a panel pop up below, now select the “Network” tab and it should look something like this:

Click the Network Tab to Intercept Netflix Data

When this tab is open, you’ll now “record” the raw JSON data that Netflix sends to your browser (which is used to draw the presentation layer). We’re interested in this data directly so we don’t need to “scrape” and reverse engineer how to scrape the visual aspect when we can just grab the raw data.

3. Browse & Record Historical Data

Now that we’re recording our web traffic, we can browse through the data we need. First, click the “back” arrow on the time selector once to go to the previous week:

Click the red arrow to go back 1 week

Note the URL in the address bar should change to something like https://top10.netflix.com/tv-non-english/2021-11-07.html (this will vary depending on when you’re reading this).

Now click the Clear button (in developer tools Network tab) to clear out all the web traffic this far (we’re about to do a clean sweep for the data):

Hit Clear

Now refresh the page (using the browser button at the top) and once the page is reloaded, hit the “right” arrow on the time selector to go to the current week:

Click the right arrow

Now if you click the Fetch/XHR tab in the network tab, you’ll see the last JSON file to load will have the current week’s viewership data:

Verify we have the current week's data

Great, now we’re ready to go back in time! This time click the red arrow on the left, wait for the data to load (you should see it in the console), then click the left arrow again. Don’t click too quickly or else you may load duplicates.

Keeping clicking the left red arrow to go back

Once you hit the end (apparently the beginning of time is June 28, 2021), you’ll see the left arrow darkened out:

Left arrow darkened out

And now when you check your browser tools, you’ll see a different JSON file for each date that Netflix sent to your browser:

Historical JSON data we need

4. Export Historical Data as a HAR File

So now that Netflix has sent this data to our browser, how do we get it out? Simple, just click the “Export HAR…” button under the Network tab in your developer tools:

Click Export HAR

Name the HAR file something like top10.netflix.com.har and save it somewhere easy to access, like your Desktop. The HAR file now contains all the raw viewership data Netflix sent to us… the hard part now is to get this data out of the HAR File.

5. Upload to the HAR File Web Scraper

Now we’ll use the HAR File Web Scraper to get the data out of our HAR file. Just drag and drop the file into the tool and you’ll see results like this:

The first result should look something like this, showing all the referring URLs (with the dates) used to collect the JSON files with:

HAR File Web Scraper Results

You can scroll down a bit and you’ll see the individual weekly data files (20 weeks in my case), and you can download the raw JSON using the blue link with the disk icon for free (no paid subscription needed):

Download individual JSON files

6. Download CSV Files (Paid Version Only)

While the raw JSON is great, the rest of this article will discuss how to use the paid version of the HAR File Web Scraper (using the basic plan or above) to download a combined CSV file of the historical data that we can then open and analyze in Excel.

Simply go back to the top of the HAR File Result and click the button labeled Parse Group, which will combine all 20 of the individual JSON files into singular collections we can more easily work with. Our results will look like this:

Combined Netflix Data

The HAR File Parser combined all 20 weeks of data into a single collection (200 rows, with 10 rows per week), so we can now download this as a CSV File by clicking on the Expanded CSV button in the dropdown. We can now open this up in Excel (or whichever spreadsheet program you like), and we’ll see the raw data here:

Raw Netflix Data in CSV Form

Some notable columns you may care about are:

  • pageProps.data.weeklyTopTen.week The ending Sunday of the week in question, e.g. 20211114
  • pageProps.data.weeklyTopTen.rank The top 10 rank for the week in question
  • pageProps.data.weeklyTopTen.weeksInTopTen Number of weeks in the top 10 up to this week
  • pageProps.data.weeklyTopTen.hours Number of hours watched during the week
  • pageProps.data.weeklyTopTen.showName Name of the show (will be the same spanning multiple seasons)
  • pageProps.data.weeklyTopTen.seasonName Name of the season

7. Sort by Time

To build a week-by-week chart, we’ll want to order the data by the week in question. Fortunately, the data marking the week is numerical, meaning we can simply sort by pageProps.data.weeklyTopTen.week in Excel and we’ll then have the data in ascending order by time. Select the column pageProps.data.weeklyTopTen.week and then under the “Data” tab in Excel, you can sort smallest to largest:

Select the Week Column & Sort Ascending

We’ll now see the smallest value for the week show up first, e.g. 20210704.

8. Filter by Show (or Film)

Now we want to narrow down our graph to only the show we want to analyze (E.g. Squid Game here), so select the pageProps.data.weeklyTopTen.showName column and then click the “Filter” button in Excel:

Select Show Name & Filter

Now click the little arrow on the right of the column header cell and type in your filter, e.g. “Squid Game” or whatever show you’re interested in:

Filter Results to match Squid Game

9. Draw a Chart

Now select the column pageProps.data.weeklyTopTen.hours to get the hours viewed per week, and under the “Insert” tab in Excel, you can insert a bar chart:

Insert Bar Chart

And ta-da! Now you have a bar chart for Squid Game viewership:

Squid Game Viewership Hours Week-by-Week

You can also make more advanced graphs, though Excel may not be the best choice… e.g. you can copy and paste the data into Google Sheets, which has a friendlier chart-making feature. E.g. I wanted to visualize the Money Heist views, but sum together the different seasons by week, which Google Sheets lets me do with the “Aggregate” function:

Money Heist Views (All Seasons)