Google Location History

Go to Google Takeout and request an archive containing your Location History data in JSON format. To import it, select the archive file or the root folder of the extracted archive, or the "Location History" subfolder within the archive.

Currently, this importer uses the raw location history and not the semantic location history. In the future we want to support both.

The raw location history is very noisy and complex. Our importer first de-duplicates, then de-noises, then simplifies the points to make them more legible and to reduce the size of the data set without losing significant detail.

Imports from this data source may get slow as the DB grows. As the database gets larger, insert operations will slow down. We already perform a number of optimizations such as using write-ahead logging, reusing transactions, and batching inserts, but location data is small and plentiful and very DB-heavy, so it's not unusual for this import to take overnight for large data sets.

It's OK if it looks like this importer has stalled. We process points one device tag at a time in parallel, meaning: as we scan the data set we "attach" to the first device tag (i.e. a phone's unique ID) we see, and then when we encounter a new one, we start a new scanner that looks for only that device tag, and so on. Each scan routine reads the data points for only 1 device at a time, but scanning happens in parallel so it's not blocking. This ensures that our de-duplication, de-noising, and path simplification algorithms work on a physical device's path instead of mixing paths, which introduces errors into the statistical analysis. However, this import may appear to be stuck for some time as scanning routines skip points that do not "belong" to them.