A sales director I worked with wanted to know how many of our subscribers were for-profit vs. non-profit. Simple question. But we hadn't asked during sign-up, so the data wasn't there. The "easy" answer was to pay a service to append it. The expensive answer.
ZoomInfo is the go-to data appending service, and it's genuinely good. But sometimes you need data it doesn't offer, and you don't want to pay for a full subscription to fill in a few fields. Like which insurance providers does a healthcare company work with? ZoomInfo won't have that.
Let's build it with Claude and a Google Apps Script. The script will take a list of companies and feed it into Claude's API to return what data we're looking for. We'll rank that on a confidence scale, and if confidence is low enough, we'll have Claude do some web searching to find it for us.
What You'll Need
1. A Google Sheet (create a new one)
2. Google Apps Script (built into Google Sheets — no install required)
3. An Anthropic API key with access to claude-sonnet-4-6
How the Sheet Is Structured
The script uses two tabs:
Companies tab
Put company names in column A, starting at row 2. On the first run, the script writes headers and fills in everything else. You never need to touch columns B onward.
Research Fields tab
Each row defines one data point to look up, the expected format, and instructions for Claude.
The Companies tab is where your data lives after it's been appended. Claude also returns a confidence score for each result. High confidence means you can trust it and move on. Low confidence flags the rows worth a second look, so you're not chasing bad data downstream. Notes are added to a column explaining why the confidence is low.
How the Research Works
To stay within API rate limits and avoid running up token costs, the script takes two steps.
Step 1: Batched training data
Run Research processes companies in batches of five. Claude works from its training data and returns results for all five in a single response. No web search means no token bloat.
Step 2: Web search, on demand
Once Run Research is complete, you can see which rows have low confidence scores. If you want Claude to go look those up on the web, run Research Low Confidence with Web Search. It takes all the rows marked with a low confidence score, runs a web search for each company, and tries to find the data you're looking for.
We run web searches only on low-confidence rows because web searches cost more tokens, running multiple in parallel costs even more, and you hit API limits fast. Step 1 won't cost as much and will get you solid results for well-known companies, Fortune 500s, major regional firms, and anything with a substantial web presence. For newer startups or less public companies, Claude's training data will be thinner; that's where the web search step earns its keep.
Running It
Google Sheet: https://docs.google.com/spreadsheets/d/1IDUie_m612MO9ZcB-HXECn21vPO9YZR1bYBhU3yIpwI/copy
Open that Google Sheet, go to File -> Make a copy, and save it to your drive. The first time you run anything from the company research menu, you'll have to authorize the script. Google will make it seem scary, but click through Advanced -> Go to Company Researcher (unsafe) to proceed. If it's your first time, this is standard when running an Apps Script in your own sheet.
Once authorized, you'll need your Anthropic API key. Paste it in and click OK. It gets saved to the script's properties; it lives only in your copy of the sheet. No one else can see it. You won't be asked again.
If you'd rather set it up manually, [the full code is on GitHub].
The Company Research menu will appear at the top toolbar with three options:
Run Research
Processes every company based on Claude's training data and returns a confidence score.
Research Low Confidence with Web Search
Takes companies with low confidence scores and does a web search for more data, then returns confidence based on fresh context.
Clear Results
Fresh start.
You'll see a progress bar showing how your companies are being batched and where they are in the process. Take a coffee break after you click Run Research. For 500 companies, expect 15–30 minutes, including any checkpoint restarts.
Handling the 6-Minute Wall
Apps Script has a 6-minute execution limit. For a list of 500 companies processed in batches of five, that's 100 API calls. Each batch takes a few seconds to return, so the full run lands somewhere around 8–12 minutes, which means it will time out.
The script handles this with a checkpoint. After every company, it writes the current row index to Script Properties. If it times out mid-run, just click Run Research again. It reads the checkpoint and picks up exactly where it left off, skipping everything already processed.
When the run completes cleanly, the checkpoint gets deleted automatically.
Even with the checkpoint restarts, you can realistically get through 500 companies in under two hours; most of that time is just waiting.
Gotchas
Confidence scores are Claude's self-assessment
They're useful for triage, not precision grading. Don't get hung up on the difference between 92 and 89; both are fine. What matters is catching the rows in the 40s and 50s before they enter a sales sequence. Use the color-coding to spot check the yellow and red rows.
The tab names are exact
The script looks for sheets literally named Companies and Research Fields. A typo or extra space, and it throws a setup error immediately. Worth double-checking before you run it on a 500-row list.
What You End Up With
A Google Spreadsheet that appends data you want from your subscribers’ companies. Giving sales the edge to get any data they want from the web to make that next sale.