Bulk Image Watermark, Resize & Convert to WebP/AVIF
Pricing
$2.00 / 1,000 processed images
Bulk Image Watermark, Resize & Convert to WebP/AVIF
Bulk watermark, resize and convert product images: text or logo watermark (9 positions or tiled), Amazon/Shopify/Instagram/OG presets, pad or crop, WebP, AVIF, JPG, PNG, metadata stripped. URLs or Google Sheet in, download links out.
Pricing
$2.00 / 1,000 processed images
Rating
0.0
(0)
Developer
Fast Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Bulk Image Watermark, Resize & Convert (WebP / AVIF / JPG / PNG)
Watermark, resize and convert hundreds of product and marketing images in one run. Paste image URLs (or link a Google Sheet), choose a text or logo watermark, a size preset (Amazon, Shopify, Instagram, Open Graph, square 1000/2000 or custom) and an output format (WebP, AVIF, JPG, PNG). You get one row per image with a public download link, the new size in pixels and bytes, and how much smaller the file got.
$2 per 1,000 images ($0.002 each). Failed downloads and unsupported files are free.
What it does
- 🏷️ Watermark: your text (font size, color, opacity 0–1, auto-outline for readability) or your logo PNG (scaled to a % of the image width), in 9 positions (top/center/bottom × left/center/right) or tiled diagonally over the whole image, with a margin in pixels
- 📐 Resize presets:
square-1000,square-2000,amazon-2000(forced pure-white background),shopify-2048,instagram-1080,og-1200x630, orcustomwidth × height - ✂️ Fit modes: pad (whole product visible, fill with a background color or transparent – the marketplace standard), cover (fill and crop), contain (fit inside, no padding). Optional enlarging of small images
- 🔄 Convert to WebP, AVIF, JPG or PNG with a quality setting; transparent images are flattened onto your background color for JPG
- 🧹 Strip metadata (EXIF, XMP, GPS location, camera data) by default; the color profile is kept so colors stay correct; EXIF rotation is applied to the pixels
- 📄 Google-Sheets-friendly input: a list of
{url, name}objects or a shared Google Sheet / CSV link withurlandname(orsku) columns – the name becomes the file name, e.g.SKU-1001.webp - 📦 Results are stored in the run's key-value store with a public URL per image, ready for Shopify/WooCommerce imports, Google Merchant feeds or your CDN
Who it's for: e-commerce sellers preparing product images for Amazon, Shopify, WooCommerce, eBay or Etsy; marketing teams branding social and blog images; agencies and photographers protecting previews with a watermark; developers who need image processing in an n8n/Make/Zapier or AI-agent workflow without running their own server.
Why this actor: comparable image actors in the Apify Store charge $5–$15 per 1,000 images and usually do only one thing (convert or resize or watermark). This one does all three in a single pass for $2 per 1,000, supports AVIF, takes a Google Sheet as input, and never charges for images that fail.
Input
| Field | Default | Description |
|---|---|---|
imageUrls | 2 sample images | Direct links to JPG, PNG, WebP, AVIF, GIF (first frame), TIFF or BMP images |
images | – | Optional [{"url": "...", "name": "SKU-1001"}]; name becomes the file name |
sheetCsvUrl | – | Google Sheet shared as "Anyone with the link can view" (normal link is fine) or any CSV URL, with a url column and optional name/sku column |
watermarkType | text | text, logo or none |
text | © YourBrand.com | Watermark text (\n for a second line) |
logoUrl | – | Logo image URL (PNG with transparency recommended) |
position | bottom-right | top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right, tile |
opacity | 0.6 | 0–1 |
fontSize | 0 (auto) | Text size in output pixels; auto ≈ 4.5 % of the image size |
textColor | #FFFFFF | Hex or color name |
margin | 24 | Distance to the edge in pixels |
logoScale | 20 | Logo width in % of the image width |
resizePreset | square-1000 | none, square-1000, square-2000, amazon-2000, shopify-2048, instagram-1080, og-1200x630, custom |
width / height | – | For custom; one side alone keeps the aspect ratio |
fit | pad | pad, cover or contain |
backgroundColor | #FFFFFF | Padding color, or transparent (WebP/AVIF/PNG) |
upscale | true | Enlarge images smaller than the target size |
outputFormat | webp | webp, avif, jpg, png |
quality | 82 | 1–100 for WebP/AVIF/JPG (WebP 100 = lossless) |
stripMetadata | true | Remove EXIF/XMP/GPS |
outputPrefix | – | Prefix for every file name, e.g. summer-sale |
maxFileSizeMb | 25 | Larger source files are skipped (free) |
Example – logo watermark, Amazon size, JPG, names from your SKU list:
{"images": [{ "url": "https://example.com/photos/IMG_4711.jpg", "name": "SKU-1001" },{ "url": "https://example.com/photos/IMG_4712.png", "name": "SKU-1002" }],"watermarkType": "logo","logoUrl": "https://example.com/logo.png","position": "bottom-right","opacity": 0.5,"logoScale": 15,"resizePreset": "amazon-2000","fit": "pad","outputFormat": "jpg","quality": 85}
Output
One dataset row per image. Real example from a test run with the default input (text watermark, square-1000, WebP):
{"sourceUrl": "https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/fruits.jpg","name": null,"fileName": "fruits.webp","url": "https://api.apify.com/v2/key-value-stores/8mF0CqzHxkmNpT8ly/records/fruits.webp?signature=hiRt3ovVTOzujq7Jd8Qy","width": 1000,"height": 1000,"format": "webp","sizeBytes": 75810,"originalSizeBytes": 82429,"savedPercent": 8,"originalWidth": 512,"originalHeight": 480,"originalFormat": "jpg","status": "ok","error": null}
A failed image looks like this (not charged):
{ "sourceUrl": "https://example.com/missing.jpg", "fileName": null, "url": null, "status": "error", "error": "HTTP 404 when downloading (image not found)" }
| Field | Meaning |
|---|---|
url | Public link to the processed image (works without an Apify token) |
fileName | Key in the run's default key-value store |
width, height, format | Output image |
sizeBytes, originalSizeBytes, savedPercent | File size before/after; negative when small images were enlarged |
status | ok (charged) or error (free) with the reason in error |
The dataset's Overview view shows a preview thumbnail of every processed image. All files are also listed under the run's key-value store.
Pricing
Pay per event: $0.002 per successfully processed image ($2 per 1,000), plus the small Apify platform start fee. Failed downloads, non-image URLs and files over the size limit cost nothing. Set a maximum cost per run in the run options and the actor stops cleanly when it is reached. 512 MB–1 GB of memory is enough; images up to 80 megapixels are supported.
Use via API, n8n, Make or AI agents
API (synchronous, returns the dataset rows):
curl -X POST "https://api.apify.com/v2/acts/fast_data_asap~bulk-image-watermark-resize/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrls":["https://example.com/product.jpg"],"watermarkType":"text","text":"© MyShop","resizePreset":"square-2000","outputFormat":"webp"}'
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("fast_data_asap/bulk-image-watermark-resize").call(run_input={"sheetCsvUrl": "https://docs.google.com/spreadsheets/d/<your-sheet-id>/edit","watermarkType": "text", "text": "© MyShop", "position": "tile", "opacity": 0.25,"resizePreset": "shopify-2048", "outputFormat": "avif",})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["status"], row["fileName"], row["url"])
n8n / Make / Zapier: use the Apify node/app, action "Run actor", actor fast_data_asap/bulk-image-watermark-resize, then map url from the dataset items into your shop, CMS or cloud storage.
MCP (Claude, Cursor, other AI agents): add https://mcp.apify.com?tools=fast_data_asap/bulk-image-watermark-resize as an MCP server and let your agent prepare product images on demand.
FAQ
Does AVIF work? Yes, AVIF encoding is built in (Pillow with libavif). AVIF files are typically 20–50 % smaller than WebP at similar quality but take a bit longer to encode.
Can I use Google Drive or Dropbox images? Yes, if the link downloads the file itself (a direct/raw link), not an HTML preview page.
Will my Google Sheet work? Share it as "Anyone with the link can view" and paste the normal link; the actor reads it as CSV. Columns named url (or image, link) and name (or sku, filename) are detected automatically.
How long are the files kept? Like every Apify run storage: according to your plan's data retention (unnamed storages are typically kept 7 days). Download or copy them to your own storage for permanent use.
Are my images stored anywhere else? No. Images are only downloaded into the run's container and saved to your own run's key-value store.