Framejet

Website screenshot API for pages a URL can’t reach.

Turn a URL — or a plain-language goal — into a clean PNG or JPEG. Framejet navigates multi-step flows and removes cookie banners, consent walls and chat widgets before the shot.

200 free / monthNo credit card
REST + MCPOne key, one quota
Multi-step goalsPages a URL can’t reach
Clean mode · demonstration
Raw capture
Clean mode
A demonstration, not a live capture: a page carrying a cookie banner and a chat widget, then the same page with both overlays removed before the screenshot is taken.full_page=true · clean=true
Example language
curl -H "X-Api-Key: YOUR_KEY" -o shot.png "https://framejet.dev/v1/take?url=https://example.com"
const res = await fetch("https://framejet.dev/v1/take?url=https://example.com", { headers: { "X-Api-Key": KEY } });
requests.get("https://framejet.dev/v1/take", params={"url": "https://example.com"}, headers={"X-Api-Key": KEY})
https://framejet.dev/mcp
Authorization: Bearer YOUR_KEY

Get your API key

Enter your email, open the verification link, then copy your key. You get 200 screenshots a month with no password or card.

We verify your mailbox before showing a key. Already bought a plan? Use the same email you checked out with.

Official MCP Registry active listingPrivate responses no-store by defaultFailed captures cost zero credits

Why Framejet

Clean mode, on by default

Cookie and consent overlays, sticky headers and live-chat bubbles are stripped before the capture, not cropped out after it.

REST or MCP

GET /v1/take from any language, or connect /mcp to give an AI agent screenshots on the same key. The screenshot API guide explains the capture options.

Cached & fast

Repeat captures of the same URL are served from cache and don't count against your quota.

Full page or viewport

Set width, height, device pixel ratio, and full_page=true for the whole scroll. See the full page screenshot guide.

Honest quota

Failed captures never use a credit. You only pay for pixels you actually get back.

200 free / month

Enough to build and ship a feature before you decide to pay a cent.

Capture the page after a click or search.

New

When you know the selectors, use actions to click, type and wait in one browser session before capture. If the route or controls vary, describe the final state with goal and Framejet navigates toward it.

How multi-step capture works
curl -H "X-Api-Key: YOUR_KEY" -o shot.png   "https://framejet.dev/v1/take     ?url=https://en.wikipedia.org/     &goal=Search for the Colosseum article, open it, then open its View           history page. Stop when the revision list is visible.     &values=Colosseum"

Three clicks deep, one call

Search, open the result, switch tab — Framejet re-reads the page after every step, so it can act on controls that were not there when the capture started.

Your words, never invented ones

Anything typed into a field comes from the values you pass. Framejet will refuse the capture rather than put a made-up string into somebody else’s form.

Failure is explicit

When goal mode cannot find a path to the requested state, it returns 422 goal_unreached and costs no credit. Check the returned image when the result matters.

Give your agent eyes.

One remote MCP server, one tool. Claude, Cursor and anything else that speaks MCP can take screenshots from the same quota as your REST calls.

The remote MCP serverScreenshots for AI agents
https://framejet.dev/mcp Authorization: Bearer sk_live_… // tool: screenshot(url, full_page, clean, …)

Pricing

Cancel anytime
Free
$0
200 credits / month
Starter
$9
5,000 credits / month
Pro
$29
25,000 credits / month
Scale
$99
100,000 credits / month