Mindket

Web page listings pulled into Google Sheets with Jina and AI

Newversion 1 · updated

Overview

An n8n workflow that reads a web page through Jina, asks an OpenAI chat model to pick out each listing on it, and adds one Google Sheets row for each. It comes set to a practice bookshop page.

Web page listings pulled into Google Sheets with Jina and AI is an n8n workflow in the Research category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file there and click Test workflow
  • Your own n8n server: the same file and steps
  • Google Sheets: the sheet that receives the rows
  • Any public web page: the one whose address you put in Jina Fetch

Platform

Connects 3 apps

How it works

Trigger

Manual start

It starts when you click Test workflow in n8n, and it reads one web page each time:

  • The page address set in Jina Fetch

Actions

  1. Jina’s Reader fetches the page and returns it as plain text
  2. An OpenAI chat model picks out each listing with its title, price, availability, product link and image link
  3. The list is split into one item for each listing
  4. Each listing is appended to the Google Sheet as a row

Result

One Google Sheets row for each listing on the page

Integrations

What you need before you start.

Jina AI

Page reader

Turns the web page at the address you give it into plain text the model can read.

NeedsA Jina key is optional, held in a Header Auth credential

OpenAI

Language model

Reads the page’s text and returns each listing with its fields.

NeedsOpenAI API key, and a model to choose

Google Sheets

Spreadsheet

Receives one row for each listing, matched to the headers in row 1.

NeedsA Google Sheets OAuth2 credential, and a sheet with the five headers

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
5 steps, starting by hand
AI
1 step calls an AI model: Information Extractor
Sign-ins
Signs in to: r.jina.ai, Google Sheets and OpenAI
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 5 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow turns a web page of listings into rows in Google Sheets. Jina’s Reader fetches the page as text, an OpenAI chat model picks out each listing with its title, price, availability and links, and every listing is added to your sheet as a row. It comes set to a practice bookshop page. Six nodes run it, beside one sticky note.

Who it suits

People who copy prices or listings from a page into a sheet by hand, such as shop owners watching a competitor’s catalogue, researchers, buyers and students. Skip it for pages that need a login, for pages whose rules forbid automated reading, and for figures you cannot check afterwards.

Who uses it, and how
IndustryWho uses itHow they use itExample
RetailShop ownersPull a competitor’s catalogue page into a sheetAn owner reads the titles and prices from one category page and sorts them by price.
ResearchAnalystsCollect the listings of one page for a comparisonAn analyst gathers a page of listings into a sheet and checks them against the source.
ProcurementBuyersCopy a supplier’s public price list into rowsA buyer pulls a published price list into a sheet and sets it beside a quote.
EducationStudentsLearn how scraping with AI works on a safe pageA student runs the practice page and reads the rows it makes.

You need a little n8n and a Google Sheet: import a file, add two credentials, set a sheet ID and write five headers.

Where to use it

Any n8n that can reach Jina, OpenAI and Google will run it. The rows land in the sheet you name.

  • n8n Cloud: import the file there and click Test workflow
  • Your own n8n server: the same file and steps
  • Google Sheets: the sheet that receives the rows
  • Any public web page: the one whose address you put in Jina Fetch

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Setup takes two credentials, a sheet and a header row, and Jina’s key is optional.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
Google SheetsA sheet with the headers title, price, availability, product_url and image_url in row 1 of Sheet1
OpenAIAn API key, and a model to choose
JinaA key is optional
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add a Google Sheets OAuth2 credential and select it in Save to Google Sheets. Replace YOUR_SHEET_ID with your sheet’s ID, the long string in its address between /d/ and /edit.
  3. Add an OpenAI credential and select it in OpenAI Chat Model, then choose a model.
  4. In Jina Fetch, add a Header Auth credential with your Jina key, or set Authentication to None to run without one.
  5. Check that row 1 of your sheet holds the five headers.
  6. Click Test workflow.

How to use it

Click Test workflow. A few moments later, one row for each listing on the page is in your sheet. To read another page, replace the address in Jina Fetch and keep https://r.jina.ai/ in front of it. Each run adds rows, so clear the old ones first if you do not want duplicates.

