| name | instagram-superpower |
| description | Full toolkit for Instagram: account analytics via HikerAPI SaaS + downloading reels/posts via Cobalt API. Use when: (1) download a reel/video/photo from Instagram, (2) find top-performing reels of an account, (3) analyze a competitor (views, likes, comments, engagement), (4) manage a watchlist of accounts for monitoring, (5) download + transcribe video, (6) hashtag/location search. Triggers: "download reel", "download from instagram", "analyze account", "viral reels", "top reels", "watchlist", "track account", "competitor instagram", "engagement", links to instagram.com/reel/, instagram.com/p/, instagram.com/stories/. NOT for: YouTube, Twitter, mass spam, auto-likes, auto-follows.
|
Instagram SuperPower
Tools
| Tool | Purpose | Cost |
|---|
| HikerAPI | Analytics: profiles, reels, comments, followers, hashtags, search | $0.001/request (Standard) |
| Cobalt | Download video/photo from Instagram CDN | Free (self-hosted) |
| Groq Whisper | Transcription of downloaded videos | Free |
Documentation and links
Path mapping
Agent machine
| What | Path |
|---|
| Download script (Cobalt) | ~/.claude/skills/instagram-superpower/scripts/download.sh |
| Analytics script (HikerAPI) | ~/.claude/skills/instagram-superpower/scripts/analyze.sh |
| Watchlist script | ~/.claude/skills/instagram-superpower/scripts/watchlist.sh |
| Cookie deploy script | ~/.claude/skills/instagram-superpower/scripts/deploy-cookies.sh |
| Cookie check script | ~/.claude/skills/instagram-superpower/scripts/check-cookies.sh |
| HikerAPI key | ~/.secrets/hikerapi/api-key |
| Instagram credentials (for Cobalt) | ~/.secrets/cobalt/accounts.json |
| Instagram cookies (for Cobalt) | ~/.secrets/cobalt/cookies.json |
| Cobalt API key | ~/.secrets/cobalt/api-key |
| Watchlist | ~/.secrets/cobalt/watchlist.json |
| Downloaded files | /tmp/downloads/ |
Cobalt server (self-hosted)
| What | Path |
|---|
| Cobalt Docker Compose | /opt/cobalt/docker-compose.yml |
| Cobalt cookies (working copy) | /opt/cobalt/cookies.json |
| Cobalt API keys | /opt/cobalt/keys/api-keys.json |
| Docker container | cobalt-api |
| Cobalt API endpoint | http://127.0.0.1:9000/ (localhost only) |
How it all connects
HikerAPI (cloud) Cobalt server (self-hosted)
───────────────── ────────────────────────────
api.instagrapi.com ◀── curl ── Your machine
analytics, data Cobalt API (localhost:9000)
$0.001/request media download (free)
Your machine:
analyze.sh → HikerAPI (directly)
download.sh → SSH → Cobalt server → Instagram CDN
watchlist.sh → analyze.sh + download.sh
HikerAPI — Authentication
cat ~/.secrets/hikerapi/api-key
curl -s "https://api.instagrapi.com/ENDPOINT" \
-H "accept: application/json" \
-H "x-access-key: $(cat ~/.secrets/hikerapi/api-key)"
curl -s "https://api.instagrapi.com/ENDPOINT?access_key=$(cat ~/.secrets/hikerapi/api-key)"
Balance: GET /sys/balance — shows remaining requests and balance.
HikerAPI — Main endpoints
Users
| Endpoint | Description | Requests |
|---|
GET /v2/user/by/username?username=X | Profile by username | 1 |
GET /v2/user/by/id?id=X | Profile by ID (faster) | 1 |
GET /v2/user/clips?user_id=X | User reels (12/page) | 1 |
GET /gql/user/clips?user_id=X | Reels via GraphQL | 1 |
GET /v1/user/medias/chunk?user_id=X | All posts (paginated) | 1 |
GET /v2/user/stories?user_id=X | Stories | 1 |
GET /v2/user/followers?user_id=X | Followers (paginated) | 1 |
GET /v2/user/following?user_id=X | Following | 1 |
GET /v1/user/highlights?user_id=X | Highlights | 1 |
Media (posts/reels)
| Endpoint | Description | Requests |
|---|
GET /v2/media/info/by/code?code=X | Info by post code | 1 |
GET /v2/media/info/by/url?url=X | Info by URL | 1 |
GET /v2/media/comments?media_id=X | Comments (15/page) | 1 |
GET /v2/media/likers?media_id=X | Who liked | 1 |
GET /v1/media/download/video?media_pk=X | Download video | 1 |
GET /v1/media/download/photo?media_pk=X | Download photo | 1 |
Search
| Endpoint | Description | Requests |
|---|
GET /v2/fbsearch/topsearch?query=X | Global search | 1 |
GET /v2/fbsearch/reels?query=X | Reel search | 1 |
GET /v2/fbsearch/accounts?query=X | Account search | 1 |
GET /v2/fbsearch/places?query=X | Location search | 1 |
Hashtags
| Endpoint | Description | Requests |
|---|
GET /v2/hashtag/by/name?name=X | Hashtag info | 1 |
GET /v2/hashtag/medias/top?hashtag_id=X | Top posts by hashtag | 1 |
GET /v2/hashtag/medias/recent?hashtag_id=X | Recent posts by hashtag | 1 |
Response data
Each media object contains:
play_count / view_count — views
like_count — likes
comment_count — comments
taken_at — publish timestamp
code — shortcode for URL (instagram.com/reel/{code}/)
caption.text — caption text
user.username — author
Quick start
Account profile
HIKER_KEY=$(cat ~/.secrets/hikerapi/api-key)
curl -s "https://api.instagrapi.com/v2/user/by/username?username=<username>" \
-H "x-access-key: $HIKER_KEY" | python3 -m json.tool
Account reels (top performing)
HIKER_KEY=$(cat ~/.secrets/hikerapi/api-key)
USER_ID=$(curl -s "https://api.instagrapi.com/v2/user/by/username?username=<username>" \
-H "x-access-key: $HIKER_KEY" | python3 -c "import json,sys; print(json.load(sys.stdin)['user']['pk'])")
curl -s "https://api.instagrapi.com/v2/user/clips?user_id=$USER_ID" \
-H "x-access-key: $HIKER_KEY" | python3 -c "
import json, sys
d = json.load(sys.stdin)
items = d.get('response',{}).get('items',[])
for item in sorted(items, key=lambda x: x['media'].get('play_count',0), reverse=True)[:5]:
m = item['media']
print(f'{m.get(\"play_count\",0):>10,} views | {m.get(\"like_count\",0):>6,} likes | https://instagram.com/reel/{m[\"code\"]}/')
"
Download reel (via Cobalt)
bash ~/.claude/skills/instagram-superpower/scripts/download.sh "https://www.instagram.com/reel/<CODE>/"
Download + transcribe
bash ~/.claude/skills/instagram-superpower/scripts/download.sh "https://www.instagram.com/reel/<CODE>/" transcribe
Check HikerAPI balance
curl -s "https://api.instagrapi.com/sys/balance" \
-H "x-access-key: $(cat ~/.secrets/hikerapi/api-key)"
Typical scenarios
1. "Show top reels of a competitor"
bash scripts/analyze.sh <username> 5 14
2. "Download this reel and summarize it"
bash scripts/download.sh "<url>" transcribe
Cobalt downloads → Groq transcribes → agent analyzes.
3. "Add to monitoring"
bash scripts/watchlist.sh add <username>
bash scripts/watchlist.sh scan 3 14
4. "Full competitor breakdown"
analyze.sh <username> 5 14 → top-5 reels + metrics
download.sh <url> transcribe for top-3
- Agent analyzes: hook → pain → solution → CTA
5. "What's viral in a hashtag"
HIKER_KEY=$(cat ~/.secrets/hikerapi/api-key)
curl -s "https://api.instagrapi.com/v2/hashtag/by/name?name=aitools" -H "x-access-key: $HIKER_KEY"
curl -s "https://api.instagrapi.com/v2/hashtag/medias/top?hashtag_id=ID" -H "x-access-key: $HIKER_KEY"
Pagination
Many endpoints return next_page_id. For the next page:
curl -s "https://api.instagrapi.com/v2/user/clips?user_id=123&page_id=NEXT_PAGE_ID" \
-H "x-access-key: $HIKER_KEY"
Reels: ~12 per page. For 50 reels you need ~4 requests.
Rate Limits
HikerAPI
- Limit: 8 requests/second (Standard plan)
- No risk of Instagram ban — HikerAPI uses its own account pool and proxies
Cobalt (downloads)
- Rate limits Instagram: 20 downloads/hour per 1 account
- Pause between requests: minimum 3 seconds
- Batch downloads (>5): pause 10-15 seconds
- Strictly sequential, never parallel
Optimal strategy
- Analytics (HikerAPI): no limits, up to 8 req/sec
- Downloads (Cobalt): 20/hour, sequential
- HikerAPI can also download (
/v1/media/download/*), but uses paid requests — use Cobalt instead
Maintenance
HikerAPI
curl -s "https://api.instagrapi.com/sys/balance" -H "x-access-key: $(cat ~/.secrets/hikerapi/api-key)"
Cobalt
ssh root@<your-server-ip> "docker ps --filter name=cobalt-api --format '{{.Status}}'"
ssh root@<your-server-ip> "docker logs cobalt-api --tail 20"
ssh root@<your-server-ip> "cd /opt/cobalt && docker compose restart cobalt-api"
Updating Instagram cookies (for Cobalt)
- Credentials:
~/.secrets/cobalt/accounts.json
- Login via browser automation (agent-browser via CDP)
- Login using
Input.dispatchKeyEvent (character by character)
- Button:
div[role="button"]
- 2FA: TOTP →
input[name="verificationCode"]
- Cookies:
Network.getCookies → .instagram.com → cookies.json
- Deploy:
bash scripts/deploy-cookies.sh
Security
- HikerAPI key:
~/.secrets/hikerapi/api-key (chmod 600)
- Cobalt: ONLY
127.0.0.1:9000 on the Cobalt server
- Cookies/credentials: ONLY
~/.secrets/cobalt/ (chmod 600)
- Forbidden: logging keys/cookies, printing in chat, committing to git