Guides

How to Screenshot Instagram

A working configuration for screenshotting Instagram programmatically using the Urlbox Screenshot API.

Arnold Cubici-Jones
Arnold Cubici-Jones
February 27, 2026

Quick Reference

Use pov, min_size_bytes, and retry_on to bypass bot detection. Use delay, scroll_delay, and wait_until to ensure page assets load. Use click_accept, press_escape, and hide_cookie_banners to dismiss modals and banners.

See the full configuration below or browse all available options.

Instagram is one of the hardest platforms to screenshot programmatically. It aggressively detects headless browsers and datacenter IPs, often redirecting you to a login wall or bot detection turnstile instead of showing the actual content.

Instagram screenshot comparison - login wall on the left, successful capture on the right

This guide provides a working configuration for capturing Instagram content using the Urlbox Screenshot API.

Early Access Pricing

Point of View is an Urlbox feature that makes your requests appear as if from a regular user, helping bypass bot detection on platforms like Instagram and Facebook.

The pov and retry_on options used in this example are currently in early access. These features will incur significant additional costs once fully launched. Using pov: "hidden" will incur a 10x multiplier on the number of renders used by a request and is available from our HiFi plan and above. Contact us for current pricing details.

Why Instagram Screenshots Fail

If you've tried screenshotting Instagram before, you've probably hit one of these issues:

  • Bot detection: Instagram detects headless browsers and blocks aggressively, showing turnstiles or captchas
  • Login walls: Even public content often redirects to a login page
  • Dynamic content: Lazy loading and client-side rendering can leave screenshots blank or incomplete

Working Configuration

This configuration uses Point of View (pov: "hidden") combined with delays, retry logic, and a minimum file size check to ensure you get real content rather than a login wall.

{
  "url": "https://www.instagram.com/p/DUYpWx4jm0I/",
  "full_page": true,
  "pov": "hidden",
  "pov_country": "us",
  "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
  "delay": 4000,
  "wait_until": "mostrequestsfinished",
  "scroll_delay": 1000,
  "retry_on": "small_size,timeout,5xx,4xx",
  "max_retries": 3,
  "min_size_bytes": 1500000,
  "retry_delay_ms": 5000,
  "press_escape": true,
  "click_accept": true,
  "hide_cookie_banners": true
}
Successful Instagram post screenshot

What Each Option Does

OptionDescription
pov: "hidden"Uses a Point of View to bypass bot detection. Makes your request appear as if from a regular doom-scroller!
delay: 4000Gives time for Javascript on the page to settle after requests finish
min_size_bytes: 1500000Checks the minimum file size to catch blank or error pages (~1.5MB for Instagram)
retry_on: "small_size,timeout,5xx,4xx"Retries the render when it's smaller than min_size_bytes, the request times out, or returns an error
wait_until: "mostrequestsfinished"Allows page assets to load by waiting for most network requests to finish
user_agentThis tells our browser who to act as. It's often better to let us handle this, but if you're finding yourself blocked then mixing this up could help with bot fingerprinting
pov_country: "us"Specifies which country to use for the Point of View.
scroll_delay: 1000When scrolling the page in steps, this delays each scroll to allow lazy-loaded content to appear
max_retries: 3Maximum number of retry attempts when retry_on is applied.
retry_delay_ms: 5000The time to wait between retries in milliseconds when retry_on is applied.
press_escape: truePresses the ESC key to help dismiss modals
click_accept: trueAccepts cookie consent banners
hide_cookie_banners: trueRemoves cookie and other bothersome banners using common heuristics

Important Notes

Response times: Using retry_on can significantly increase response times. Each retry adds the base render time plus retry_delay_ms, so a request with 3 retries and a 5 second delay could take considerably longer than a single render. For time-sensitive use cases, consider using webhooks or the async endpoint for asynchronous delivery instead.

Public content only: This configuration is designed for public content. Results may vary for private accounts, age-restricted content, or anything that requires login.

Things change: These configurations work as of February 2026. Instagram regularly updates its bot detection, so you may need to tweak these over time. If something stops working, get in touch and we'll help you through it.

More Social Media Guides

Looking to screenshot other platforms? See our guides for X/Twitter, Facebook, and TikTok, or our complete social media screenshot guide.

Looking for a no-code solution? CaptureDeck lets you screenshot social media at scale without writing any code.

Free Trial

Ready to start rendering?

Designers, law firms and infrastructure engineers trust Urlbox to accurately and securely convert HTML to images at scale. Experience it for yourself.

7 day free trial.No credit card required.