The Scenario
You inherited the keyword tracking sheet from the person who left last month. It's 120 rows of target keywords in column A, organized by topic cluster — but there's nothing in columns B through L. The previous owner apparently pulled SERP data manually, one keyword at a time, from Bright Data's dashboard, and pasted results in by hand. You found that out by looking at the formula bar and seeing nothing but text strings.
Your manager wants this refreshed by Thursday so the content team has current ranking data before they finalize the Q3 editorial calendar.
The bad version:
- Open Bright Data's SERP API console, paste keyword 1, run the query, copy the top-5 URLs and titles, switch back to the sheet, paste them in columns B through K, repeat for keyword 2.
- Realize after row 20 that you've been pasting titles and URLs in the wrong order, go back and fix them, restart from row 1 to verify consistency.
- After 45 minutes, you've covered 15 of 120 rows. You have a meeting in an hour.
There's no version of doing this manually that fits inside a Thursday deadline without giving up something else. The cognitive overhead isn't just the pasting — it's holding the column mapping in your head for 120 repetitions without a single error.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that reads your Google Sheet and talks to Bright Data's SERP API on your behalf. Open the SheetXAI sidebar, describe what you want, and it handles the batch job, result parsing, and writeback — no API console switching, no copy-paste.
For every keyword in column A (rows 2 through 121) of my "Keywords" tab, run a Bright Data SERP search and write the top 5 organic result URLs into columns B, D, F, H, and J, and the corresponding page titles into columns C, E, G, I, and K
What You Get
- Columns B through K filled for all 120 keyword rows, in order
- URL and title paired per result (B2/C2 = result 1 for keyword in A2, D2/E2 = result 2, etc.)
- Rows where Bright Data returns fewer than 5 organic results get partial fills — the populated cells land in the correct columns, the rest remain blank rather than shifting the layout
- Any keyword that returns an error is flagged in column L with the error code, so you can re-run just those
What If the Data Is Not Quite Ready
Some keywords have trailing spaces or inconsistent casing
Before running the SERP lookups, clean column A by trimming whitespace and normalizing case to lowercase for each keyword, then run the Bright Data queries and write results to columns B through K
The keyword list is split across two tabs
Combine the keyword lists from the "Brand" tab column A and the "Non-Brand" tab column A into a single list, run a Bright Data SERP search for each one, and write URL and title results starting in column B of each respective tab
I only want keywords flagged as "priority" in column B
Filter column A to rows where column B says "priority", run Bright Data SERP searches for only those keywords, and write the top-5 organic URLs and titles into columns C through L for those rows only — leave non-priority rows untouched
Clean, deduplicate, filter, and run in one shot
Trim and lowercase all keywords in column A, remove any duplicate values, skip any row where column B is blank, run a Bright Data SERP search for each remaining keyword, write the top 5 organic result URLs and titles into columns C through L, and flag any errors in column M
The pattern that works: describe the cleaning rules and the data action in one prompt rather than doing them as separate passes.
Try It
Open any Google Sheet with a keyword list in column A and get the 7-day free trial of SheetXAI — ask it to run a Bright Data SERP lookup for every keyword and populate the ranking URLs and titles into adjacent columns. You can also look at how to scrape competitor product pages for pricing or get an overview of all Bright Data integration methods.
