Export ratings from Netflix using this Ruby on Rails code for the "ratings exporter for Netflix" service running on Heroku. **Note: Service Disabled After Netflix Changed API**
Ruby JavaScript CoffeeScript
Switch branches/tags
Nothing to show


ratings exporter for Netflix


This service was born of my desire to quit Netflix but without having to lose all that info on what I've watched and what I've rated. To that end, I started investigating the Netflix API. While the API doesn't have exactly what I wanted (e.g. fetch all my rated movies), it was able supply enough functionality for me to fetch ratings for all the movies I had rented/streamed. Good enough, I suppose. Since collecting that information from Netflix takes time, I created a web service which would spawn delayed_jobs to do the work.

To get started with your own export, click the Authorize button above, fill in your Netflix credential (note: we use Netflix's OAuth API. See the next section for more details), and this service will be begin exporting your Netflix DVD and Instant rental queue data for you. Once all of the records have been exported, you'll be able to download the data as a blob of json, as csv or as xml.

Thanks to Christopher Cotton for answering my Netflix OAuth question on Stack Overflow!

If you would like to help keep this service running, please donate!


Our service is never given your Netflix credentials. We are using the Netflix OAuth API, which means you are only authorizing this web app to make requests on your behalf.

We do store a few pieces of Netflix OAuth data in your cookies, including your Netflix user_id so that you do not have to keep re-authorizing the web app if you want to use it more than once. When you are done using this service, you can click the sign out link in the toolbar and we'll flush that information from your cookies.

Your exported rating information is stored in our database for short, indeterminate amount of time, after which it is permanently expunged during recurring, routine maintenance.

This data is available to only you.

Good news, Bad news

The bad news is that this service is only using one web dyno and one worker process. So, it is going to be slow. The good news is, this service is free!

Even more good news, the code for this service is available on [Github](https://github.com/sorens/ratings_exporter). Feel free to inspect it to ensure that we're not doing anything untoward with your data.

UpdateWe've updated the service to use batch requests so now you shouldn't encounter Netflix's request limit. However, there are still circumstances where requests for ratings return no results. If that happens, we detect that there are un-exported ratings and offer you a chance to download those remaining ratings individually by clicking the Continue button. If you would like to skip exporting those ratings, you can lick the Ignore and we'll let you download your data.

Format of the JSON

    "60010377": {
        "id": "60010377",
        "title": "Funny Girl",
        "year": "1968",
        "url": "http://api-public.netflix.com/catalog/titles/movies/60010377",
        "rating": "4.0",
        "type": "streamed",
        "viewed_date": "2011-12-05T09:03:48Z"
    "70102614": {
        "id": "70102614",
        "title": "Dead Like Me: Season 1: \"Reaping Havoc\"",
        "year": "2003",
        "url": "http://api-public.netflix.com/catalog/titles/programs/70102614",
        "rating": "5.0",
        "type": "streamed",
        "viewed_date": "2009-04-03T17:20:30Z"

Format of the CSV

60010377,Funny Girl,1968,http://api-public.netflix.com/catalog/titles/movies/60010377,4.0,Title,2011-12-05 01:03:48 -0800,1
70102614,"Dead Like Me: Season 1: ""Reaping Havoc""",2003,http://api-public.netflix.com/catalog/titles/programs/70102614,5.0,Title,2009-04-03 10:20:30 -0700,1
60003378,Billy Elliot,2000,http://api-public.netflix.com/catalog/titles/movies/60003378,5.0,Title,2001-06-01 15:37:30 -0700,1

Format of the XML

<?xml version="1.0" encoding="UTF-8"?>
<titles type="array">
    <name>Funny Girl</name>
    <data nil="true"/>
    <exported type="integer">1</exported>
    <created-at type="datetime">2012-01-06T00:25:37-08:00</created-at>
    <viewed-date type="datetime">2011-12-05T01:03:48-08:00</viewed-date>
    <updated-at type="datetime">2012-01-06T00:25:44-08:00</updated-at>
    <id type="integer">22859</id>
    <name>Dead Like Me: Season 1: "Reaping Havoc"</name>
    <data nil="true"/>
    <exported type="integer">1</exported>
    <created-at type="datetime">2012-01-06T00:25:57-08:00</created-at>
    <viewed-date type="datetime">2009-04-03T10:20:30-07:00</viewed-date>
    <updated-at type="datetime">2012-01-06T00:26:00-08:00</updated-at>
    <id type="integer">23858</id>
    <name>Billy Elliot</name>
    <data nil="true"/>
    <exported type="integer">1</exported>
    <created-at type="datetime">2012-01-06T00:25:33-08:00</created-at>
    <viewed-date type="datetime">2001-06-01T15:37:30-07:00</viewed-date>
    <updated-at type="datetime">2012-01-06T00:25:36-08:00</updated-at>
    <id type="integer">22822</id>

note: if we were unable to export a rating for a title due to an error, rating will be set to null. If you never set a rating on a particular title, we set the rating to 0.0.