Everything this service does, over HTTP.
One endpoint to queue a batch, one to check it, one to download the result. There is an MCP server if your client prefers typed tools, and an OpenAPI description if it prefers a schema.
A key is bound to a fresh account with its own credits and its own batches. Keep it somewhere safe: it is the only handle on that account.
| Surface | Address |
|---|---|
| OpenAPI | /openapi.json |
| Markdown reference | /docs/api |
| MCP endpoint | POST https://url2image.com/mcp |
| MCP server card | /.well-known/mcp/server-card.json |
| Agent card | /.well-known/agent-card.json |
| Agent skill | SKILL.md |
| Auth guide | /auth.md |
| x402 terms | /.well-known/x402 |
| Stripe checkout | available |
url2image API
Render a list of URLs in a real browser and get the screenshots back as a zip. A BuiltWith service.
Quick start
curl -X POST https://url2image.com/api/v1/batch \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $URL2IMAGE_KEY" \
-d '{"urls":["https://stripe.com","https://vercel.com"],"format":"png","full_page":true}'
That returns a batch id. Poll it, then download:
curl https://url2image.com/api/v1/jobs/$ID -H "Authorization: Bearer $URL2IMAGE_KEY" curl -L https://url2image.com/api/v1/jobs/$ID/download -H "Authorization: Bearer $URL2IMAGE_KEY" -o screenshots.zip
One URL, one image, no polling:
curl -X POST https://url2image.com/api/v1/shot \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $URL2IMAGE_KEY" \
-d '{"url":"https://stripe.com"}' --output stripe.png
Getting a key
POST https://url2image.com/api/v1/keys returns a key bound to a fresh account. Keep it:
it is the only handle on that account's credits and batches. Browsers do not
need a key, a signed cookie carries the same identity.
Pricing
Every account gets 10 free screenshots a month. The allowance is metered
per network address as well as per account, so issuing a second key does not
reset it. After that, credits are prepaid and never expire.
| Pack | Price | Credits | Per screenshot |
| Starter | $5 | 2,500 | $0.002 |
| Growth | $20 | 15,000 | $0.0013 |
| Scale | $75 | 75,000 | $0.001 |
| Bulk | $250 | 350,000 | $0.000714 |
A URL that fails every attempt is not charged.
Discovery
- OpenAPI: https://url2image.com/openapi.json
- MCP endpoint: https://url2image.com/mcp
- MCP server card: https://url2image.com/.well-known/mcp/server-card.json
- Agent card: https://url2image.com/.well-known/agent-card.json
- Agent skill: https://url2image.com/.well-known/agent-skills/batch-url-screenshots/SKILL.md
- x402 terms: https://url2image.com/.well-known/x402
- Auth guide: https://url2image.com/auth.md
MCP tools
create_screenshot_batch: queue URLs for rendering.get_screenshot_batch: read state and per URL results.get_account_balance: credits and free allowance remaining.create_credit_checkout: hosted Stripe Checkout for a credit pack (available).
Paying as an agent
Two rails, both without card handling here:
1. Hosted Stripe Checkout. The tool returns a URL, a person confirms on
Stripe's page, credits land on the account.
2. x402 (available). Call a priced endpoint, read the 402 body,
retry with an X-PAYMENT header. Terms at https://url2image.com/.well-known/x402.
Limits
- 500 URLs per batch, 2 MB per uploaded list.
- Results and images are deleted after 14 days.
- Only public HTTP and HTTPS hosts are rendered. Private, loopback and
link-local addresses are refused at render time.
Support: support@builtwith.com. Terms: https://builtwith.com/terms.
Privacy: https://builtwith.com/privacy.