Skip to main content

Instagram Location Search

PyPI version

Installation

This Python application can be installed from PyPI using pip: pip install instagram-location-search

or the latest from the repo: pip install git+https://github.com/bellingcat/instagram-location-search

Example usage

The following command will search for Instagram locations nearby the coordinates 32.22 N, 110.97 W (downtown Tucson, Arizona.) The list of locations is saved as a CSV file at "locs.csv".

instagram-location-search --cookie "<instagram-cookies>" --lat 32.22 --lng -110.97 --csv locs.csv

Note that this requires Instagram cookies in order to work! See below for how to obtain one from your account.

Other output formats

Using the --json <output-location> command line argument, the list can be saved as a JSON file, almost identical to the raw API response.

Using the --geojson <output-location> command line argument, the list can be saved as a GeoJSON file for other geospatial applications.

Using the --ids <output-location> command line argument, all the found location IDs are output, suitable to pass into another tool, like instagram-scraper.

Using the --map <output-location> command line argument, a simple Leaflet map is made to visualize the locations of the returned points.

Example of map visualization

Multiple types of output can be generated. For example, the following command will search for Instagram locations, save the JSON list, a CSV file, and a map for viewing the locations visually.

instagram-location-search --cookie "<instagram-cookie>" --lat 32.22 --lng -110.97 --json locs.json --csv locs.csv --map map.html

Sample Usage with instagram-scraper

The ID list generated with the --ids flag can be passed into instagram-scraper to pull down image metadata.

:rotating_light: Undocumented API :rotating_light:

instagram-scraper relies on an undocumented API for the mobile apps. YMMV.

First, get the proximal location IDs of your target location:

instagram-location-search --cookies "<instagram-cookie>" --lat <lat> --lng <lng> --ids location_ids.txt

Be sure to install instagram-scraper:

pip install instagram-scraper

Location scraping requires an authenticated request. Save your creds in a local file:

echo "-u=<your username>" >> creds.txt
echo "-p=<your password>" >> creds.txt

Now use instagram-scraper to pull down all the photos at those locations:

instagram-scraper @creds.txt --filename @location_ids.txt --location --include-location --destination <output dir>

Getting Instagram cookies

Improved Tool Usage Process

The updated process allows you to obtain cookies through a pop-up browser window. To use this new flow, simply omit the --cookie parameter when running the command.

Important: An Instagram session ID should be treated like a password, as it provides full access to your Instagram account. Using this session ID in multiple places or on multiple computers may cause Instagram to invalidate all session IDs. Using this session ID for any purpose other than the official Instagram website or application may violate the Instagram Terms of Service and could lead to account suspension.

Follow these steps to use the improved tool usage process:

  1. Run the command without the --cookie parameter.
  2. In the opened Google Chrome instance, create a new profile. Creating a new profile
  3. Click "Continue without email". Continue without email
  4. Enter a name for the profile you'd like to link to instagram account, and click "Done". Creating an account
  5. Select "Only allow essential cookies". Only allow essential cookies
  6. Log in to your Instagram account. The browser will close automatically shortly afterward. Log in to Instagram

Once you've completed the initial setup, you can simply click on the created profile in subsequent runs to use the associated Instagram account.

Old flow

This now requires the entire cookie string, in the format of an HTTP request header. Details TK.

Important: an Instagram session ID should be treated like a password — it provides full access to the Instagram account. Using this session ID in multiple places or on multiple computers may trigger Instagram to invalidate all session IDs. Using this session ID for any purpose other than the official Instagram website or application may be a violation of the Instagram Terms of Service and could lead to account suspension.

  1. In Google Chrome, log-in to Instagram.

  2. Right click on the page and press "Inspect" to bring up the Chrome Developer Tools.

  3. Click the "Application" tab in the Developer Tools Box.

  4. Under "Cookies" select "https://www.instagram.com." Finding the Instagram cookie

  5. Right click on any item and click "Show Requests With This Cookie".

  6. Click on any request. In the "Headers" tab, scroll down to "Request Headers".

Finding the full cookie string

  1. Copy all text after "cookie: ". This is your cookie string. Replace <instagram-cookies> with this value when running instagram-location-search.

Release files for instagram-location-search 1.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for instagram-location-search 1.5.2
File Size Uploaded
instagram-location-search-1.5.2.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for instagram-location-search 1.5.2
File Interpreter ABI Platform
instagram_location_search-1.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 17.6 kB

Release files / instagram-location-search-1.5.2.tar.gz

Download URL instagram-location-search-1.5.2.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
d657904b908ceb4c2c9f180ed3f8775f2ca8b288f149240c15b71c8ffa8c042c
BLAKE2b-256 checksum
How to use checksums
6c3980d56e1200836423b31c1850d32f75fc537e161cef9c014c1dc6353dba33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Release files / instagram_location_search-1.5.2-py3-none-any.whl

Download URL instagram_location_search-1.5.2-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2bf25f941ae463d2333229ff4cd88906d752de1027d18805932192d3a460f319
BLAKE2b-256 checksum
How to use checksums
bdab73884720153584b838b46e5d5fc1dbb5ba1a04b0ea6fb99c130001fff6cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Release history Release notifications | RSS feed

This release

1.5.2 This release

2 release files

1.5.1

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page