Export (most) of your Facebook data using Node.js and the Graph API.
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.
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 |
- 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.
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.
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
).
- Clone this repository to your computer
- Run
yarn
(ornpm install
) in your project's folder to install all the necessary dependencies - Rename the
sample.config.json
file toconfig.json
(you can do that in the terminal withmv 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.)
- Go to the Facebook Graph API Explorer page.
- Click on Get access token and choose Get User Access token.
- Check all the permissions in the first set ("User Access Permissions"), and follow the approval screens to generate the token.
- Put the access token in your
config.json
.
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. |