What to change for a different result
To changeWhere
The pageThe URL in Jina Fetch
What is picked outThe system prompt and the schema in Information Extractor, and your sheet’s headers
The modelOpenAI Chat Model
The sheet and its tabSave to Google Sheets
How it startsSwap the manual trigger for a Schedule Trigger

Example

A shop owner points the workflow at a competitor’s category page of books and clicks Test workflow. Jina returns the page as text, and the chat model finds each book with its title, price, availability, link and picture link.

One row appears in her sheet for each book. She sorts the rows by price and checks a few against the page, because the model reads the text and can slip.

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. Jina’s Reader turns a web page into plain text, the chat model reads that text the way you would, and n8n writes the rows. Start with the practice page the file comes set to.

For experts. An Information Extractor node with a manual JSON schema sits between the HTTP Request node and a Split Out node. Its result is one object with a results list.

Where to look closer
NodeWhat it doesWhat to know
Jina FetchA GET to https://r.jina.ai/ followed by the page addressThe text lands in data, and the node expects a Header Auth credential for Jina’s key
Information ExtractorPulls a list of books out of the text with a system prompt and a JSON schemaEvery property is optional, so the model may leave a value out
Split OutTurns output.results into one item for each bookAn empty list gives no rows
Save to Google SheetsAppends each item as a rowFields go to the headers with the same name, and a field with no header becomes a new column on the right

Good to know

Every run appends rows, so a second run on the same page repeats the first run’s rows.

  • Duplicates: clear the old rows first, or point the workflow at a new sheet
  • One page: there is no paging, and a page whose text is longer than the model accepts will fail
  • Repairs: the extractor’s schema lacked its outer type and properties, the sheet’s column list named fields the extractor does not return, and Jina Fetch ignored SSL issues. Mindket’s copy fixes all three
  • Headers: a field with no matching header becomes a new column on the right by default, in n8n’s current source read on 12 November 2026, so keep them spelled as above
  • Accuracy: the model reads text and can slip, and every value is text. Check some rows against the page
  • Model: the OpenAI Chat Model node names none, and at the version this file uses it defaults to gpt-5-mini in n8n’s current source, read on 12 November 2026. OpenAI’s deprecations page gives 11 December 2026 for it and names gpt-5.6-terra as the replacement
  • The practice page: books.toscrape.com calls itself a fictional bookstore made to be scraped, with prices that have no real meaning. Check a site’s rules before you point the workflow at another one
  • Jina’s key: its Reader page, read on 12 November 2026, says a key is optional and that without one the limit is 20 requests a minute for each IP address. That page does not show the header’s name, so take it from Jina’s documentation
  • Your data: the page’s text goes to OpenAI, and Jina sees the address you ask for
  • Credentials: the JSON holds none

README and files

README

Web page listings pulled into Google Sheets with Jina and AI

An n8n workflow that reads one web page through Jina's Reader, asks an OpenAI chat model to pick out every listing on it
and adds one row for each listing to a Google Sheet. The file comes set to a category page of a practice bookshop.

What is inside

  • workflow.json: the workflow as n8n exports it, seven nodes: six that do the work and one sticky note. It holds no
    credential.
  • README.md: these notes.

What we changed from the original copy

  • The credential links are gone: the Google Sheets account, the OpenAI key and the Header Auth credential on
    Jina Fetch. Select your own.
  • Save to Google Sheets pointed at the author's own sheet and its Sheet2 tab. It now has YOUR_SHEET_ID and the tab
    Sheet1.
  • The schema in Information Extractor held only the results list, with no outer type and properties, so it was
    not a complete JSON Schema. Mindket's copy wraps the same fields in them.
  • The column list in Save to Google Sheets named name, price, availability, image and link, while the
    extractor returns title, price, availability, product_url and image_url. It now names the extractor's own
    fields, and it no longer lists a matching column.
  • Jina Fetch had its option to ignore SSL issues turned on. It is off now, so the request checks the server's
    certificate.
  • The large note at the top, with the author's tutorial video and a link to a sample sheet, is now a title.
  • Nothing else.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A Google Sheet with these headers in row 1 of its first tab: title, price, availability, product_url and
    image_url. The tab is called Sheet1 unless you renamed it.
  • An OpenAI API key.
  • Optional: a Jina key. See Good to know.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Add a Google Sheets OAuth2 credential and select it in Save to Google Sheets. Replace YOUR_SHEET_ID with your
    sheet's ID, the long string in its address between /d/ and /edit. Change the tab name if yours is not Sheet1.
  3. Add an OpenAI credential and select it in OpenAI Chat Model. The node names no model, so choose one.
  4. In Jina Fetch, either add a Header Auth credential with your Jina key, or set Authentication to None to run without
    one. The node asks for a credential until you do one or the other.
  5. Check that row 1 of your sheet holds the five headers above.
  6. Click Test workflow. A row for each listing on the page appears in your sheet.

