Bulk-Generate Listings for Free with the Gemini API Free Tier

If you run a DTC catalog and you are still pasting each product into the Gemini chat window one at a time, you are using a free tool the most expensive way possible. The strongest free lever is the API key, because it lets a script feed the model a batch of products and run unattended.

Why the free tier is the strongest free lever

The chat UI handles one conversation at a time, and the human cost of copy-paste dwarfs the model itself. What is genuinely free and scales is the API key from Google AI Studio.

Getting one needs no card: sign in to Google AI Studio, click Get API key, and you have a string in seconds.

One caveat up front. Google has been tightening default API-key scopes recently, so a freshly created key may ship with limited endpoints or referrer restrictions. After you create it, open the key settings and confirm the current scopes rather than discovering a 403 after the script is already running.

How much you actually get, and why not to trust the headline

The official docs put the Gemini 2.5 Flash / Flash-Lite free tier at roughly 1,500 requests per day (RPD), about 10 to 15 requests per minute (RPM), with generous tokens-per-minute.

The official cap and the real-world cap are different animals. Plenty of accounts report effective RPD well under that headline, some closer to 250, and it seems to vary by region and whether the account is verified. Treat 1,500 as the ceiling, plan against whatever your own account actually delivers, and do not schedule a full day at the official number.

The Pro model free tier is tight, around 50 RPD, so it is not a bulk tool. Stay on the Flash family for catalog work.

Quotas reset at midnight Pacific, so an overnight run lands neatly on a fresh day’s allowance.

TierApprox RPDApprox RPMBest for
2.5 Flash-Lite freeofficial ~1,500 (real-world often lower)~15Short descriptions, bullets, titles, high volume
2.5 Flash freeofficial ~1,500 (real-world often lower)~10-15Long descriptions, multilingual catalog
2.5 Pro free~50tightOccasional polish, not bulk
Paid Batch APImeteredasync queueTens of thousands, with an SLA

Clear up a common confusion: Gemini’s dedicated Batch API is paid-only. The free tier has no true batch endpoint. What we mean by free batch is your own loop throttled against the free RPD/RPM, not the async queue. Different things, do not mix them up.

The skeleton of a script

The idea is plain: read the product list, pack 5 to 10 products into each request, throttle to roughly a dozen calls a minute, and write results to disk. Packing several products per call is the trick. RPD counts requests, so one call returning 10 rows turns 1,500 requests into tens of thousands of drafts in theory.

import time, json
import google.generativeai as genai

genai.configure(api_key="YOUR_FREE_KEY")
model = genai.GenerativeModel("gemini-2.5-flash-lite")

products = json.load(open("products.json"))   # your catalog
BATCH = 8          # 8 products per request
DELAY = 5          # gap between calls, throttles to about 12 RPM

results = []
for i in range(0, len(products), BATCH):
    chunk = products[i:i + BATCH]
    prompt = build_prompt(chunk)   # copy template lives in linked guides
    try:
        resp = model.generate_content(prompt)
        results.append(resp.text)
    except Exception as e:
        print("limited or failed, backing off:", e)
        time.sleep(60)            # on a rate-limit, back off a minute and resume
    time.sleep(DELAY)

json.dump(results, open("listings.json", "w"), ensure_ascii=False)

A rate-limit raises an exception, so the except block backs off for a minute and continues instead of crashing. Park it on an always-on machine or a cron job and let it finish overnight.

What goes into build_prompt, how to force structured output, and how to tune copy quality is out of scope here. That is the copywriting job, covered in how to write Amazon listing copy and generating Shopify product descriptions. This piece is only the plumbing.

Turning RPD into output

At the official 1,500 RPD with 8 products per call, that is theoretically 12,000 drafts a day. Remember the caveat though: real-world throughput may be half that or less.

Plan conservatively against a measured 300 RPD: 300 calls times 8 products is 2,400 drafts a day, at zero cost. For a small or mid-size catalog, that volume already covers a bulk refresh.

On throttling, a DELAY of 5 seconds is about 12 RPM, sitting inside the free tier’s 10 to 15 RPM band. Push it harder and you hit 429s constantly, which ends up slower.

Privacy caveats and when to pay

The free tier has a cost worth knowing: free-tier inputs may be used to improve Google products, which can mean training. The paid tier explicitly excludes training. So anything sensitive, such as unreleased products, customer data, or internal margins, should not go through the free tier.

When to upgrade:

  • Volume is reliably in the tens of thousands and you are on a deadline that free-tier throttling cannot meet. Move to the paid Batch API for its async queue and higher throughput.
  • Data is sensitive and must stay out of training. Use the paid tier.
  • You need a dependable SLA and cannot risk a midnight throttle. Use the paid tier.

Until then, a free key plus one script is the highest-leverage starting point for a small catalog operation. Get the plumbing working first; negotiate paid tiers once the volume is actually there.

Related Articles