Mindket

Company research agent that fills a Google Sheet

Newversion 1 · updated

Overview

An n8n workflow that takes company names from a Google Sheet. An OpenAI agent searches Google and reads each website, then writes the domain, LinkedIn address, plans, market, case study and integrations back into the row.

Company research agent that fills a Google Sheet is an n8n workflow in the Business 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 into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Sheets: the rows are both the to-do list and the result
  • Your outreach tool: export the finished rows from the sheet

Platform

Connects 3 apps

How it works

Trigger

Schedule or manual run

It starts every 2 hours, or when you press Test workflow, and reads the rows of a Google Sheet whose enrichment_status is empty. Each row needs:

  • A company name or a domain in the input column

Actions

  1. The rows without a status are read from the sheet, and one row is handled at a time
  2. The OpenAI agent searches Google and reads the company’s website, taking up to 10 steps
  3. It answers in fixed fields: domain, LinkedIn address, market, cheapest plan, free trial, enterprise plan, case study link and integrations
  4. The answer is joined to the row’s number
  5. The row is updated in the sheet and its status is set to done

Result

The researched facts written into the company’s row in the Google Sheet, with enrichment_status set to done

Integrations

What you need before you start.

Google Sheets

The list and the result

Supplies the rows to research and receives the facts in the same row.

NeedsGoogle Sheets OAuth2 credential and a sheet ID

OpenAI

Language model

Runs gpt-4o as the agent that decides what to search and read.

NeedsOpenAI API key

SerpApi

Google search

Gives the agent Google search results for each company.

NeedsSerpApi API key

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
9 steps, starting by hand or on a schedule
Not reached
1 node no run reaches: Search Google with ScrapingBee
AI
1 step calls an AI model: AI company researcher
Sign-ins
Signs in to: Google Sheets, SerpApi and OpenAI
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 7 of its step types

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

About

What it is

This n8n workflow researches companies from a list. You put a company name or a domain in a Google Sheet. Every two hours, or when you press a button, it picks up the rows that have no status yet. An OpenAI agent running gpt-4o searches Google and reads the company’s website. It writes its findings back into the same row. Those are the domain, the LinkedIn address, the cheapest plan, whether there is a free trial or an enterprise plan, the market, a case study link and up to five integrations. Fourteen nodes do the work, beside eight sticky notes.

Who it suits

Sales and marketing people who keep a list of target companies and want the first facts filled in before they write to anyone. Skip it if you need figures you can quote without a check, because the answers come from a language model and a search. Skip it too for pages that only a browser can draw, since the workflow reads plain page text.

Who uses it, and how
IndustryWho uses itHow they use itExample
Software salesSales development teamsPaste a list of target companies and get plan and market facts before the first emailA rep pastes forty company names and finds out which ones sell to businesses and offer an enterprise plan.
AgenciesMarketing agenciesCheck a prospect’s market, tools and latest case study before a pitchAn agency lead sees that a prospect lists three integrations and has a case study from last month.
PartnershipsPartner managersFind which companies already integrate with a toolA partner manager reads the integrations column for a list of possible partners.
ResearchAnalystsBuild a small table of competitors’ pricing signalsAn analyst fills the cheapest paid plan for a dozen competitors in one sitting.

You need some n8n and three accounts: a Google Sheet with the right headers, an OpenAI key and a SerpApi key.

Where to use it

Any n8n that can reach Google Sheets, OpenAI and SerpApi will run it. Publish it to get the two-hour schedule.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Sheets: the rows are both the to-do list and the result
  • Your outreach tool: export the finished rows from the sheet

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Build the sheet before you import the file.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
OpenAIAn API key that can use gpt-4o
SerpApiAn account and its API key
Google SheetsA sheet with ten headers in row 1 and an OAuth2 credential
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. In a new Google Sheet, type these headers in row 1: input, domain, linkedinUrl, has_free_trial, cheapest_plan, has_entreprise_plan, last_case_study_link, market, integrations and enrichment_status.
  3. Add a Google Sheets OAuth2 credential and select it in Get rows to enrich and Google Sheets Update Row with data.
  4. In both nodes replace YOUR_SHEET_ID with your sheet’s ID, the part of its address between /d/ and /edit.
  5. Add an OpenAI credential and select it in OpenAI Chat Model.
  6. Add a SerpApi credential and select it in SerpAPI Search Google.
  7. Put two company names in the input column and press Test workflow.
  8. Save and press Publish to run it every two hours.

How to use it

Add a company name or a domain in the input column and leave the other cells empty. The next run fills the row and writes done in enrichment_status. To research a row again, clear that cell. A new row needs nothing else.

