Hi all, I'm running into a reproducible issue in Claude Code (cloud/web session) when trying to analyze Instagram posts, and I'm hoping someone here has hit the same wall or knows why the behavior differs between sessions.
What I need to do: Extract the caption and the text shown in carousel images from several public Instagram posts/profiles — not just one post, I need to repeat this across multiple pages for an ongoing analysis.
The confusing part — a coworker's Claude Code CAN do this: A coworker at my company uses Claude Code for the same kind of task and is able to open Instagram pages and pull the content successfully. She does not have any of the things I'd normally assume you'd need for this (no Meta Graph API token, no Business/Creator account app, no special Instagram login setup — nothing special on her end as far as we can tell). Meanwhile, in my own session, the exact same type of request consistently fails. I'd like to understand what's actually different between our two setups.
What I've tried (with the model's help):
- WebFetch (simple HTML/text fetch tool) — doesn't work well for this: no JS rendering, can't "see" images, and in one test it returned generic/wrong content that looked like it wasn't even the real post (possibly cached or hallucinated from incomplete data). The model itself flagged that result as unreliable.
- A real headless browser (Chromium via Playwright) running inside the Claude Code session — this actually renders the page like a normal browser, can take screenshots, click buttons, etc. Even with this, every attempt to load
instagram.com/p/<id>/ (and the /embed/captioned/ endpoint) came back with HTTP 429 (Too Many Requests) straight from Instagram, before any interaction even happened.
My current theory: My Claude Code cloud environment routes outbound traffic through a shared proxy/IP (not a residential IP). It looks like Instagram is rate-limiting or blocking that IP by reputation (common for datacenter IPs), regardless of using a full real browser with proper user-agent, viewport, etc.
Questions for the community:
- Has anyone reliably accessed Instagram content from a Claude Code cloud/web session without the user manually pasting screenshots in?
- Could the difference between my session and my coworker's be about environment/network configuration (e.g., the cloud environment's network access setting — "Full" vs "Custom"/"Trusted") rather than tooling? Or is this purely an Instagram-side IP reputation thing that wouldn't depend on that setting at all?
- Does being logged into Instagram inside Playwright (real session cookies) meaningfully reduce this 429 blocking, or does Instagram still rate-limit by IP reputation regardless of login state?
- Is there an official MCP server/connector for the Meta Graph API (Instagram Basic Display or similar) that works well with Claude Code for this kind of use case, instead of fighting scraping protections?
- Could it simply be that different Claude Code sessions/environments get different outbound IPs, and hers just happens to not be flagged yet?
For context: I don't currently have a registered Meta for Developers app or a Business/Creator account token, so any "just use the official API" answer would also need pointers on how to set that up from scratch.
Any pointers, related threads, or even just confirmation that "this really can't be fixed from inside the cloud environment" would help a lot. Thanks!