# Instagram mutuals: do two accounts follow each other, and who do they share?

```
GET https://fetchapi.co/api/instagram/mutuals?a=<username>&b=<username>[&mode=following|followers|both][&users=200][&fast=1][&max_pages=700]
header: x-api-key: gw_...
MCP: tool find_instagram_mutuals {a, b, mode?, users?, fast?, max_pages?}
```

Answer:
- `a`, `b`: each profile (username, name, followers, following, private, verified).
- `relationship`: `a_follows_b`, `b_follows_a`, `mutual_follow`, read from the two following lists. `null` means unknown:
  the account is private, or less than 98% of its following list could be read.
- `common_following` (mode `following`, default): accounts both follow. `count`, `complete`, `scanned` (accounts read
  per list, pages, `coverage` = accounts read / the profile's following count) and `users` (username, name, verified,
  private, avatar).
- `common_followers` (mode `followers`, or `both`): **a sample**. Instagram shows logged-out viewers only each account's
  newest ~50 followers, so this is the overlap among those, never a full count.
- `meta`: calls made, their cost and the seconds taken.

How it reads a following list: instagram-scraper-20251 returns 50 accounts a page on a stable cursor, read to the end
(~5 s a page). If it fails, FlashAPI is used instead: ~12 a page by offset, fetched in parallel, two passes combined
because Instagram reshuffles that list between calls (one pass ~90%, two ~99%; `fast=1` for one). Private accounts'
lists are not visible.

Cost: ~$0.0014 a call, metered to your key: 2 profile lookups + 1 page per 50 follows of each public account (+2 calls
for the followers sample). Measured 2026-10-17: @cloiey (139k followers, 2,113 follows) against the private @wangjoyy:
`a_follows_b: true`, 46 calls, $0.06, 194 s. A 7,500-follow account is ~150 pages (~12 min). Allow up to 10 minutes per
call and set your HTTP client's timeout to match.

Accounts both follow are the reliable signal. Only "does A follow B" on X: see [X mutuals](x-mutuals.md).
