---
title: "Product page data scraped from screenshots by a Gemini agent"
kind: "Kit"
category: "Research"
price: "Free"
seller: "Mindket"
version: "1"
url: "https://mindket.com/p/8e8023dc-5926-4414-829d-ab3676802e13"
updated: "2026-11-12"
---

# Product page data scraped from screenshots by a Gemini agent

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that screenshots product pages listed in Google Sheets through ScrapingBee, has a Gemini agent read titles, prices, brands and promotions, and saves them as rows.

Product page data scraped from screenshots by a Gemini agent is an n8n workflow in the Research category, listed by Mindket. It is free. This is version 1, last updated on 2026-11-12. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow collects product data from web pages by reading their pictures. It takes page addresses from a Google Sheet and asks ScrapingBee for a full-page screenshot of each. A Gemini agent reads the products, prices, brands and promotions off the picture. When the picture is not enough, the agent calls a second route that fetches the page HTML as Markdown. Fourteen nodes run it, beside fifteen sticky notes.

### Who it suits

Analysts and shop owners who track prices and promotions across many pages. Skip it if the sites you list forbid scraping in their terms, since that is yours to check.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Retail | Price analysts | Watch competitor prices | An analyst lists category pages and reads the prices from one sheet. |
| E-commerce | Shop owners | Track promotions | An owner sees which brands run a discount and by how much. |
| Marketing | Category managers | Compare product ranges | A manager lines up brands and prices across several shops. |
| Research | Market researchers | Build a dataset of listings | A researcher collects hundreds of listings into rows. |

You need some n8n and three accounts: import a file, add two credentials, paste a key and an id, and link the second route.

### Where to use it

Any n8n that can reach ScrapingBee, Google Gemini and Google Sheets will run it. The results land in the sheet you set.

- n8n Cloud: import the file there and run it by hand
- Your own n8n server: the same file and steps
- Google Sheets: the list of addresses and the results
- ScrapingBee: the screenshots and the page HTML

### How to set it up

Download saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Setup takes a ScrapingBee key, a Gemini key, a Google service account and a two-tab sheet.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| ScrapingBee | An account and an API key |
| Google | A service account with your sheet shared to its address, and a Gemini API key |
| Sheet | A tab \`List of URLs\` with the header \`url\`, and a tab \`Results\` with six headers |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add a Google service account credential and select it in the first and the last Google Sheets nodes, the one that gets the list and the one that creates rows. Replace `<YOUR_SHEET_ID>` in both.
3. In both ScrapingBee nodes, the one for the page HTML and the one for the screenshot, replace `<YOUR_SCRAPINGBEE_API_KEY>` with your key.
4. Add a Gemini credential and select it in `Google Gemini Chat Model`.
5. In `HTML-based Scraping Tool`, choose this same workflow in the Workflow field.
6. Add a few addresses to `List of URLs` and click Test workflow.

### How to use it

Click Test workflow. Each address becomes a screenshot, and the agent returns its products. Rows appear in `Results`. Start with two or three pages, since each one costs a ScrapingBee request.

What to change for a different result

| To change | Where |
| --- | --- |
| What to extract | The agent’s system message and the example in \`Structured Output Parser\` |
| The columns | The Google Sheets node that creates rows |
| The model | \`Google Gemini Chat Model\` |
| When it runs | The trigger node |

### Example

An analyst lists the category pages of two online shops for headphones in `List of URLs`. The agent reads each page picture.

Each product comes back as a row with its category address, title, price, brand and any promotion, with the discount percentage. Pages that the screenshot does not explain are read again from their HTML.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. An agent is a box that decides which other boxes to use. Here it reads a picture first and calls a second route only when something is missing.

**For experts.** The agent takes a binary screenshot as its input and calls a tool workflow that sits in the same file. A structured output parser shapes the answer, and a Split Out node makes one item for each product.

Where to look closer

| Node | What it does | What to know |
| --- | --- | --- |
| The ScrapingBee screenshot node | Returns a full-page picture | It sends \`screenshot\` and \`screenshot\_full\_page\` as \`true\` |
| \`Vision-based Scraping Agent\` | Reads the picture and decides on the tool | It calls the HTML route only when something is missing |
| \`HTML-based Scraping Tool\` | Runs the second route in this same workflow | Its Workflow field is blank until you choose this workflow |
| \`Structured Output Parser\` | Shapes the answer as a list of products | Its example uses text values and the key \`promo\_percentage\` |

### Good to know

Scraping may be against a site’s rules, so check the terms of every site you list and the law where you live.

- The repair: the model was \`models/gemini-1.5-pro-latest\`, and Google’s models and deprecations pages, read on 12 November 2026, list no Gemini 1.5 model. The node names \`models/gemini-3.8-flash\`, which the models page lists as Stable with image input
- The tool: it held the id of another n8n instance’s workflow, so it is blank and you pick this one
- The columns: the title was written to a column named \`product\_url\`, and it is \`product\_title\` now
- Cost: each page uses one ScrapingBee request for the screenshot, a second when the agent needs the HTML, and the Gemini calls
- Accuracy: the agent can misread a price, so check the Results tab
- Not run: this copy was not run against ScrapingBee, Gemini or Google Sheets
- Your data: the addresses and the screenshots go to ScrapingBee and to Google’s Gemini, and the rows go to your sheet
- Credentials: the JSON holds none

## README

```markdown
# Product page data scraped from screenshots by a Gemini agent

