Skip to content

Killer features

A short tour of the commands that make insto worth installing. Each has a copy-pasteable one-shot example, real output, and what to do with it.

Looking for multi-step investigative scenarios rather than per-command examples? See OSINT recipes โ€” 7 concrete chains (find someone's likely city, detect sockpuppet rings, evidence-archive a post, audit your own footprint, โ€ฆ).


๐Ÿ”ฅ /where โ€” geo fingerprint

Where does this target actually live?

Walks the target's recent posts, extracts GPS from every geotag, and computes an anchor place (the most-frequent location โ€” proxy for "home" or "office"), the centroid of all geotag points, and the max spread radius.

insto -c where ferrari --limit 30
@ferrari geo fingerprint โ€” 15 of 30 posts geotagged

  anchor:    Maranello  (44.5256ยฐN, 10.8664ยฐE) โ€” 7 posts (47%)
  centroid:  43.623ยฐN, 1.559ยฐE โ€” max radius 9575 km

  Maranello                         7  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Big Sky, Montana                  2  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Zandvoort                         1  โ–ˆโ–ˆโ–ˆโ–ˆ
  Niseko, Japan                     1  โ–ˆโ–ˆโ–ˆโ–ˆ
  Korea                             1  โ–ˆโ–ˆโ–ˆโ–ˆ
  ...

Read the result: Maranello is the Ferrari HQ โ€” 47% of geotagged posts there is the strongest possible "home" signal. Big Sky / Niseko / Zandvoort are travel (racing circuits, ski). The 9 575 km radius makes the centroid meaningless (Italy โ†” Japan span pulls the mean).

JSON export carries anchor, centroid_lat, centroid_lng, radius_km, places[*] for downstream tooling.


๐Ÿ”ฅ /dossier โ€” full target package

Everything I know about this account, in one folder.

Composite command: /info + /posts + /followers + /following + /mutuals + /hashtags + /mentions + /locations + /wcommented + /wtagged. Sections fan out concurrently; one section's failure (rate-limit, 403) doesn't kill the rest โ€” MANIFEST.md flags partial: true with the failure list.

insto -c dossier ferrari --no-download              # everything except media
insto -c dossier ferrari --maltego                  # Maltego-importable CSV per section
output/ferrari/dossier/2026-04-29T11:08Z/
โ”œโ”€โ”€ MANIFEST.md
โ”œโ”€โ”€ profile.json
โ”œโ”€โ”€ posts.json
โ”œโ”€โ”€ followers.maltego.csv          # with --maltego, otherwise followers.csv
โ”œโ”€โ”€ following.maltego.csv
โ”œโ”€โ”€ mutuals.maltego.csv
โ”œโ”€โ”€ hashtags.maltego.csv
โ”œโ”€โ”€ mentions.maltego.csv
โ”œโ”€โ”€ locations.maltego.csv
โ”œโ”€โ”€ wcommented.maltego.csv
โ”œโ”€โ”€ wtagged.maltego.csv
โ””โ”€โ”€ posts/                          # media, skipped with --no-download

Pre-flight: private / blocked / deleted profiles abort before any directory is created. Disk free below 2 GB also aborts. Progress bar ticks 1/9 โ†’ 9/9 as sections finish.


๐Ÿ”ฅ /intersect โ€” shared followers

Who follows both of these targets?

Takes two usernames; pulls the first N followers of each (default 1000) and intersects by pk. Reveals shared communities, employees, family, or PR networks.

insto -c intersect ferrari mclaren --limit 5000 --maltego
@ferrari โˆฉ @mclaren: 412 shared followers (out of 5000 / 5000 analysed)

The Maltego CSV under output/ferrari_mclaren/intersect.maltego.csv is ready to import as maltego.Person nodes.

Trick: for an OPSEC investigation against an anonymous target with no obvious bio, /intersect against the two accounts they're known to interact with often surfaces the operator's actual handle in the overlap.


๐Ÿ”ฅ /fans โ€” superfan ranking

Who actually engages with this account, weighted by effort?

Across the last N posts, counts who liked + who commented and ranks by score = likes + 3ร—comments (a comment is ~3ร— more effortful than a heart-tap). Output shows the per-channel breakdown so the engagement profile is visible at a glance.

insto @nasa -c fans --limit 20
Top fans of @nasa (last 20 of 20 posts, score = โค๏ธ + 3*๐Ÿ’ฌ):
  @bigfan_42        67  (โค๏ธ17 ๐Ÿ’ฌ16+1L+0C +50)
  @space_lover      54  (โค๏ธ12 ๐Ÿ’ฌ14)
  @comet_chaser     38  (โค๏ธ11 ๐Ÿ’ฌ9)
  ...

Cost: 2N backend calls (one likers + one comments per post). Default 50 โ†’ 100 round-trips. Pass --limit 10 for cheap sampling. Concurrency capped at 5.

JSON export carries {username, likes, comments, score, rank} per row.


๐Ÿ”ฅ /place + /placeposts โ€” geo discovery

Find an Instagram location, then see who posts there.

Two-step OSINT primitive: search a place by free text, then list top media at the matched pk.

insto -c place tbilisi 5
places matching 'tbilisi' (5)
โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ # โ”ƒ pk               โ”ƒ name             โ”ƒ city        โ”ƒ lat,lng          โ”ƒ
โ”กโ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ 1 โ”‚ 456682401795583  โ”‚ Tbilisi, Georgia โ”‚ โ€”           โ”‚ 41.6883, 44.8089 โ”‚
โ”‚ 2 โ”‚ 214413140        โ”‚ Tbilisi, Georgia โ”‚ โ€”           โ”‚ 41.7422, 44.7988 โ”‚
โ”‚ 3 โ”‚ 2186950754745384 โ”‚ Tbilisi, Georgea โ”‚ Tbilisi     โ”‚ 41.6940, 44.8011 โ”‚
โ”‚ 4 โ”‚ 1008248419       โ”‚ Tbilisi          โ”‚ โ€”           โ”‚ 41.7167, 44.7833 โ”‚
โ”‚ 5 โ”‚ 767262872        โ”‚ Tbilisi          โ”‚ โ€”           โ”‚ 41.7948, 44.7930 โ”‚
โ””โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ†’ /placeposts <pk> to see top posts at a location
insto -c placeposts 456682401795583 30

Returns the 30 most-engaging posts geotagged at that pk. Full Post DTOs โ€” JSON-exportable, screen-renderable, drop into a Maltego maltego.Photo graph if you want.


๐Ÿ”ฅ /postinfo โ€” URL โ†’ metadata

I have a permalink. Give me the post's metadata.

Resolves any of: https://www.instagram.com/p/<code>/, the bare shortcode (DXPduuvEY7S), or a numeric pk (3877448558815842002) into the full Post DTO. No active target needed โ€” useful for evidence chains where you have a URL from a screenshot but don't know whose account it's from.

insto -c postinfo DXPduuvEY7S
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ post DXPduuvEY7S โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚  pk         3877448558815842002                            โ”‚
โ”‚  code       DXPduuvEY7S                                    โ”‚
โ”‚  type       carousel                                       โ”‚
โ”‚  taken at   2026-04-26                                     โ”‚
โ”‚  owner      @nasa                                          โ”‚
โ”‚  likes      234 187                                        โ”‚
โ”‚  comments   1 412                                          โ”‚
โ”‚  location   โ€”                                              โ”‚
โ”‚  caption    Two stars dance close in the Pillars of โ€ฆ      โ”‚
โ”‚  hashtags   #NASA, #Moon, #Besties                         โ”‚
โ”‚  mentions   @astro_reid                                    โ”‚
โ”‚  media      https://scontent.cdninstagram.com/...          โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

JSON export gives the full DTO including media_urls[] for evidence-archive use.


๐Ÿ”ฅ /timeline โ€” posting cadence

When does this target post?

24-bucket hour-of-day sparkline + 7-bucket day-of-week bar chart over the last N posts. Reveals timezone (sleeping hours), human vs scheduler-driven posting, weekday vs weekend rhythm.

insto @nasa -c timeline --limit 30
@nasa posting cadence โ€” 30 posts (2026-04-11 โ†’ 2026-04-28)

  hour 00 โ†’ 23 (UTC, peak 20h): โ–ƒ โ–ƒ  โ–       โ–โ–„โ–ƒ โ–โ–…โ–โ–ˆโ–„โ–โ–„

  Mon   6  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Tue   7  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Wed   5  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Thu   1  โ–ˆโ–ˆโ–ˆโ–ˆ
  Fri   6  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Sat   3  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
  Sun   2  โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ

@nasa peaks at 20:00 UTC = ~16:00 ET โ€” US East Coast working hours. The Mon-Fri concentration with a Thursday dip is staffer rhythm, not scheduler.


I don't know the username yet. I have a bio fragment / brand name.

Full Instagram account SERP โ€” feeds free text to fbsearch_accounts_v2. Returns matched accounts in IG's relevance order.

insto -c search ferrari 5 --maltego
search 'ferrari' (5)
1  ferrari            (verified)  Ferrari
2  scuderiaferrari    (verified)  Scuderia Ferrari HP
3  ferrari_mumbai     (verified)  Navnit Motors Ferrari
4  ferrari_canada                 Ferrari of Canada
5  ferrari_la                     Ferrari of Beverly Hills

Maltego CSV is ready for import as maltego.Person nodes.


OPSEC notes

  • Tor proxy: --proxy socks5h://127.0.0.1:9050 works on every command. socks5h (not socks5) means DNS goes through the proxy too.
  • Logged-in vs logged-out: HikerAPI default = no IG account, no ban risk. aiograpi extra = real IG session, can hit private profiles you follow but comes with account-ban risk. See Backends.
  • Secrets: HikerAPI tokens, aiograpi passwords, and TOTP seeds are redacted from every error message and log line via _redact.redact_secrets. Never appears in tracebacks even when a tool prints them.
  • Local-only state: Everything insto stores (config, sqlite, logs) lives at ~/.insto/, mode 0700 directory + 0600 files. No phone-home, no telemetry.