AI Image Generator & Bulk Editor – Nano Banana, GPT Image
Pricing
from $3.00 / 1,000 image generateds
AI Image Generator & Bulk Editor – Nano Banana, GPT Image
AI image generator and bulk editor with Nano Banana (Gemini 2.5 Flash Image), Nano Banana Pro and GPT Image: text-to-image from prompts, background swap, restyle, product photos and variations from URLs, CSV or datasets. No API key.
Pricing
from $3.00 / 1,000 image generateds
Rating
0.0
(0)
Developer
Cemal Atakli
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Bulk AI Image Editor – Nano Banana & GPT Image, No API Key
Edit or generate images in bulk with Nano Banana (Google Gemini 2.5 Flash Image), Nano Banana 2 / Pro (Gemini 3 image models) and GPT Image (OpenAI). Swap product-photo backgrounds, restyle photos, create lifestyle scenes, make variations or generate new images from text, for hundreds of images at once from a list of URLs, a CSV / Google Sheet or an Apify dataset.
Each result is saved as a PNG (or JPEG/WebP) with a public link, and every image gets one dataset row: input image, prompt, result URL, size and model cost. You can export it as CSV/Excel or send it to Google Sheets.
No API key needed. The model is called through Apify's own OpenRouter Actor with your run's Apify token.
$0.003 per saved image + model cost (Nano Banana is about $0.039 per image). Failed images and refusals are free.
How you pay (two parts, both on your Apify bill)
- This Actor's fee: $0.003 per image saved (plus a $0.00005 start fee). Images that fail to download, model errors and safety refusals are not charged.
- Model cost for each call, billed by Apify to your Apify account through Apify's OpenRouter Actor (
apify/openrouter) at OpenRouter's prices. Approximate costs per image on paid plans: Nano Banana (Gemini 2.5 Flash Image) ~$0.039, Nano Banana 2 ~$0.04-0.08, Nano Banana Pro ~$0.13 (1K/2K) to ~$0.24 (4K), GPT Image models are priced per token by OpenAI. Each row shows the exactmodelCostUsd. Note: Apify bills OpenRouter usage on the free plan at 10x the OpenRouter price, so this Actor is best on a paid Apify plan.
To cap your spend, set a maximum cost per run in the run options. The Actor stops cleanly before it goes over.
What people use it for
- Product photo background swap: put every product of a catalogue on a white studio backdrop, a marble counter, a beach or a seasonal scene.
- Lifestyle and ad creatives: 3 prompts × 50 products = 150 scene variants in one run.
- Restyle: watercolor, flat illustration, anime, vintage film, brand color palette.
- E-commerce listings: consistent backgrounds and aspect ratios (1:1, 4:5, 16:9) for Etsy, Shopify, Amazon or marketplace feeds.
- Text-to-image in bulk: a CSV with a
promptcolumn (or{{title}}placeholders) produces one image per row, e.g. blog headers, social posts, mockups or thumbnails. - Scraper + editor pipelines: run a product scraper, pass its dataset (or
{{resource.defaultDatasetId}}in an integration), and every product image is edited automatically.
Input
| Field | Meaning |
|---|---|
prompts | One or more prompts. With input images: each image × each prompt. Without: each prompt generates images. {{column}} placeholders are filled from CSV/dataset rows |
imageUrls | Input image URLs (JPG, PNG, WebP, GIF...) |
datasetIds | Apify datasets with image URLs (column auto-detected: imageUrl, image, photo, thumbnail, displayUrl, images...) |
fileUrls | CSV / XLSX / JSON files (Google Sheets, Drive, Dropbox, GitHub links work) |
items | Or paste JSON rows like {"imageUrl": "...", "prompt": "..."} |
imageColumn / promptColumn | Optional column names. A row's own prompt column overrides prompts |
referenceImageUrls | Up to 4 images sent with every job: logo, style or background reference |
model / customModel | Nano Banana (default), Gemini 3.1 Flash (Lite) Image, Nano Banana 2 / 2.1 / Pro, GPT-5 Image (mini), GPT-5.4 Image 2, or any OpenRouter image model ID |
aspectRatio, imageSize | 1:1 … 21:9; 1K/2K/4K for Gemini 3 models |
imagesPerPrompt | 1-4 variations per job |
outputFormat | PNG (default), JPEG, WebP |
maxImages, concurrency | Limits (default 20 images, 4 in parallel) |
Example: white background for a product list
{"imageUrls": ["https://example.com/products/mug.jpg", "https://example.com/products/lamp.jpg"],"prompts": ["Replace the background with a clean white studio backdrop and a soft natural shadow. Keep the product exactly as it is."],"aspectRatio": "1:1"}
Example: 3 scenes per product from a Google Sheet
{"fileUrls": ["https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit"],"imageColumn": "photo","prompts": ["Place this {{title}} on a sunlit wooden kitchen table, photorealistic","Place this {{title}} on a marble bathroom counter with plants","Place this {{title}} in a cozy Christmas scene with warm lights"],"aspectRatio": "4:5","maxImages": 300}
Example: text-to-image from prompts
{ "prompts": ["Flat illustration of a robot watering plants, pastel colors"], "imagesPerPrompt": 4, "aspectRatio": "16:9" }
Output
One row per image. The Images view shows the input and result as thumbnails.
{"jobIndex": 1,"imageUrl": "https://api.apify.com/v2/key-value-stores/<run store>/records/img-00001-place-this-exact-mug-on-a-sunlit-2c41a9.png","inputImageUrl": "https://upload.wikimedia.org/.../1280px-Coffee_Mug_%28Unsplash%29.jpg","prompt": "Place this exact mug on a sunlit wooden kitchen table ...","variant": 1,"model": "google/gemini-2.5-flash-image","width": 1344, "height": 768, "format": "png", "bytes": 1650231,"promptTokens": 1301, "completionTokens": 1290, "modelCostUsd": 0.0393,"status": "ok", "error": null}
Failed jobs have status: "error" and a readable error (e.g. Input image: HTTP 404, The model returned no image (safety refusal)), and they are not charged. The OUTPUT record has the run summary: images, errors, tokens and total model cost.
Pricing compared
| This Actor | Typical Nano Banana Actors on Apify | |
|---|---|---|
| Fee per image | $0.003 + model cost (~$0.042 total with Nano Banana) | $0.04 to $0.26 all-in |
| API key | not needed | some need your own key |
| Batch input | URLs, CSV / Google Sheets, Apify datasets, JSON | usually one prompt / a few URLs |
Prompt × image matrix, {{column}} placeholders | yes | rarely |
| Models | Nano Banana, Nano Banana 2 / Pro, GPT Image, any OpenRouter image model | usually one |
| Failed images / refusals | free | varies |
Responsible use: important
- Only edit images you own or have the right to edit (your product photos, licensed or generated images).
- No likeness / deepfake edits of real people. Do not use this Actor to create or alter images of real, identifiable people without their consent, to impersonate anyone, or to make sexual, deceptive or harmful content. The model providers' usage policies (Google, OpenAI, OpenRouter) apply, and prohibited requests are refused by the models.
- Images generated by Gemini models carry Google's invisible SynthID watermark.
Use with AI agents (Apify MCP)
Add the Actor to Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server. An agent can pass image URLs plus a prompt and get public image links back, for example: "Put these 10 product photos on a white background in 1:1 and give me the links."
FAQ
Do I need a Google, OpenAI or OpenRouter key? No. The Actor uses your run's Apify token to call Apify's OpenRouter Actor, and the model cost appears on your Apify bill.
Which model should I use? Start with Nano Banana (google/gemini-2.5-flash-image), which is fast, cheap and good at keeping the product identical. Use Nano Banana Pro for the best detail, text rendering and 2K/4K output, and GPT Image for OpenAI's style.
How long are the result links valid? Images are stored in the run's key-value store and follow your Apify data retention. Download them or copy them to your own storage if you need them long-term.
Can I combine two images? Yes. Add the second image as a reference image and describe the combination ("put the product from the first image on the background of the second").
Why did a job fail without charge? The input could not be downloaded or read, the model returned no image (often a safety refusal), or the model API failed after 4 retries. Note that model tokens already used by a refused call can still be billed by OpenRouter.
How fast is it? About 5-15 s per image per parallel slot. With the default 4 parallel requests, 100 images take about 5 minutes.