Protect every seller with one line in your pipeline
Your sellers' listing photos get scraped to competing platforms — and each seller solves it badly, or asks you to. Watermarking at the platform level turns image protection into a feature you ship once: every upload branded, every tenant configurable, zero image infrastructure on your side.
A typical run
Input
Every listing image across all tenants
Watermark
Seller's shop name + your platform mark, per-tenant config
Output
Branded at ingest — scrapers get advertising, not assets
What unbranded images cost online marketplaces
Scraped listings drain your liquidity
When a rival platform bootstraps its supply by scraping your listings — photos included — your sellers' inventory appears somewhere you don't monetize. Branded images make wholesale scraping self-defeating: every stolen photo carries your marketplace's name.
Sellers ask, and DIY solutions are ugly
Left alone, sellers bolt on mismatched logos with phone apps, and your browse grid turns into a ransom-note collage. A platform-level mark with per-tenant content keeps protection on and the grid coherent.
Image pipelines are undifferentiated heavy lifting
Running Sharp fleets, font rendering, format conversion, and retry logic is real infrastructure — and none of it is your product. One metered API call replaces the pipeline, and usage maps cleanly onto your own tenant billing.

The workflow that sticks
Platforms integrate at ingest: the image-upload service calls the watermark endpoint before writing to the CDN, with per-tenant config (shop name, placement, opacity) from your database. Usage is logged per key, so cost attribution and tenant-level metering fall out for free.
- 1
Add the call at image ingest
One POST between 'seller uploads' and 'CDN stores'. The response is the branded image; originals go to private storage for future reprocessing.
- 2
Template per-tenant config
Store each seller's mark text and placement with their shop settings. Dynamic variables ({filename}, {n}) handle per-image details without per-image code.
- 3
Convert formats in the same hop
Output WebP or AVIF as you watermark — branding and web optimization become one step in the pipeline instead of two services.
- 4
Meter and attribute usage
Every request is logged with status, latency, and size against your key. Map credits to tenants for internal cost attribution or usage-based pricing tiers.
// In the listing-image ingest service
async function brandListingImage(img: Blob, seller: Seller) {
const form = new FormData();
form.append("image", img);
form.append("type", "text");
form.append("text", seller.shopName);
form.append("position", seller.watermark.position ?? "bottom-right");
form.append("opacity", String(seller.watermark.opacity ?? 0.6));
form.append("output_format", "webp");
const res = await fetch("https://apiwatermark.com/api/watermark", {
method: "POST",
headers: { Authorization: `Bearer ${env.WATERMARK_KEY}` },
body: form,
});
return Buffer.from(await res.arrayBuffer()); // → CDN
}FAQ
Online Marketplaces ask us
Should the mark be the seller's brand or the platform's?
+
What latency does this add to uploads?
+
Can sellers opt out or customize placement?
+
How does volume pricing work for platforms?
+
Protect your next batch in minutes
Free up to 100 calls a month. No credit card. Start in the editor or wire up the API.