Guides / Ruby

Take website screenshots in Ruby

Maintaining your own headless-browser fleet for screenshots means babysitting Chromium versions, memory leaks, fonts, and proxy rules. RasterKit turns all of that into a single HTTPS call: send a URL from your Ruby code, get back finished image bytes.

The engine runs real Chromium, so modern CSS, web fonts and JavaScript-rendered pages come out exactly as users see them. Flags like full_page, device=mobile, dark_mode and block_cookie_banners handle the cases that make DIY screenshotting painful.

1. Get an API key

Sign up free (magic link, no card) — your key is shown right after sign-in. You get 100 renders/month free across screenshots, PDFs, and images.

2. Make the request

require "net/http"
require "json"

uri = URI("https://rasterkit.com/v1/screenshot")
req = Net::HTTP::Post.new(uri)
req["x-api-key"] = ENV.fetch("RASTERKIT_API_KEY")
req["content-type"] = "application/json"
req.body = '{"url": "https://example.com", "full_page": true, "format": "png"}'

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true, read_timeout: 60) { |http| http.request(req) }
raise "Render failed: #{res.code} #{res.body}" unless res.code == "200"
File.binwrite("screenshot.png", res.body)
puts "Saved screenshot.png"

The response body is the file itself — no JSON envelope to unwrap, no second download request. Errors come back as JSON with a stable error code.

3. Tune the output

The Screenshot API reference documents every parameter. The ones people reach for first:

Use cases

FAQ

How do I capture the full page, not just the viewport?

Pass "full_page": true. RasterKit auto-scrolls the page first so lazy-loaded images and infinite-scroll content are included.

Can I screenshot pages that need JavaScript?

Yes — every render runs in real Chromium with JS enabled. Use wait_until: "networkidle", wait_for_selector, or delay_ms for late-rendering apps.

How fast is it?

Typical p50 is 1.5–3 s for a normal page (sync request). Add cache_ttl and repeated captures of the same URL return instantly and free.

Related guides

Get your free API key →