Bulk LLM Runner: Run ChatGPT, Claude, Gemini & DeepSeek Prompts in Bulk or on Every Excel Row (No API Key)
Run hundreds of prompts at once, or ChatGPT-style AI on every row of an Excel or CSV file, across GPT, Claude, Gemini, Perplexity, DeepSeek, Qwen and 350+ models, with web search, JSON columns and side-by-side model comparison. No API key.
Bulk LLM Runner replaces copy-pasting prompts into ChatGPT one by one, and pasting spreadsheet rows into an AI chat and copying answers back by hand. Upload a spreadsheet or paste prompts, pick a model, and get a clean table back. Model usage is billed through your Apify account, so there is no OpenAI, Anthropic, Google or Perplexity key to set up. This repository documents the Apify Actor and gives working Python, JavaScript and cURL examples for calling it through the API.
- Run it in the browser: fayoussef/bulk-llm-runner on Apify
- Guide and docs: automationbyexperts.com/apify/bulk-llm-runner
- Actor ID for the API:
fayoussef/bulk-llm-runner
- Run a list of prompts in bulk: 10, 100 or 1,000 prompts, up to 8 in parallel, one answer per row.
- Run AI on every spreadsheet row: upload Excel, CSV or a Google Sheets link, write one prompt with
{{Column}}placeholders, and get your file back with the answers as new columns. - Answer columns named for you: ask in plain words and the answers land in clean, consistent columns.
- Yes / no checklists per row, with evidence and a source link for every answer.
- Live web search for current facts and sources.
- Compare ChatGPT vs Claude vs Gemini side by side on the same prompts.
- Read PDFs, web pages and images, and return strict JSON when you need it.
One row per prompt (or per spreadsheet row):
| Field | Description |
|---|---|
prompt / response |
The prompt and the model answer |
| Answer columns | Named columns extracted from the answer |
model |
Model that answered |
cost_usd |
What the call cost |
error |
Error, if a call failed |
| Spreadsheet columns | Your original columns, when you uploaded a file |
| Excel file | Your spreadsheet back with the AI answers added |
The main input fields:
| Field | What it does |
|---|---|
prompts |
One prompt per line, or a template with {{Column}} placeholders |
spreadsheet_file / sheet_name |
Excel, CSV or Google Sheets input |
checklist_items |
Items to answer yes, no or unknown for each row |
model / custom_model |
GPT, Claude, Gemini, DeepSeek, Qwen, or any model id |
enable_web_search |
Search the web before answering |
compare_models |
Extra models to run on the same prompts |
response_format / json_schema |
Plain text or structured JSON |
image_urls |
Images for vision models |
- Data enrichment: add company, contact or product facts to every row of a spreadsheet.
- SEO product descriptions in bulk.
- Classify customer reviews, tickets or survey answers.
- Lead research with web search and source links.
- Model evaluation: compare GPT, Claude and Gemini on your own prompts.
Ready-made examples you can run in one click:
- Write SEO product descriptions in bulk: Feed it one line per product and get back a structured description for each: a short benefit led paragraph, a set of feature bullets and a meta description. Output arrives as JSON columns you can paste straight into a product feed. Runs on GPT, Claude or Gemini without an OpenAI, Anthropic or Google API key of your own.
- Open the Actor on Apify and click Try for free.
- Paste your prompts, or upload a spreadsheet and write one prompt with
{{Column}}placeholders, then pick a model. - Click Start, then download the table or your spreadsheet with answers from the Output tab.
- Create a free Apify account and copy your API token from Settings > Integrations.
- Set it as an environment variable:
export APIFY_TOKEN=...(PowerShell:$env:APIFY_TOKEN="..."). - Edit
input.jsonand run one of the examples below.
pip install apify-client
python examples/python/run_actor.pyimport os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("fayoussef/bulk-llm-runner").call(run_input={'prompts': ['Product: Patagonia Nano Puff insulated jacket. Write a 60 word benefit '
'led description, 4 feature bullets, and a 155 character meta '
'description.',
'Product: Hydro Flask 32oz wide mouth water bottle. Write a 60 word '
'benefit led description, 4 feature bullets, and a 155 character meta '
'description.',
'Product: Anker 737 140W USB-C power bank. Write a 60 word benefit led '
'description, 4 feature bullets, and a 155 character meta description.',
'Product: Brooks Ghost 16 neutral running shoe. Write a 60 word benefit '
'led description, 4 feature bullets, and a 155 character meta '
'description.'],
'system_prompt': 'You are a senior ecommerce SEO copywriter. Write in plain, concrete '
'language. Never invent specifications you were not given. Return '
'the keys description, bullets and meta_description.',
'model': 'anthropic/claude-haiku-4.5',
'response_format': 'json_object',
'enable_web_search': False,
'temperature': 60,
'concurrency': 4})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)npm install apify-client
node examples/javascript/run_actor.mjsimport { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fayoussef/bulk-llm-runner").call({
"prompts": [
"Product: Patagonia Nano Puff insulated jacket. Write a 60 word benefit led description, 4 feature bullets, and a 155 character meta description.",
"Product: Hydro Flask 32oz wide mouth water bottle. Write a 60 word benefit led description, 4 feature bullets, and a 155 character meta description.",
"Product: Anker 737 140W USB-C power bank. Write a 60 word benefit led description, 4 feature bullets, and a 155 character meta description.",
"Product: Brooks Ghost 16 neutral running shoe. Write a 60 word benefit led description, 4 feature bullets, and a 155 character meta description."
],
"system_prompt": "You are a senior ecommerce SEO copywriter. Write in plain, concrete language. Never invent specifications you were not given. Return the keys description, bullets and meta_description.",
"model": "anthropic/claude-haiku-4.5",
"response_format": "json_object",
"enable_web_search": false,
"temperature": 60,
"concurrency": 4
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Runs the Actor and returns the dataset items in one synchronous call:
curl -X POST "https://api.apify.com/v2/acts/fayoussef~bulk-llm-runner/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d @input.jsonSynchronous calls time out after 300 seconds. For larger runs use the client libraries above, or start the run with POST /v2/acts/fayoussef~bulk-llm-runner/runs and read the dataset when it finishes.
One record, from sample-output.json. Export the full dataset as JSON, CSV, Excel or HTML from the Apify Console, or read it through the API as shown above.
{
"prompt": "Write a 60-word product description for a waterproof hiking backpack. Return title, description and 5 keywords.",
"model": "anthropic/claude-haiku-4.5",
"title": "StormGuard 30L Waterproof Hiking Backpack",
"description": "Built for wet trails and sudden downpours...",
"keywords": [
"waterproof backpack",
"hiking daypack",
"rain-proof rucksack",
"30L backpack",
"outdoor gear"
],
"tools_used": [
"web_search"
],
"cost_usd": 0.0012,
"error": null
}- Schedule it to run the same prompts on new data every day.
- Send results to Google Sheets, Airtable, Slack, a webhook, Make, Zapier or n8n with Apify integrations.
- Use it from AI agents through the Apify MCP server.
Upload the file, write one prompt with {{Column name}} placeholders, pick a GPT model and run. You get your file back with the answers as new columns.
Yes. Model usage is billed through your Apify account.
Hundreds or thousands, up to 8 in parallel.
Yes. Add extra models in compare_models and get the answers side by side.
Yes. Turn on web search and any model can look up current facts, with source links.
Yes. Ask for the fields you want, or supply a JSON schema for strict output.
Yes, through Apify integrations or the API.
Pay per use on Apify: you are charged per event (results produced), with no subscription to this Actor. The current rate is shown on the Actor's Store page. Free-plan runs are capped; an Apify plan unlocks full runs.
- Bulk AI Image Generator: Nano Banana & GPT Image
- AutoTrader.ca Scraper: Canada Car Listings, VIN & Dealers
- Spitogatos.gr Scraper: Greek Real Estate Listings
- Canada411 Scraper: Phone Numbers & Addresses
- Wallapop Scraper: Spain, France, Italy, Portugal & UK
- AutoScout24 Scraper: European Car Listings & Dealer Phones
- Full catalog of our web scraping APIs
Questions, bugs or a custom tool: open an issue here, use the Issues tab on the Apify page, or email youssefarhan24@gmail.com.
The example code in this repo is MIT licensed. The Actor itself runs on Apify under its own terms.