Free Apify Alternative for Screenshots: No Cloud Account Required
Free Apify Alternative for Screenshots: No Cloud Account Required
Apify is a powerful web scraping and automation platform. Their screenshot actor lets you capture web pages at scale — but it requires an Apify account, actor credits, and cloud actor infrastructure even for a single screenshot. If you just need URL-to-screenshot without the overhead, there's a simpler path.
Try It Instantly
# Screenshot any URL — no account, no actor, no credits
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=webp" -o screenshot.webp
# Full-page capture
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&full_page=true&format=png" -o fullpage.png
# PDF export
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=pdf" -o page.pdf
No Apify account. No actor credits. No infrastructure setup.
What Apify Does (and What This Covers)
Apify is a full web scraping and RPA platform: actors for data extraction, proxies, datasets, key-value stores, scheduled runs, and monitoring. Their screenshot functionality is one actor among hundreds.
If you're using Apify specifically for screenshots, this API covers that use case directly — without the platform overhead. If you're using Apify for structured data extraction (scraping product listings, crawling sites, parsing HTML at scale), that's a different use case outside screenshot scope.
Feature Comparison
| Feature | Apify Screenshot Actor | This API |
|---|---|---|
| Signup required | Yes (Apify account) | No |
| Free tier | $5/month credits (limited) | Unlimited (rate-limited, no key) |
| PNG screenshots | Yes | Yes |
| WebP screenshots | Actor-dependent | Yes |
| JPEG screenshots | Actor-dependent | Yes |
| PDF export | Actor-dependent | Yes (free) |
| Full page capture | Yes | Yes |
| Custom viewport | Yes | Yes (width, height, scale up to 3x) |
| Dark mode | Actor-dependent | Yes |
| Ad blocking | Actor-dependent | Yes (25+ domains) |
| Custom delay | Yes | Yes |
| wait_for selector | Actor-dependent | Yes (up to 15s) |
| Custom JavaScript | Yes (full actor code) | Yes (2KB inline) |
| Element selector | Actor-dependent | Yes (CSS selectors) |
| Retina (2x/3x) | Actor-dependent | Yes (up to 3x) |
| HTTP Basic Auth | Actor-dependent | Yes (with API key) |
| Proxy rotation | Yes | No |
| Residential proxies | Yes (paid) | No |
| Scheduled runs | Yes | No (use cron + curl) |
| Dataset storage | Yes | No |
Common Screenshot Patterns — Without the Actor Infrastructure
Single Screenshot (Apify actor call)
// Apify approach — requires account, client, actor invocation
const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('apify/screenshot-url').call({
url: 'https://example.com',
fullPage: false,
});
Same Result (Direct API)
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&format=png" -o screenshot.png
Full Page + PDF (no actor credits consumed)
# Full page PNG
curl "https://hermesforge.dev/api/screenshot?url=https://docs.example.com&full_page=true&format=png" -o docs.png
# PDF for archiving
curl "https://hermesforge.dev/api/screenshot?url=https://docs.example.com&format=pdf&full_page=true" -o docs.pdf
Dark Mode Screenshot
curl "https://hermesforge.dev/api/screenshot?url=https://github.com&dark_mode=true&format=webp" -o github-dark.webp
JavaScript Integration (fetch)
const params = new URLSearchParams({
url: 'https://example.com',
width: '1280',
height: '800',
format: 'webp',
dark_mode: 'true'
});
const resp = await fetch(`https://hermesforge.dev/api/screenshot?${params}`);
const blob = await resp.blob();
Python Integration
import requests
resp = requests.get('https://hermesforge.dev/api/screenshot', params={
'url': 'https://example.com',
'format': 'png',
'full_page': 'true',
'width': '1440'
})
with open('screenshot.png', 'wb') as f:
f.write(resp.content)
Batch Screenshots Without an Actor
Apify's strength is orchestrating runs at scale. For batch screenshot jobs, you can replicate that with a simple loop:
#!/bin/bash
# Batch screenshots — no Apify account needed
URLS=(
"https://example.com"
"https://github.com"
"https://news.ycombinator.com"
)
for url in "${URLS[@]}"; do
slug=$(echo "$url" | sed 's|https\?://||; s|/|-|g')
curl -s "https://hermesforge.dev/api/screenshot?url=${url}&format=webp" \
-o "screenshots/${slug}.webp"
echo "Captured: $slug"
sleep 2 # respect rate limits
done
Or in Python with the async endpoint for higher throughput:
import requests, time
urls = [
"https://example.com",
"https://github.com",
"https://news.ycombinator.com",
]
for url in urls:
resp = requests.post('https://hermesforge.dev/api/screenshot/async',
json={'url': url, 'format': 'webp'})
job_id = resp.json()['job_id']
print(f"Queued {url} → job {job_id}")
When to Use Which
Apify is better if you need: - Web scraping and structured data extraction (not just screenshots) - Proxy rotation and residential IP access - Scheduled, monitored runs with datasets - Complex multi-step browser automation (forms, login flows, SPAs) - An ecosystem of pre-built actors for specific sites - Team collaboration on scraping workflows
This free alternative is better if you need: - Screenshots without platform overhead - Testing screenshot parameters without spending actor credits - Simple URL-to-image conversion in side projects - Embedding screenshots in apps without an Apify dependency - PDF export without configuring a custom actor - Immediate integration with a single HTTP endpoint
Pricing Comparison
| Tier | Apify | This API |
|---|---|---|
| Free | $5/month credits (expires) | Unlimited (2/min, no key) |
| Free with account | ~400 actor compute units/month | 50 requests/day (free key) |
| Entry paid | $49/month | $4 / 30 days |
| Growth | $149/month | $9 / 30 days |
Apify is subscription-based with compute credits. This API uses one-time purchasing — pay for 30 days when you need it. No recurring charges, no credit expiry.
Getting Started
No setup required:
https://hermesforge.dev/api/screenshot?url=https://example.com&format=webp
Test parameters in the interactive screenshot tool, then integrate when ready.
For higher volume, get a free API key — 50 requests/day at no cost.