To read another page, replace the address in the URL of Jina Fetch. Keep https://r.jina.ai/ in front of it.

How a run goes

  1. When clicking "Test workflow" starts it by hand.
  2. Jina Fetch asks Jina's Reader for the page. It comes back as plain text, which n8n keeps in data.
  3. Information Extractor sends that text to the chat model with a system prompt and the schema. It returns output,
    an object with a results list. Each book in it has a title, price, availability, product link and image link.
  4. Split Out turns output.results into one item for each book.
  5. Save to Google Sheets appends each item as a row. Fields go to the headers with the same name.

Change the look

  • The page: the URL in Jina Fetch.
  • What is picked out: the system prompt and the schema in Information Extractor, and the headers in your sheet to
    match.
  • The model: OpenAI Chat Model.
  • The sheet and its tab: Save to Google Sheets.
  • How it starts: replace the manual trigger with a Schedule Trigger to run it on a timer. Each run adds rows.

Good to know

  • Every run appends. A second run on the same page adds the same rows again, so clear the old ones first if you do not
    want duplicates.
  • It reads one page. There is no paging, and a page whose text is longer than the model accepts will fail.
  • A field that has no matching header becomes a new column on the right, by default, in n8n's current source read on
    12 November 2026. Keep the headers spelled as above.
  • The model reads the text and can slip, and every value is text. Check some rows against the page before you rely on
    them.
  • The OpenAI Chat Model node, at the version this file uses, names no model and defaults to gpt-5-mini in n8n's current
    source, read on 12 November 2026. OpenAI's deprecations page gives 11 December 2026 for gpt-5-mini and names
    gpt-5.6-terra as its replacement.
  • The page the file reads, books.toscrape.com, calls itself a fictional bookstore made to be scraped, and its prices
    have no real meaning. Check a site's rules before you point the workflow at another one.
  • Jina's Reader page, read on 12 November 2026, says a key is optional and that without one the limit is 20 requests a
    minute for each IP address. That page does not show the header's name, so take it from Jina's documentation.
  • The page's text goes to OpenAI, and Jina sees the address you ask for.
Files
NOTICE.md  694 B
README.md  5 KB
workflow.json  6 KB

3 files, 12 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

anaksor-ocr

Sokheng · Kit

Reads Khmer and English text from documents, receipts and photos of signs, using a detector for text lines and a recogniser for each line. Suits developers who…

New

Qwen2.5-7B-Instruct as GGUF files in eight quantization sizes, to chat with locally through llama.cpp. For people who want a capable 7.6B model on their own co…

New

ACE-Step 1.5 XL SFT

ACE-Step · Kit

Generates music from text with a 4B diffusion decoder, 50 steps and guidance control, aiming for higher audio quality than the base. For creators with a GPU of…

New

Similar in Research

See all in Research

Merlin-Cancer-Super

AbdomenAtlas · Kit

Detects and outlines tumors in 9 organs on CT scans, trained with the R-Super method that learns from radiology reports. A research model for medical imaging g…

New

EarthJev

dBenf · Kit

Answers typed questions about satellite image patches from all 12 Sentinel-2 bands, returning a probability for each option without writing text. A Qwen3.5-0.8…

New

getting-over-it-rl-jax

zimmerk4 · Kit

Plays the full game Getting Over It from the bottom to the end with a small trained policy network that learned inside a JAX physics simulator. For reinforceme…

New