What to change for a different result
To changeWhere
What the agent looks forThe prompt in AI company researcher and the fields in Structured Output Parser
The columnsGoogle Sheets Update Row with data
The scheduleSchedule Trigger
The modelgpt-4o in OpenAI Chat Model
The searchConnect Search Google with ScrapingBee and remove SerpAPI Search Google

Example

A sales rep types a company’s domain in the input column of a new row.

At the next run the agent searches Google for the company, opens its pricing and customer pages and answers in the fixed fields. The row gets a LinkedIn address, a market of B2B or B2C, the cheapest paid plan and a case study link. Read the first few rows against the websites before you trust the rest.

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. Here the agent is the box that thinks. It can use two tools, a Google search and a page reader. A loop feeds it one row at a time. Try two rows first.

For experts. A Loop Over Items with a batch size of one feeds an agent with a structured output parser, and a merge by position carries the row number to the update.

Where to look closer
NodeWhat it doesWhat to know
Get rows to enrichReads the rows whose enrichment_status is emptyThe filter names the column and sets no value, which matches empty cells
AI company researcherResearches one company with up to 10 stepsIt has no system message, only the prompt
Get website contentFetches a page and returns its textA plain request, so scripts on the page do not run
Merge dataJoins the row number to the agent’s answer by positionBoth sides carry one item per loop
Google Sheets Update Row with dataUpdates the row matched by row_numberIt does not write has_API

Good to know

The model needs a look, one field is read but never saved and every run costs on two services.

  • Models: OpenAI’s deprecations page, read on 12 November 2026, lists the dated gpt-4o versions for shutdown on 14 January 2027, with gpt-6-luna as the replacement. It does not list the bare name gpt-4o, which Mindket’s copy keeps
  • Market: the original prompt asked for B2B or B2B, so a B2C company could never be reported. Mindket’s copy asks for B2B or B2C
  • Unsaved field: the agent also returns has_API, but the update node does not write it. Add a column and map it to keep it
  • Spelling: the sheet column is has_entreprise_plan and the agent’s field is has_enterprise_plan. Keep the column as written
  • Retries: a row the agent fails on stays empty, so the next run tries it again
  • Overlap: a long run can still be going when the next one starts, and both then research the same empty rows
  • Pages: the page reader makes a plain request, so a page that needs a browser or blocks bots gives back little text
  • Unused tool: Search Google with ScrapingBee is not connected, and it does nothing until you connect it
  • Accuracy: the answers come from a language model and a search, so check them before you use them in outreach
  • Billing: OpenAI bills a gpt-4o call for each step, up to 10 a company, and SerpApi bills each search
  • Your data: the company names go to OpenAI and SerpApi, and the page text goes to OpenAI
  • Credentials: the JSON holds none

README and files

README

Company research agent that fills a Google Sheet

An n8n workflow that researches companies for you. Put a company name or a domain in a Google Sheet. An OpenAI agent
searches Google and reads the company's website. It writes what it finds back into the same row. That covers the domain,
the LinkedIn address, the cheapest plan, a free trial, an enterprise plan, the market, a case study link and up to five
integrations.

What is inside

  • workflow.json: the workflow as n8n exports it, 14 nodes and eight sticky notes. It holds no credential.
  • README.md: these notes.

What we changed from the original copy

  • The agent's prompt asked for the market as "B2B" or "B2B", so B2C could never come out. It now says "B2B" or
    "B2C".
  • Both Google Sheets nodes pointed at their author's own sheet. They now hold YOUR_SHEET_ID and the first tab, and the
    saved sheet name and link are gone.
  • Two node names lost their spaced hyphen: SerpAPI - Search Google is now SerpAPI Search Google, and
    Google Sheets - Update Row with data is now Google Sheets Update Row with data.
  • The two small workflows inside Get website content and Search Google with ScrapingBee were cleaned. Their
    instance ID, their credential reference and their sample data are gone, and the example address is example.com.
  • The eight sticky notes are rewritten and hold no outside links.
  • Every credential reference is removed, so you pick your own. The workflow is switched off until you publish it.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An OpenAI API key that can use gpt-4o.
  • A SerpApi account and its API key.
  • A Google account, a Google Sheet built as described below and a Google Sheets OAuth2 credential.
  • Optional: a ScrapingBee key, if you want to search with it instead of SerpApi.

The Google Sheet

Row 1 holds these headers, spelled exactly like this:

