Export (most) of your Facebook data using Node.js and the Graph API.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
templates Added css for timeline Dec 20, 2017
tools Note about tagged photos Dec 20, 2017
.gitignore First tool: fetch posts Dec 20, 2017
LICENSE Initial commit Dec 20, 2017
README.md README Dec 20, 2017
package.json First tool: fetch posts Dec 20, 2017
sample.config.json First tool: fetch posts Dec 20, 2017
yarn.lock First tool: fetch posts Dec 20, 2017

README.md

fb-export

Export (most) of your Facebook data using Node.js and the Graph API.

Introduction

Crowbarring your data out of Facebook is no easy feat — to get everything out you'll need a combination of Graph API wrangling and old-fashioned manual labor — but it's not impossible.

The purpose of this repository is to give you some tools to make the whole process a bit smoother.

Why not use Facebook's own "Download your data"

Facebook offers a way to download your data that sounds comprehensive enough, and I encourage you to first download that data and see if the amount of information and its quality are sufficient for your purposes — if so, you're in luck.

If, however, you'd like a more structured dataset and images in a better resolution, the tools below can help you. Here's what's included so far:

Data Notes
Posts Things you posted on your timeline.
Timeline photos Photos attached to timeline posts 1
Albums Your photo albums. 1
Photos you're tagged in A subset of "Pictures of you", i.e. photos in which other people / Pages have tagged you 2

Notes

  • 1 Videos are not fetched at the moment!
  • 2 Not all "Pictures of you" are accessible through the Graph API, you'll need to manually download the other photos.

A word of caution

Although I've checked against my own account for a modicum of accuracy in the exported data, these scripts are no guarantee that your content is comprehensively and accurately exported, so exercise caution if you plan to delete the content afterwards.

Installation

Prerequisites

You'll need Node.js, NPM (it comes with Node) and, optionally, Yarn (which these instructions use throughout).

Since I wrote the scripts with ES6 syntax for its brevity, this only probably works with more recent versions of Node. (I'm currently using v8.9.0).

Setting things up

  1. Clone this repository to your computer
  2. Run yarn (or npm install) in your project's folder to install all the necessary dependencies
  3. Rename the sample.config.json file to config.json (you can do that in the terminal with mv sample.config.json config.json) and put in the access token you get from the Facebook Graph API Explorer.

(Since the token allows anyone to access your data through the API, we're not putting the actual config.json on GitHub.)

Getting an access token

  1. Go to the Facebook Graph API Explorer page.
  2. Click on Get access token and choose Get User Access token.
  3. Check all the permissions in the first set ("User Access Permissions"), and follow the approval screens to generate the token.
  4. Put the access token in your config.json.

Tools

Tool Command Notes
Export your Facebook posts node tools/posts.js This exports your Facebook posts to JSON in export/json/posts.json. You can look in the source code to see which fields are currently fetched, and add your own to suit your needs. See this page for available fields.
Export timeline photos node tools/photos.js The photos are downloaded in the export/photos folder. Note that you'll need to have run the post exporter beforehand, because the script uses the posts.json as a basis.
Generate a HTML timeline node tools/timeline.js This generates a HTML timeline based on posts.json and the downloaded photos, so you'll need to have run the two tools above for it to work.
Export your albums node tools/albums.js Fetches the images from your Facebook albums into the export/albums folder, and stores the album info in the export/json/albums.json file.