Website Screenshot to Social Image (No Crop)
Pricing
from $4.00 / 1,000 image generateds
Website Screenshot to Social Image (No Crop)
Website screenshot API that turns any URL or HTML into ready-to-post images: Instagram 1080x1350, Pinterest pin, square, Story and Open Graph 1200x630. No cropping, rounded card or browser frame, dark mode, phone viewport, cookie banners hidden. $0.004 per image. AI agent and MCP ready.
Pricing
from $4.00 / 1,000 image generateds
Rating
0.0
(0)
Developer
Anthony Crawford
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Turn any website screenshot into a ready-to-post social media image, without cropping. Website Screenshot to Social Image opens a public web page (or your own HTML) in a real Chrome browser, takes the screenshot, and fits it into Instagram portrait 1080×1350, Pinterest pin 1000×1500, square, Story 1080×1920 or an Open Graph / link-preview image 1200×630, on a background color you choose, with an optional rounded card + soft shadow or browser-window frame. Cookie banners are hidden, dark mode and phone viewports are supported, and every image gets a direct download link. $0.004 per image, failed pages are free. Works from the Console, API, n8n, Make, Zapier and AI agents via the Apify MCP server.
What can this website screenshot tool do?
- 🌐 URL to social image: screenshot any public page (landing pages, app screens, blog posts, product pages, docs, changelogs).
- 🧩 HTML to image: render your own HTML (quote cards, announcement cards, stats, mock tweets) and get PNG/JPG/WebP.
- 📐 Sizes:
instagram-portrait1080×1350,pinterest-pin1000×1500,square1080×1080,story1080×1920,og-image1200×630 (link previews, X/LinkedIn cards),raw(plain screenshot), orcustom. - 🖼️ No cropping: the screenshot is scaled to fit and padded with your background color (default warm cream
#F4EFE6). - ✨ Frame styles:
rounded-shadow(default),browser(window bar with the page address),rounded,none. - 🌙 Dark mode (
prefers-color-scheme: dark), retina (device scale 2–3), custom viewport (phone or desktop), full-page capture with lazy-image scrolling. - 🍪 Cookie banners hidden (best effort: OneTrust, Cookiebot, Didomi, Quantcast, Usercentrics, generic fixed banners) plus your own
hideSelectorsandcustomCss. - 🛡️ Safe by default: only public http(s) addresses are fetched (private, loopback, link-local and cloud-metadata IPs are blocked; DNS is resolved and every redirect is checked). JavaScript is off for HTML snippets unless you turn it on.
Who is it for?
- Marketers, indie makers and app builders posting website or app screenshots to Instagram, Pinterest, X, LinkedIn or Facebook.
- AI agents and LLM apps (via Apify MCP or API) that need to show "what this page looks like" or produce a share image for a link.
- Developers generating OG images or changelog/announcement cards from HTML without running headless Chrome.
How to turn a website screenshot into an Instagram post
- Click Try for free (or Start) and sign in to Apify.
- Paste one or more page links into Web page URLs (or put HTML into HTML snippet).
- Pick Output sizes, e.g. Instagram/Facebook portrait 1080×1350 and Open Graph 1200×630.
- Choose a Frame style and Background color.
- Click Start. The Output tab shows each image with its
imageUrl.
Input example
{"urls": ["https://www.wikipedia.org"],"presets": ["instagram-portrait", "og-image"],"frameStyle": "browser","backgroundColor": "#F4EFE6"}
This creates 1 page × 2 sizes = 2 images = $0.008.
Phone-style screenshot for a Story:
{"urls": ["https://example.com"],"presets": ["story"],"viewportWidth": 390,"viewportHeight": 844,"deviceScaleFactor": 2,"frameStyle": "rounded-shadow"}
Main input fields
| Field | Type | Default | Notes |
|---|---|---|---|
urls | array of strings | – | Public web pages. |
html | string | – | One HTML document or fragment. |
htmlSnippets | array | – | Strings or { "name", "html" } objects. |
presets | array | ["instagram-portrait","og-image"] | instagram-portrait, pinterest-pin, square, story, og-image, raw, custom. |
customWidth / customHeight | integer | – | 64–6000 px, for custom. |
frameStyle | string | rounded-shadow | rounded-shadow, browser, rounded, none. |
backgroundColor | hex | #F4EFE6 | |
paddingPercent | integer | 6 | 0–40. |
cornerRadius | integer | 18 | px. |
outputFormat | string | png | png, jpg, webp. |
quality | integer | 90 | jpg/webp. |
viewportWidth / viewportHeight | integer | 1280 / 800 | CSS px. Use e.g. 390×844 for a phone look. |
fullPage | boolean | false | Whole scrolling page (cut at fullPageMaxHeight, default 6000). |
deviceScaleFactor | integer | 1 | 2 = retina. |
darkMode | boolean | false | |
hideCookieBanners | boolean | true | Best effort. |
waitUntil | string | load | load, domcontentloaded, networkidle. |
delayMillis | integer | 1000 | Extra wait before the shot. |
timeoutSecs | integer | 45 | Per page. |
hideSelectors | array | – | CSS selectors to hide. |
customCss | string | – | Injected before the shot. |
htmlJavaScript | boolean | false | Run JS in HTML snippets. |
Output example
One dataset row per page × size; the image files are in the run's key-value store.
{"index": 0,"sourceType": "url","source": "https://www.wikipedia.org","finalUrl": "https://www.wikipedia.org/","title": "Wikipedia","preset": "instagram-portrait","width": 1080,"height": 1350,"format": "png","imageUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/001-wikipedia.org-instagram-portrait.png","status": "ok","errorCode": null,"charged": true}
Error codes: INVALID_INPUT, INVALID_URL, BLOCKED_URL, DNS_FAILED, HTTP_ERROR, FETCH_FAILED, NAVIGATION_FAILED, TIMEOUT, TOO_LARGE, RENDER_FAILED, SCREENSHOT_FAILED, PROCESSING_FAILED. Error rows are never charged.
How much does a website screenshot cost?
| What you do | Images | Price |
|---|---|---|
| 1 page → Instagram portrait | 1 | $0.004 |
| 1 page → Instagram + Pinterest + OG image | 3 | $0.012 |
| 50 pages → OG image | 50 | $0.20 |
| 1,000 images | 1,000 | $4.00 |
| Event | Price | When |
|---|---|---|
image-generated | $0.004 | One output image (one page × one size) was saved. |
apify-actor-start | Apify's tiny standard start fee | Once per run. |
Pages that fail (blocked, timeout, HTTP error) cost nothing, and runs stop cleanly at your maximum charge per run. Apify's free plan includes monthly platform credit, enough to try it many times.
Use with AI agents (Apify MCP server)
Load just this tool from the hosted Apify MCP server in Claude, ChatGPT, Cursor, VS Code or any MCP client:
https://mcp.apify.com?tools=bigaceboy/website-screenshot-to-social
{"mcpServers": {"website-screenshot": { "url": "https://mcp.apify.com?tools=bigaceboy/website-screenshot-to-social" }}}
Then ask: "Screenshot my landing page and give me an Instagram post and a 1200×630 link preview with a browser frame." The agent sends urls + presets and reads imageUrl. Every imageUrl is a direct public link, so vision models and chat apps can display it.
Use with n8n, Make and Zapier
- n8n: Apify node → Actors → Run an Actor and Get Dataset → Actor
bigaceboy/website-screenshot-to-social, input{ "urls": ["{{ $json.url }}"], "presets": ["instagram-portrait"] }, then passimageUrlto Buffer, Google Drive, Slack or your CMS. - Make: Apify → Run an Actor (wait for finish) → Get Dataset Items → map
imageUrl. - Zapier: Apify → Run Actor (synchronous), then use
imageUrl.
Use with the API (curl, JavaScript, Python)
curl -X POST "https://api.apify.com/v2/acts/bigaceboy~website-screenshot-to-social/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"urls":["https://www.wikipedia.org"],"presets":["og-image"],"frameStyle":"browser"}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('bigaceboy/website-screenshot-to-social').call({ urls: ['https://www.wikipedia.org'], presets: ['og-image'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((i) => i.imageUrl));
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("bigaceboy/website-screenshot-to-social").call(run_input={"urls": ["https://www.wikipedia.org"], "presets": ["og-image"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["imageUrl"])
FAQ
How do I post a website screenshot on Instagram without it getting cropped?
Use the instagram-portrait preset (1080×1350). The screenshot is fitted inside with a background around it. For a fuller portrait image, use a phone viewport (viewportWidth: 390, viewportHeight: 844) or fullPage with pinterest-pin/story.
Can it make Open Graph (OG) images?
Yes: the og-image preset is 1200×630, the size used for link previews on Facebook, LinkedIn, X and Slack. For custom OG cards, render your own HTML in html.
Can it take full-page screenshots?
Yes, set fullPage: true (scrolls to load lazy images; very long pages are cut at fullPageMaxHeight). Tall pages look small in wide sizes, so combine with pinterest-pin or story, or use raw.
Does it remove cookie popups?
It hides the common consent banners automatically (best effort). For anything else, add CSS selectors to hideSelectors.
Can it screenshot pages behind a login?
No, only public pages. For private content, render the HTML yourself via html.
Is it a general website screenshot API?
Yes. Use the raw preset to get the plain screenshot at its own size, or custom for exact dimensions.
Other tools by this developer
| Tool | What it does | Price |
|---|---|---|
| Social Image Resizer (No Crop) | Fit photos into Instagram/Pinterest/Story sizes without cropping | $0.005 / image |
| Image Optimizer & Converter | Compress images to WebP/AVIF/JPG, target KB size, strip GPS | $0.002 / image |
| Markdown & HTML to PDF Converter | Turn Markdown, HTML or a URL into a clean PDF | $0.004 / PDF |
Tips and limits
- Up to 200 pages and 1,000 output images per run; HTML snippets up to 2 million characters.
- Some sites block automated browsers or show popups that can't be removed; use
hideSelectorsfor site-specific overlays. - Only screenshot pages you have the right to use.
- Questions or feature requests: use the Issues tab.