# Gemini Search Scraper: Gemini Answers, Citations & Sources (`plainrows/gemini-search-scraper`) Actor

Gemini scraper and MCP tool: send prompts, get Google Gemini's answers as JSON: markdown text, the sources Gemini cites (URL, domain, title), cited domains, model. No account, no browser. $0.008 per answer, plus $0.001 per run; empty or failed answers are free.

- **URL**: https://apify.com/plainrows/gemini-search-scraper.md
- **Developed by:** [PlainRows](https://apify.com/plainrows) (community)
- **Categories:** AI, SEO tools, Developer tools
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 gemini answers

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Gemini Search Scraper: Gemini Answers, Citations & Sources

Give it **a list of prompts** and get one row per prompt: **Google Gemini's answer (Markdown) and every source it cites (rank, URL, domain, title)**, plus the cited domains and the model that answered.

A **Gemini scraper alternative**: no browser, no proxies, no CAPTCHAs, no Google account. Prompts run five at a time, 20 to 75 seconds each (measured). **You only pay for prompts that got an answer: $0.008 per answer**, plus $0.001 per run.

**Where the answers come from:** this Actor gets Gemini's answers through a commercial data API that collects them from Gemini. Answers vary with the model, the time and the location, so they can differ from what you see in your own Gemini account.

### Typical uses

- **AI search visibility (GEO / AEO)**: which sites and products does Gemini cite for the prompts your buyers type?
- **Citation research**: `sources` and `citedDomains` show the pages Gemini points to.
- **Answers with sources for your app or agent**: Gemini answers as plain JSON, with the citations kept apart from the text.
- **Weekly reports**: schedule a run and send the rows to Google Sheets, Looker Studio, Slack, n8n, Make or Zapier.

### What you get for each prompt

| Field | Description |
|---|---|
| `prompt` | The prompt asked |
| `answer`, `answerLength` | Gemini's answer as Markdown (paragraphs, lists, tables, links) |
| `sources`, `sourcesCount` | Each cited source: `rank`, `url`, `domain`, `title`, `snippet`, `sourceName`, `publicationDate` (up to 50) |
| `citedDomains` | Domains cited, in order, without duplicates: sources, then links in the answer |
| `model`, `answeredAt` | Gemini model reported by the data source, when it answered |
| `found`, `status`, `message` | `ANSWERED` for a billed row; free rows say why: `EMPTY_ANSWER`, `UNREADABLE`, `REJECTED`, `PROVIDER_ERROR`, `NOT_CHECKED`, `FREE_PLAN_LIMIT`, `FREE_PLAN_DAILY_QUOTA` |
| `country`, `languageCode`, `checkedAt` | Location and language of the answer; when the run started |

Missing values are `null` or empty lists, never guessed. `snippet`, `sourceName` and `publicationDate` are often `null`: the data source does not always fill them.

### Input

```json
{
  "prompts": ["best standing desk for small spaces", "Which CRM do small agencies recommend in 2026?"],
  "country": "US",
  "languageCode": "en"
}
```

- **prompts**: up to 200 prompts per run, 1 to 500 characters each. Each prompt is one answer.
- **country** (default US): US, GB, CA, AU, IE, IN, DE, AT, CH, FR, BE, ES, MX, IT, NL, PT, BR, PL, SE, JP.
- **languageCode** (optional): two-letter code; default is the main language of the country.

### Pricing

Pay per event, no subscription:

- **Gemini answer: $0.008** per prompt that got a non-empty answer, at every Apify plan, free plan included.
- **Actor start: $0.001** per run.

Empty answers, prompts the data source refused or failed, answers that came back in an unexpected format, and prompts not reached (budget or timeout) get a free row with `found: false` and the reason. A Gemini answer can take up to 2 minutes: no prompt starts in the last 2 minutes before the run's timeout, so give long lists a long timeout (the default 1 hour fits about 200 prompts). The run never spends more than the maximum cost you set.

**Free Apify plan:** each run asks the first prompt only, so you can test the output, and only 5 runs per account and UTC day get answers (later runs that day ask nothing); prompts not asked get a free row saying why. A paid Apify plan removes both limits.

### Good to know

- **Answers vary from one run to the next**, even for the same prompt: track trends over several runs, not a single answer.
- On shopping prompts, Gemini can cite Google Shopping product pages: their `url` is a `google.com/search?...` link and their `domain` is `google.com`, not the shop's site.
- Not every answer cites sources: `sources` can be empty (the answer is still billed).
- Unlike ChatGPT answers, Gemini answers from this data source come without web search results, fan-out queries or brand lists: this Actor returns only what the source provides.
- For one table of brand mentions across ChatGPT, Gemini and Google AI Mode, use [AI Visibility Tracker](https://apify.com/plainrows/ai-search-brand-visibility).
- Not affiliated with Google.

### What this is not

- Not the Gemini API: you cannot pick the model, set a system prompt or continue a conversation. One prompt, one fresh answer.
- Not a login-based scraper: no account, no chat history, no personal context.
- Not a rank tracker for Google: for Google results use a SERP tool.

### Run summary

Each run stores a summary in the key-value store (`OUTPUT`): prompts asked, answers billed, empty answers (`promptsEmpty`), unreadable answers (`promptsUnreadable`), and anything skipped because of the free-plan or budget limit.

### Use it from code, automations or AI agents

**API (one call, results returned directly):**

```bash
curl -X POST "https://api.apify.com/v2/acts/plainrows~gemini-search-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"prompts": ["best standing desk for small spaces"]}'
```

**n8n, Make, Zapier:** use the Apify integration, pick `plainrows/gemini-search-scraper`, schedule it and send the rows to Google Sheets or Slack.

**AI agents (MCP tool):** add `https://mcp.apify.com?tools=plainrows/gemini-search-scraper` to Claude, Cursor or any MCP client, then ask "What does Gemini answer to these prompts, and which sites does it cite?".

### FAQ

**Is this a Gemini search API?**
Yes: one call per list of prompts, JSON rows back with the answer and its sources, usable from the Apify API, n8n, Make, Zapier or as an MCP tool.

**How do I see if Gemini cites my site?**
Look for your domain in `citedDomains` (and its position in `sources.rank`).

**Do I pay for empty answers or errors?**
No. Only prompts with a non-empty answer are charged ($0.008), plus $0.001 per run.

### More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

- **SEO and keywords:** [Keyword Search Volume, CPC & Difficulty](https://apify.com/plainrows/keyword-search-volume) · [Keyword Planner Alternative (Bulk Search Volume & CPC)](https://apify.com/plainrows/keyword-planner-alternative) · [Google Keyword Planner API (Google Ads Search Volume & CPC)](https://apify.com/plainrows/google-keyword-planner-api) · [Google Autocomplete & People Also Ask](https://apify.com/plainrows/google-autocomplete-questions) · [Google Trends Explorer](https://apify.com/plainrows/google-trends-explorer) · [Google Trends Keyword Discovery (Rising & Related)](https://apify.com/plainrows/google-trends-keyword-discovery) · [Website Organic Traffic & Top Keywords](https://apify.com/plainrows/domain-seo-overview) · [Competitor Keywords API (Ranked Keywords)](https://apify.com/plainrows/competitor-keywords-api) · [Bulk Website Traffic Checker](https://apify.com/plainrows/website-traffic-checker) · [PPC Competitor Keywords (SpyFu Alternative)](https://apify.com/plainrows/ppc-competitor-keywords) · [Bulk Domain Authority Checker](https://apify.com/plainrows/domain-authority-checker) · [Backlink Checker](https://apify.com/plainrows/backlink-checker) · [Backlink API (Referring Domains & Backlinks Data)](https://apify.com/plainrows/backlink-api) · [Broken Link Checker](https://apify.com/plainrows/broken-link-checker) · [SEO Audit API (On-Page SEO Checker)](https://apify.com/plainrows/seo-audit-api) · [AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode)](https://apify.com/plainrows/ai-search-brand-visibility) · [AI Overview Tracker (Google AI Overview Citations)](https://apify.com/plainrows/ai-overview-tracker) · [Perplexity Search API (Answers & Citations)](https://apify.com/plainrows/perplexity-search-api) · [ChatGPT Search Scraper (Answers & Citations)](https://apify.com/plainrows/chatgpt-search-scraper) · [Google AI Mode API (Answers & Citations)](https://apify.com/plainrows/google-ai-mode-api) · [AI Citations Finder (LLM Mentions in ChatGPT & AI Overviews)](https://apify.com/plainrows/ai-citations-finder) · [Keyword Rank Checker (Google SERP Position)](https://apify.com/plainrows/keyword-rank-checker) · [Google Search API (SERP Scraper & Web Results)](https://apify.com/plainrows/google-search-api) · [Bing Search API (Bing SERP & Web Results)](https://apify.com/plainrows/bing-search-api)
- **Leads and companies:** [Google Maps Scraper](https://apify.com/plainrows/google-maps-businesses) · [Google Maps Email Extractor](https://apify.com/plainrows/google-maps-email-extractor) · [Google Maps Businesses Without Website](https://apify.com/plainrows/google-maps-no-website-leads) · [Yellow Pages Australia Scraper](https://apify.com/plainrows/yellowpages-au-scraper) · [Website Technology Checker](https://apify.com/plainrows/website-tech-stack) · [Website Email Extractor](https://apify.com/plainrows/website-email-extractor) · [Contact Details Scraper (Emails, Phones, Socials)](https://apify.com/plainrows/contact-details-scraper) · [ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby)](https://apify.com/plainrows/ats-job-postings) · [Workday Jobs Scraper](https://apify.com/plainrows/workday-jobs-scraper) · [Greenhouse Jobs Scraper](https://apify.com/plainrows/greenhouse-jobs-scraper) · [Lever Jobs Scraper](https://apify.com/plainrows/lever-jobs-scraper) · [Ashby Jobs Scraper](https://apify.com/plainrows/ashby-jobs-scraper) · [Google Jobs Scraper](https://apify.com/plainrows/google-jobs-scraper) · [Reed.co.uk Jobs Scraper (UK)](https://apify.com/plainrows/reed-jobs-scraper) · [jobs.ch & jobup.ch Jobs Scraper (Switzerland)](https://apify.com/plainrows/jobs-ch-scraper) · [Arbeitsagentur Jobs Scraper (Germany)](https://apify.com/plainrows/arbeitsagentur-jobs-scraper) · [Gupy Jobs Scraper (Brazil)](https://apify.com/plainrows/gupy-jobs-scraper) · [Catho Jobs Scraper (Brazil)](https://apify.com/plainrows/catho-jobs-scraper) · [Vagas.com.br Jobs Scraper (Brazil)](https://apify.com/plainrows/vagas-jobs-scraper) · [Jobs.cz Scraper (Czech Republic)](https://apify.com/plainrows/jobs-cz-scraper) · [Remote Jobs Scraper (Himalayas, RemoteOK, Jobicy)](https://apify.com/plainrows/remote-jobs-aggregator) · [Google Ads Scraper (Transparency Center)](https://apify.com/plainrows/google-ads-transparency) · [Company Registry Lookup (SIRENE, LEI, Brreg)](https://apify.com/plainrows/company-registry-lookup) · [Public Tenders Search (EU TED & UK)](https://apify.com/plainrows/public-tenders-search)
- **E-commerce and travel:** [Amazon Product Search Scraper](https://apify.com/plainrows/amazon-product-search) · [Amazon Keyword Research (Search Volume & Reverse ASIN)](https://apify.com/plainrows/amazon-keyword-research) · [Google Shopping Prices Scraper](https://apify.com/plainrows/google-shopping-prices) · [Google Hotels Prices Scraper](https://apify.com/plainrows/google-hotels-prices) · [Google Hotels Scraper](https://apify.com/plainrows/google-hotels-scraper) · [Tripadvisor Reviews Scraper](https://apify.com/plainrows/tripadvisor-reviews) · [Trustpilot Reviews Scraper](https://apify.com/plainrows/trustpilot-reviews)
- **Marketplaces and classifieds:** [Property Finder Scraper (UAE)](https://apify.com/plainrows/propertyfinder-scraper) · [Redfin Scraper (US Homes for Sale)](https://apify.com/plainrows/redfin-scraper) · [Otomoto Scraper (Polish Car Listings)](https://apify.com/plainrows/otomoto-scraper) · [Otodom Scraper (Poland Property)](https://apify.com/plainrows/otodom-scraper) · [Imovirtual Scraper (Portugal Property)](https://apify.com/plainrows/imovirtual-scraper) · [Standvirtual Scraper (Portugal Cars)](https://apify.com/plainrows/standvirtual-scraper) · [Immoweb Scraper (Belgium Property)](https://apify.com/plainrows/immoweb-scraper) · [Blocket Scraper (Sweden)](https://apify.com/plainrows/blocket-scraper) · [FINN.no Scraper (Norway)](https://apify.com/plainrows/finn-scraper) · [coches.net Scraper (Spain Cars)](https://apify.com/plainrows/coches-net-scraper) · [2dehands Scraper (Belgium)](https://apify.com/plainrows/2dehands-scraper) · [Storia Scraper (Romania Property)](https://apify.com/plainrows/storia-scraper) · [Autovit Scraper (Romania Cars)](https://apify.com/plainrows/autovit-scraper) · [FINN.no Car Scraper (Norway Cars)](https://apify.com/plainrows/finn-cars-scraper) · [DBA Scraper (Denmark)](https://apify.com/plainrows/dba-scraper) · [Tori.fi Scraper (Finland)](https://apify.com/plainrows/tori-scraper)
- **Content and media:** [Google News Scraper](https://apify.com/plainrows/google-news-scraper) · [YouTube Search Scraper](https://apify.com/plainrows/youtube-search-scraper) · [YouTube Search API (JSON)](https://apify.com/plainrows/youtube-search-api) · [YouTube Comments Scraper](https://apify.com/plainrows/youtube-comments-scraper) · [Google Images Scraper](https://apify.com/plainrows/google-images-scraper) · [Website Screenshot API](https://apify.com/plainrows/website-screenshot) · [PDF to Markdown Converter (PDF to Text for AI & RAG)](https://apify.com/plainrows/pdf-to-markdown) · [Google Maps Reviews Scraper](https://apify.com/plainrows/google-maps-reviews) · [Google Reviews Scraper](https://apify.com/plainrows/google-reviews-scraper) · [App Store & Google Play Reviews Scraper](https://apify.com/plainrows/app-reviews-scraper) · [App Store & Google Play App Details Scraper](https://apify.com/plainrows/app-details-scraper) · [Google Play Reviews Scraper](https://apify.com/plainrows/google-play-reviews-scraper) · [App Store Reviews Scraper](https://apify.com/plainrows/app-store-reviews-scraper)

### Support

Missing a field or found a bug? Open an issue on this page. Issues are read and answered.

# Actor input Schema

## `prompts` (type: `array`):

One prompt per line, as you would type it in Gemini. Up to 200 prompts per run, 1 to 500 characters each. Each prompt is one Gemini answer.

## `country` (type: `string`):

Country Gemini answers from (two-letter ISO code).

## `languageCode` (type: `string`):

Two-letter language code, e.g. "en", "de", "fr". Default: the main language of the country.

## Actor input object example

```json
{
  "prompts": [
    "best standing desk for small spaces",
    "Which CRM do small agencies recommend in 2026?"
  ],
  "country": "US"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "prompts": [
        "best standing desk for small spaces",
        "Which CRM do small agencies recommend in 2026?"
    ],
    "country": "US"
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrows/gemini-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "prompts": [
        "best standing desk for small spaces",
        "Which CRM do small agencies recommend in 2026?",
    ],
    "country": "US",
}

# Run the Actor and wait for it to finish
run = client.actor("plainrows/gemini-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "prompts": [
    "best standing desk for small spaces",
    "Which CRM do small agencies recommend in 2026?"
  ],
  "country": "US"
}' |
apify call plainrows/gemini-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plainrows/gemini-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2SdjFrIQQefY35sHi/builds/o1OfS2f2amltwLoDE/openapi.json