An n8n workflow that reads a list of page addresses from a Google Sheet and takes a full-page screenshot of each through ScrapingBee. An AI agent on Gemini reads the products, prices, brands and promotions off the picture. When the picture is not enough, the agent calls a second route that fetches the page HTML as Markdown. The result becomes rows in a Results tab.

## What is inside

- `workflow.json`: the workflow as n8n exports it, twenty-nine nodes: fourteen that do the work and fifteen sticky notes. It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- The credential links are gone. Select your own for the Google service account and Gemini.
- The model was `models/gemini-1.5-pro-latest`. Google's models and deprecations pages, read on 12 November 2026, list no Gemini 1.5 model at all. The node now names `models/gemini-3.8-flash`, which the models page lists as Stable with image input and structured outputs.
- The ScrapingBee key was already a placeholder, `<your_scrapingbee_apikey>`. It is `<YOUR_SCRAPINGBEE_API_KEY>` now in both requests.
- The screenshot request sent only `screenshot_full_page`. ScrapingBee's documentation lists `screenshot` and `screenshot_full_page` as separate options, and its own example sends both, so this copy sends both.
- `HTML-based Scraping Tool` held the id of the author's own workflow. It is blank now. After you import, select this same workflow in it.
- The sheet id is `<YOUR_SHEET_ID>`, with the tabs `List of URLs` and `Results`.
- The Create Rows node wrote the product title into a column named `product_url`. The column is `product_title` now.
- The agent's prompt ended with a stray `Copy code` line and an example that used a true or false value and a number under `promo_percent`. The parser's example uses text values and the key `promo_percentage`. The prompt's example now matches the parser.
- The notes are rewritten. One of them linked to the author's sample sheet, and that link is removed.
- Nothing else.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- A ScrapingBee account and API key. Its documentation says a request that renders JavaScript, which is the default, costs 5 credits.
- A Google service account with your sheet shared to its address, and a Gemini API key.
- A Google Sheet with two tabs. `List of URLs` has the header `url` in row 1 and one address per row. `Results` has the headers `category`, `product_title`, `product_price`, `product_brand`, `promo` and `promo_percent`.

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Add a Google service account credential and select it in `Google Sheets - Get list of URLs` and `Google Sheets - Create Rows`. Replace `<YOUR_SHEET_ID>` in both and check the tab names.
3. In `ScrapingBee- Get page HTML` and `ScrapingBee - Get page screenshot`, replace `<YOUR_SCRAPINGBEE_API_KEY>` with your key.
4. Add a Gemini credential and select it in `Google Gemini Chat Model`.
5. In `HTML-based Scraping Tool`, choose this same workflow in the Workflow field.
6. Add a few addresses to `List of URLs` and click Test workflow.

## How a run goes

1. The manual trigger starts `Google Sheets - Get list of URLs`, which reads the rows.
2. `Set fields` keeps the `url` of each row.
3. `ScrapingBee - Get page screenshot` calls ScrapingBee with the address, `screenshot` and `screenshot_full_page` set to `true` and a browser-style User-Agent header. The picture comes back as a file, with the row's JSON beside it.
4. `Vision-based Scraping Agent` receives the picture and a message with the address. Its system message asks for the titles, prices, brands and promotions, and says to call the HTML tool only when something is missing.
5. The tool starts `HTML-Scraping Tool` in this same workflow with the address as `query`. `Set fields - from AI agent query` turns it into `url`, `ScrapingBee- Get page HTML` fetches the page, and `HTML to Markdown` converts it. The `data` field goes back to the agent.
6. `Structured Output Parser` shapes the answer as a list of products, and the agent returns it as `output`. `Split Out` makes one item for each product.
7. `Google Sheets - Create Rows` adds a row for each. `category` holds the page address, and `promo_percent` takes the value of `promo_percentage`.

## Change the look

- What to extract: the system message of the agent and the example in `Structured Output Parser`.
- The columns: the mapping and schema in `Google Sheets - Create Rows`.
- The model: `Google Gemini Chat Model`.
- The trigger: replace the manual one with a schedule.

## Good to know

- Scraping may be against a site's rules. Check the terms of every site you list and the law where you live. ScrapingBee's terms, read on 12 November 2026, also bar use that breaks a scraped site's own terms.
- Each page costs one ScrapingBee request for the screenshot and a second one when the agent needs the HTML, plus the Gemini calls.
- The agent can misread a price, so check the Results tab.
- This copy was not run against ScrapingBee, Gemini or Google Sheets.
- The page addresses and screenshots go to ScrapingBee and to Google's Gemini, and the rows go to your sheet.
- The JSON holds no credential.
```

## What is in it

3 files, 29 KB, downloaded as a zip.

```text
NOTICE.md  719 B
README.md  5 KB
workflow.json  23 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 11 steps, starting by hand or when another workflow calls it
- AI: 1 step calls an AI model: Vision-based Scraping Agent
- Sign-ins: Signs in to: Google service account, Google Gemini and app.scrapingbee.com
- API keys: No API key is left in the file; 1 blank in it for your own key
- Step types: Mindket’s checker reads all 8 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/8e8023dc-5926-4414-829d-ab3676802e13)
- [Its page on Mindket](https://mindket.com/p/8e8023dc-5926-4414-829d-ab3676802e13)
