Instagram Location Search: Identifying and scraping from Instagram locations
Link to tool: https://github.com/bellingcat/instagram-location-search
We have been meaning to review this awesome tool by Bellingcat for quite some time. With the start of the military coup in Sudan, an opportunity was presented to us to try out Instagram Location Search in order to identify media that could be of intelligence value with regards to real-time security incident reporting. So, we will cut to the chase and say to our readers that this tool is outstanding and it did not disappoint!
Instagram Location Search is a lightweight Python script that packs an awesome punch. It allows Digital Investigators and Intelligence Analysts to search for Instagram location IDs based on given coordinates. Installing and deploying the tool does not require users to specify their Instagram credentials, it relies on the
session-id-token to be specified instead. For those who are unfamiliar with how to obtain this token, the fantastic team at Bellingcat have provided an easy set of instructions in this regard. Deploying the tool itself is very straightforward as it can be achieved by invoking the command
python3 instagram-locations.py --session "<session-id-token>", within the same command, users can specify their desired location by inputting their respective
--lng arguments. Users can also use the
--date argument in order to filter the Instagram location pages to show posts created on this date or earlier. Lastly, users can what output they require; the four options being:
- JSON, which can be achieved by invoking the
--jsoncommand-line argument. This will save the list as a JSON file, almost identical to the raw API response.
- GeoJOSN, this can be executed through the
--geojsonargument. This will save the list of locations as a GeoJSON file for other geospatial applications.
- Location IDs are scraped and saved within a .txt file that can be passed through another Instagram-based media scraper such as ‘Instagram Scraper‘. This can be achieved by invoking the command
- Most definitely an impressive feature – users can request an interactive map (based on Leaflet JS) which will show all of the locations of the returned points. This can be achieved by invoking the command
Impressive as the tool is – it is even more effective when it is combined with another tool such as ‘Instagram Scraper‘ to pull all of the media associated with the scraped Location IDs. Additionally, Instagram Scraper also be used to save the media and location metadata associated with the scraped media.
As we earlier discussed, we tested out Instagram Location Tool by pinpointing it towards Khartoum, Sudan, in order to identify locations that could be used to pull media of intelligence value in relation to the ongoing military coup. Most certainly, the tool did not let us down – we identified several hundred locations and visualised with them the map feature. Using Instagram Scraper, however, was tedious at best. We found that the tool itself required some additional configuration tweaks in order to overcome some minor errors caused by recent updates to Instagram’s search functionality. Once we had implemented our tweaks, we found that both Instagram Location Search and Instagram Scraper are a perfect combination, resulting in us scraping a substantial amount of media associated with the ongoing military coup in Sudan and using the extracted location metadata to map our results.
There is undoubtedly a significant number of reasons as to why every Digital Investigator and Intelligence Analyst should use Instagram Location Search, but we have settled for just one test case. It is easy to install and deploy, delivers effective results, and can be integrated with other scrapers. Therefore, Instagram Location Search is most certainly recommended and we take our hats off to the Bellingcat team for once again contributing to the OSINT community!