Image Upscaler API — Upscale Images 2x/4x, Pay per Image
Pricing
from $12.00 / 1,000 image upscaleds
Image Upscaler API — Upscale Images 2x/4x, Pay per Image
Upscale images 2x or 4x with AI super-resolution: send one or many image URLs, get for each a dataset item with the upscaled image URL, width and height. Increase image resolution or enhance low-res photos in batch, no API key, pay per image.
Pricing
from $12.00 / 1,000 image upscaleds
Rating
0.0
(0)
Developer
Sherwood
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Image Upscaler API — batch 2x/4x, pay per image
Give it one image URL or a thousand, or the dataset of another Actor, and get every image upscaled 2x, 4x or to a target size in pixels with an AI super-resolution model (SeedVR2), one dataset item per image: the upscaled file URL, its width and height, or a clear error. No API key, no GPU, no subscription. $0.012 per image delivered, failures are free.
Built for automation and AI agents: send a list in imageUrls, or a single URL (or a comma-separated string) in imageUrl; every alias (imageUrls, imageUrl, urls, images, startUrls) is merged, nothing is required, and the default input runs on its own so you can see the output shape before sending your own files.
What you get
One item per image, in your dataset:
{"index": 0,"inputUrl": "https://example.com/product-small.jpg","outputUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/upscaled-0000.jpg","width": 2048,"height": 2048,"megapixels": 4.19,"scale": "2","factor": 2,"format": "jpg","model": "fal-ai/seedvr/upscale/image","durationMs": 9120,"status": "ok","error": null}
A failed image (unreachable URL, not an image, over 25 MB) comes back with "status": "error" and the reason in error. It is never charged.
An image already large enough for targetLongEdge or skipIfLongEdgeAtLeast comes back with "status": "skipped" and its original URL in outputUrl, so the next step of a workflow still gets a usable file. It is never charged either.
Transparent images, such as cutouts from a background remover, keep their transparency in PNG and WebP output. JPG has no transparency: transparent areas become white.
Use cases
- Upscale e-commerce product photos for listings and marketplaces in bulk.
- Restore blurry, compressed or low-resolution pictures before print.
- Enlarge AI-generated images (Midjourney, Flux, Stable Diffusion) to usable sizes.
- Sharpen thumbnails and avatars pulled from a scraper, in the same workflow.
- Give an AI agent or an n8n / Make / Zapier flow a single call that handles a whole list.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
imageUrls | array | two sample images | Public JPG, PNG or WebP URLs. For a single URL or a comma-separated string, use imageUrl. |
imageUrl, urls, images, startUrls | aliases | — | Merged with imageUrls, duplicates removed. startUrls accepts {"url": "..."} objects. |
datasetId | string | — | Read the image URLs from an Apify dataset instead (see below). |
urlField | string | auto | Field holding the image URL in each dataset item: images[].url, photo.thumbnails[0].url... |
maxImagesPerItem | integer | 1 | Image URLs taken from each dataset item. |
keepFields | array | — | Fields copied from each dataset item into its result, under source (SKU, ASIN, listing URL). |
scale | "2" or "4" | "2" | 2 doubles width and height, 4 quadruples them. |
targetLongEdge | integer | — | Longest side to reach, in pixels, instead of 2x/4x (at most 4x). Images already this large are skipped. |
skipIfLongEdgeAtLeast | integer | — | Skip, without charge, images whose longest side is already this large. |
outputFormat | jpg, png, webp | jpg | PNG and WebP keep transparency. |
maxOutputMegapixels | integer | 16 | Cap on output size; larger results are upscaled to this size instead. 4 MP ≈ 2000×2000. |
maxImages | integer | 100 | Stop after this many images. |
Minimal call:
{ "imageUrls": ["https://example.com/a.jpg", "https://example.com/b.png"] }
Chain it after another Actor
Give datasetId (a dataset ID or name) and the Actor reads the image URLs from its items: the output of a scraper, of Background Remover API or of AI Image Generator. The image field is detected automatically (outputUrl, highResolutionImages, imageUrls, images, displayUrl, thumbnailImage...), or set it with urlField.
{"datasetId": "YOUR_DATASET_ID","urlField": "images[].url","keepFields": ["sku", "url"],"targetLongEdge": 2048}
To run it automatically after another Actor, add it on that Actor's Integrations tab with this input; the platform fills in the dataset of each finished run:
{ "datasetId": "{{resource.defaultDatasetId}}", "outputFormat": "png" }
Each result carries sourceItemIndex, the position of the item it came from, and the fields listed in keepFields, so a spreadsheet or a store import can match every upscaled image with its product.
Pricing
- Image upscaled — $0.012 per image delivered, output up to 4 MP included.
- Extra megapixel — $0.002 per started megapixel above 4 MP (a 4x upscale of a 1000×1000 photo is 16 MP, so 12 extra).
- Failed, unreachable or non-image URLs: free.
Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached; remaining images are reported, not processed.
Via API, n8n, Make or MCP
Call it like any Apify Actor: POST https://api.apify.com/v2/actors/sherwood~image-upscaler-batch/run-sync-get-dataset-items with the JSON input above, or add it as a tool through the Apify MCP server. Results are plain dataset items, so get-dataset-items returns the URLs directly.
Limits
- Input images up to 25 MB each, served over public http(s) URLs.
- Output files live in the run's key-value store and follow your account's data retention.
- Processing time is typically 5 to 25 seconds per image; 4 images are processed in parallel.