Bulk Image Watermark, Resize & Convert to WebP/AVIF avatar

Bulk Image Watermark, Resize & Convert to WebP/AVIF

Pricing

$2.00 / 1,000 processed images

Go to Apify Store
Bulk Image Watermark, Resize & Convert to WebP/AVIF

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

Fast Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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, or custom width × 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 with url and name (or sku) 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

FieldDefaultDescription
imageUrls2 sample imagesDirect 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
watermarkTypetexttext, logo or none
text© YourBrand.comWatermark text (\n for a second line)
logoUrl–Logo image URL (PNG with transparency recommended)
positionbottom-righttop-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right, tile
opacity0.60–1
fontSize0 (auto)Text size in output pixels; auto ≈ 4.5 % of the image size
textColor#FFFFFFHex or color name
margin24Distance to the edge in pixels
logoScale20Logo width in % of the image width
resizePresetsquare-1000none, square-1000, square-2000, amazon-2000, shopify-2048, instagram-1080, og-1200x630, custom
width / height–For custom; one side alone keeps the aspect ratio
fitpadpad, cover or contain
backgroundColor#FFFFFFPadding color, or transparent (WebP/AVIF/PNG)
upscaletrueEnlarge images smaller than the target size
outputFormatwebpwebp, avif, jpg, png
quality821–100 for WebP/AVIF/JPG (WebP 100 = lossless)
stripMetadatatrueRemove EXIF/XMP/GPS
outputPrefix–Prefix for every file name, e.g. summer-sale
maxFileSizeMb25Larger 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)" }
FieldMeaning
urlPublic link to the processed image (works without an Apify token)
fileNameKey in the run's default key-value store
width, height, formatOutput image
sizeBytes, originalSizeBytes, savedPercentFile size before/after; negative when small images were enlarged
statusok (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 ApifyClient
client = 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.