# Gemini Search Scraper (`apify/gemini-search-scraper`) Actor

No-code scraper for Google Gemini AI search. Run any prompt and extract Gemini's AI responses, cited sources, and links at scale. Track brand visibility in AI search (GEO), monitor competitors, and run market research. Export to JSON, CSV, or Excel. No API key needed.

- **URL**: https://apify.com/apify/gemini-search-scraper.md
- **Developed by:** [Apify](https://apify.com/apify) (Apify)
- **Categories:** AI, SEO tools, Automation
- **Stats:** 10 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $4.00 / 1,000 gemini searches

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## What does Gemini Search Scraper do?

**Gemini Search Scraper** extracts **Google Gemini search results** at scale. Enter your search queries and get back clean, structured data - including Gemini's **AI-generated answer text**, cited sources with URLs, and metadata - ready for analysis, monitoring, or integration into your workflows.

Gemini is Google's conversational AI search experience that generates detailed, multi-paragraph answers with cited sources. This Actor wraps a battle-tested Google Search Actor so you don't need to worry about proxies, browser fingerprinting, or parsing - just provide your queries and collect the output.

### What can Gemini Search Scraper do?

- **Extract Gemini answers** - Get the full AI-generated text that Google Gemini produces for each query
- **Collect cited sources** - Capture every source title and URL that Gemini references in its answer
- **Structured JSON output** - Every result is returned as clean JSON, ready for downstream processing
- **Apify platform benefits** - Access results via REST API, schedule recurring runs with cron expressions, integrate with Zapier/Make/Google Sheets, and leverage automatic proxy rotation
- **Batch processing** - Submit hundreds of queries in a single run and collect all results from one dataset

### What data can you extract?

| Field     | Type   | Description                                                                                                        |
| --------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
| `query`   | String | The search query you submitted                                                                                     |
| `text`    | String | The full Gemini answer generated by Google                                                                         |
| `sources` | Array  | List of cited sources, each with `id`, `title`, `url`, `description`, and `section` (either `citations` or `more`) |

### How to scrape Google Gemini results

1. **Go to the Actor page** - Navigate to [Gemini Search Scraper](#) on Apify Store and click **Try for free**.
2. **Enter your search queries** - In the Input tab, type or paste your queries into the **Queries** field, one per line. For example: `best project management tools`, `how does photosynthesis work`.
3. **Start the run** - Click **Start** and wait for the Actor to process your queries. The run time depends on how many queries you submitted - most runs finish within a few minutes.
4. **Export your data** - Once the run completes, go to the **Dataset** tab to preview results. Export as JSON, CSV, Excel, or connect directly to Google Sheets, Zapier, or Make.
5. **Automate with the API** - Use the Apify API or schedule the Actor to run daily or weekly for ongoing Gemini monitoring. Every run produces a new dataset you can fetch programmatically.

### Input parameters

| Parameter   | Description                                             |
| ----------- | ------------------------------------------------------- |
| **Queries** | Your search queries, one per line. Supports bulk input. |

For the full list of options, see the **Input** tab on the Actor page.

### Output example

```json
{
    "text": "The consensus on YouTube (channels like *Andy Internet* or *Aurelius Tjin*) is that the best CRM depends on who you are and what your bottleneck is.\n\n*   **HubSpot:** YouTube's favorite for user experience - intuitive, with a free tier. It gets expensive once you need advanced automation.\n*   **Zoho CRM:** The \"value-for-money\" alternative - highly customizable with built-in AI assistants.\n*   **Pipedrive:** A clean, drag-and-drop pipeline that sales reps love.\n*   **GoHighLevel:** An all-in-one system agencies can white-label and resell to clients.",
    "sources": [
        {
            "id": 1,
            "url": "https://www.pcmag.com/picks/the-best-crm-software#:~:text=a%20learning%20curve-,Why%20We%20Picked%20It,plan%20as%20your%20business%20grows.",
            "title": "The Best CRM Software We've Tested for 2026 | PCMag",
            "description": "Why We Picked It. HubSpot offers a fairly full-featured version of its \neasy-to-use Smart CRM at no cost for up to two users. This tier has no time \nlimits, ...",
            "section": "citations"
        }
    ],
    "query": "what are the best crm platforms site:youtube.com"
}
````

### Failed queries

Every query Gemini can't return a result for is written to a separate **`errors`** dataset instead of the main one - so your results stay clean and you can still see exactly which queries failed and why. Open it from the **Failed queries** link on the run's output, or under **Storage → Datasets**.

```json
{
    "query": "best web scraping tools 2025",
    "error": "No result returned for the query."
}
```

### Other AI search scrapers on Apify

Gemini is just one piece of the AI search landscape. Monitor your brand across all major AI-powered search engines:

- **[Google AI Mode Scraper](https://apify.com/apify/google-ai-mode-scraper)** - Extract Google AI Mode results, the conversational AI answers Google generates for a search query. Track how AI Mode describes your brand and which sources it cites.
- **Google AI Overview Scraper** - Extract Google AI Overview (SGE) results, the AI summaries that appear directly on the search results page. Ideal for tracking how Google's AI snippets represent your brand.
- **[Google Search Results Scraper](https://apify.com/apify/google-search-scraper)** - Extract SERPs organic and paid results, review ratings and People Also Ask. Ideal for AI SEO workflows.

Use these Actors together for comprehensive **AI search monitoring** - understand how every major AI engine presents information about your brand, products, or topics.

### Frequently asked questions

#### Is it legal to scrape Google Gemini results?

Web scraping of publicly available data is generally legal in most jurisdictions. Google Gemini results are publicly accessible to anyone performing a search. This Actor collects the same information a regular user would see. Always review and comply with applicable terms of service and local regulations for your specific use case.

#### Is there a Google Gemini API?

Google offers a **Gemini API** for developers, but it gives you raw model completions - not the web-grounded search answers with cited sources that Gemini shows in the search experience. Gemini Search Scraper fills this gap: it provides a **REST API** endpoint that returns structured Gemini search results, including the answer text and its sources, for any query. You get an API key with your Apify account and can call it from any programming language or automation tool.

#### What are the best use cases for Gemini scraping?

The most popular use cases include **SEO and brand monitoring** (track how Gemini describes your brand), **competitive analysis** (compare how Gemini answers queries about you vs. competitors), **content research** (discover what sources Gemini cites for your target topics), and **AI search trend tracking** (monitor how AI-generated answers evolve over time).

#### Can I integrate Gemini Search Scraper with other tools?

Yes. Apify offers native integrations with **Zapier**, **Make (Integromat)**, **Google Sheets**, **Slack**, **webhooks**, and more. You can also use the **Apify API** or **Apify Python/JavaScript clients** to pull data into your own applications, dashboards, or data pipelines. Schedule runs on any cadence - hourly, daily, weekly - for fully automated monitoring.

# Actor input Schema

## `queries` (type: `string`):

The prompts/queries to send to Google Gemini. Enter one query per line.

## Actor input object example

```json
{
  "queries": "best SEO tools\napify web scraping"
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped data

## `errors` (type: `string`):

Queries that returned no Gemini result, with the failure reason

# 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 = {
    "queries": "What are the top 5 CRM tools"
};

// Run the Actor and wait for it to finish
const run = await client.actor("apify/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 = { "queries": "What are the top 5 CRM tools" }

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

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

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

```

## CLI example

```bash
echo '{
  "queries": "What are the top 5 CRM tools"
}' |
apify call apify/gemini-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=apify/gemini-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Gemini Search Scraper",
        "description": "No-code scraper for Google Gemini AI search. Run any prompt and extract Gemini's AI responses, cited sources, and links at scale. Track brand visibility in AI search (GEO), monitor competitors, and run market research. Export to JSON, CSV, or Excel. No API key needed.",
        "version": "0.0",
        "x-build-id": "44bT8i9VwhDLZTW4L"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apify~gemini-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apify-gemini-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/apify~gemini-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apify-gemini-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/apify~gemini-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apify-gemini-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Search query/queries",
                        "pattern": "[^\\s]+",
                        "type": "string",
                        "description": "The prompts/queries to send to Google Gemini. Enter one query per line."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
