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.
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.
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.
NewWhen 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.
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