| Column | Filled by | What it holds |
|---|---|---|
| input | You | A company name or a domain |
| domain | The agent | The domain, in the form name.tld |
| linkedinUrl | The agent | The company's LinkedIn address |
| has_free_trial | The agent | True or false, and false when the agent finds no strong evidence |
| cheapest_plan | The agent | The lowest paid plan as a number, or empty when it is not sure |
| has_entreprise_plan | The agent | Whether there is an enterprise plan |
| last_case_study_link | The agent | The first case study link it finds |
| market | The agent | B2B or B2C |
| integrations | The agent | Up to five tools the company integrates with |
| enrichment_status | The workflow | Leave it empty. The workflow writes done |

You do not make a row_number column. n8n adds it when it reads the rows. Fill input for each company and leave
the other cells empty.

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. Select it in Get rows to enrich and Google Sheets Update Row with data.
  3. In both nodes replace YOUR_SHEET_ID with your sheet's ID, the long part of its web address between /d/ and
    /edit. Both read the first tab. To use another tab, change the Sheet field in both.
  4. Add an OpenAI credential and select it in OpenAI Chat Model.
  5. Add a SerpApi credential with your key and select it in SerpAPI Search Google.
  6. Put two companies in the sheet, press Test workflow and watch the rows fill.
  7. Save and press Publish to run the workflow every 2 hours.

How a run goes

  1. When clicking "Test workflow" and Schedule Trigger both start the same line. The schedule fires every 2 hours.
  2. Get rows to enrich reads every row whose enrichment_status cell is empty.
  3. Input keeps two things from each row: company_input, taken from input, and row_number.
  4. Loop Over Items hands over one row at a time.
  5. AI company researcher gets the company and a list of what to find. It may take up to 10 steps. OpenAI Chat Model
    runs gpt-4o at a temperature of 0.3. The agent can call SerpAPI Search Google and Get website content, which
    fetches a page and returns its text without the page head. Structured Output Parser makes it answer in the fixed
    fields.
  6. AI Researcher Output Data pulls those fields out of the answer.
  7. Merge data joins them to the row's row_number by position.
  8. Google Sheets Update Row with data finds the row by row_number, writes the columns and sets enrichment_status
    to done. The loop then takes the next row. When no row is left, the run ends.

Change the look

  • What the agent looks for: the prompt in AI company researcher, then the fields in Structured Output Parser, the
    mapping in AI Researcher Output Data and the columns in Google Sheets Update Row with data. Change all of them
    together.
  • Which rows run: the filter in Get rows to enrich. Clear a row's enrichment_status to research it again.
  • How often it runs: the interval in Schedule Trigger.
  • The model: gpt-4o in OpenAI Chat Model.
  • How hard it tries: the maximum number of iterations in AI company researcher.
  • The search: connect Search Google with ScrapingBee to the agent as a tool, add a Query Auth credential that holds
    your ScrapingBee key under the name api_key, and remove SerpAPI Search Google.

Good to know

  • OpenAI's deprecations page, read on 12 November 2026, lists the dated gpt-4o versions for shutdown on 14 January
    2027, with gpt-6-luna as the replacement. It does not list the bare name gpt-4o, which this copy keeps.
  • The agent also returns has_API, but Google Sheets Update Row with data does not write it. To keep it, add a
    has_API column and map the field in that node.
  • The sheet column is spelled has_entreprise_plan, while the agent's field is has_enterprise_plan. Keep the
    column header as it is, or change it in both places.
  • Get rows to enrich sets a lookup column, enrichment_status, and no lookup value. With no value, the Google Sheets
    node matches the rows where that cell is empty.
  • A row the agent fails on stays empty, so the next run tries it again.
  • A long run can still be going when the next one starts. Both then read the same empty rows and research them twice.
  • Get website content makes a plain web request. A page that needs a browser to draw it, or that blocks bots, gives
    back little text.
  • Search Google with ScrapingBee is not connected to anything and does nothing until you connect it.
  • The answers come from a language model and a search, so check them before you use them in outreach.
  • OpenAI bills a gpt-4o call for each step the agent takes, up to 10 a company, and SerpApi bills each search.
  • Your data: the company names go to OpenAI and SerpApi, and the page text goes to OpenAI.
Files
NOTICE.md  580 B
README.md  7 KB
workflow.json  25 KB

3 files, 32 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 Business

See all in Business

pplx-decider-v1.1-27b

perplexity-ai · Kit

Picks the best option for a decision from text and images, such as which team should handle a request, with a probability for each choice, for developers who b…

New

NuExtract3

numind · Kit

Reads documents as text or images and fills a JSON template with the fields you ask for, or converts the pages to Markdown. A 4B model for teams that process s…

New

Drex DLM

nace-ai · Kit

Scores yes or no, multiple choice and rating questions about a document in one pass, with a probability for every option. An 8B decision model from Nace.AI tha…

New