Most scraping projects start in the wrong place. You pick the target site, inspect the page, build the recipe, handle the pagination, then fix it when the layout changes. Sometimes that work is unavoidable. Often it is not, because the field you need is already printed in the Google result.
Here is the part people miss. Google does not just show a page’s meta description. It builds the snippet from the part of the page that matches your query. Google rewrites the author-written description in roughly 60 percent of results. Which means your keyword decides what text comes back.
Search “Nike Air Max 90” and the snippet describes the shoe. Search “Nike Air Max 90 price” and the snippet tends to contain a dollar figure. Same page, different extraction, because you told Google which part of the page you cared about.
That flips the workflow. Instead of scraping a source to get a phone number, you write a keyword that forces the phone number into the snippet, then scrape the search results.
One keyword is a search. Four hundred keywords is a database.
This is the part that makes it worth doing, and it is the part most people skip.
Running one query in Google and copying the answer is not automation. The unlock is that a keyword is a template with variables in it, and every variable has a list behind it. Geography. Job title. Product model. Company name. Zip code. School district. Multiply the lists together and one afternoon of setup produces thousands of rows.
[niche] [city] phone number is not one keyword. With 40 niches and 25 cities it is 1,000 keywords. At 10 results each that is 10,000 rows, and every row has a position, a title, a description and a URL.
In Hexomatic you paste all of them into Data input, one per line, and add the Google Search automation once. The workflow does not care whether the list has 5 rows or 5,000. That is the whole difference between searching and extracting.
Two things make the batch usable instead of messy:
Keep the pattern identical across the batch. Same word order, same field words, same operators, only the variable changes. Google generates snippets per query, so consistent queries return consistent snippet shapes, and consistent shapes are what let you parse 10,000 rows with one rule instead of ten.
The 10 hacks
Each one below is a pattern. The bracketed part is your list.
1. Public sector contacts without building a directory scraper
School districts, municipalities and universities publish staff contacts on hundreds of small pages that all look different. Building one recipe per district is a waste.
Pattern: [district name] school principal phone email, [county] school district superintendent contact phone, site:.k12.fl.us [district] principal email
Multiply by: every district or county in your target states. Florida alone gives you 67 counties. Add three phrasings and you are running 201 keywords for full coverage of one state.
2. Email addresses at a specific company
Pattern: "@[domain]" email, site:[domain] "@[domain]", [domain] contact email sales
Multiply by: your entire target account list. If you have 500 companies, that is 500 keywords and one run.
3. Decision makers by title
LinkedIn public profiles put name, title and company in the page title, and Google keeps that structure.
Pattern: site:linkedin.com/in "[title]" "[industry]" [state]
Multiply by: titles times industries times states. Five titles, four industries, ten states is 200 keywords. You are reading the title column here, not the description. No login, no profile visits.
4. Job vacancies with the salary band
Job boards are protected. Their listing pages are heavily indexed.
Pattern: site:linkedin.com/jobs [role] [city] salary, "[role]" salary posted 2026, site:indeed.com [role] [city] pay
Multiply by: roles times cities. Thirty roles across twenty metros is 600 keywords, and you can rerun the same batch weekly to watch hiring volume move.
5. Real estate prices and specs
Portal snippets are almost always the listing spec line, because that is what the page leads with.
Pattern: [bedrooms] bedroom house for sale [city] price, site:zillow.com condo [neighborhood] price sqft, apartment for rent [zip] 2 bed monthly rent
Multiply by: zip codes. A metro area is 40 to 150 zips. Cross it with property type and bedroom count and one market is a few hundred keywords.
6. Product prices, including resale
Pattern: [model] price, site:stockx.com [model] last sale price, "[model]" price size [n] in stock
Multiply by: your model list. Six hundred sneaker SKUs is 600 keywords and gives you a price sheet across every retailer that ranks, in one run.
7. Software and service pricing
Pattern: [tool] pricing per month, [tool] plans price starting at
Multiply by: your competitor set, run monthly. Small batch, high value, because pricing pages are short and their snippets are unusually clean.
8. Local business phone lists
The Maps scraper is better when you need the full record. When you need a name and a number, search is faster and cheaper.
Pattern: [niche] [city] phone number, [niche] [zip] phone, [niche] [city] contact number
Multiply by: niches times zip codes. This is the pattern that scales the hardest, and the one worth starting with if you want to see the volume for yourself.
9. Company firmographics
Pattern: site:crunchbase.com [industry] companies founded employees, "[company]" founded headquarters employees
Multiply by: your account list or your industry list. Enough to size and rank a target list before you spend anything enriching it.
10. Dates: tenders, deadlines, events, filings
Pattern: [category] application deadline 2026 [state], RFP submission deadline [industry] 2026, site:eventbrite.com [industry] conference 2026 date
Multiply by: categories times states, on a weekly schedule. This one is worth running repeatedly rather than once, because the value is in catching the new posting, not in the archive.
What comes back, and what to do with it
The run gives you four columns per result: position, title, description and URL. The description is where your field lives. The title carries names and roles. The URL tells you the source and lets you dedupe.
Ten thousand rows of that is not something you work by hand, so there are two ways to finish the job.
AI parsing on the description column. Phone numbers, prices, dates and salary ranges are regex-friendly, and if the format varies too much, chain an AI automation and tell it which fields to pull into which columns. One instruction applied across the batch. The one rule that matters: tell it to leave the field empty when the snippet does not contain the value. A dataset that looks complete but is invented in 400 places costs you more than a dataset with gaps.
Send it to Second Brain (brain.hexact.io). Export to CSV and you get a file that ages. Push the results into Second Brain and you get a local database you can query, which changes what the data is for.
Instead of filtering a spreadsheet by the columns you defined at export time, you ask questions after the fact. Which zips came back with the fewest results, meaning underserved markets. Which models moved on price since last month. Which districts still have no email on record. Which roles a company started posting that they were not posting in March.
That last one only works because Second Brain keeps every run with a timestamp. A single batch tells you what exists. The same batch run monthly tells you what changed, and what changed is where the money usually is. Nobody sells against a snapshot.
Where this breaks
I am not going to pretend this replaces everything.
Snippets are capped at roughly 160 characters. You get short fields. A phone number, a price, a date, a salary range, a title. You do not get a full product spec table or a complete staff directory.
Snippets are generated per query, so wording changes results. If the field is not coming back, add the field name to the keyword. phone, email, price, salary, deadline, address. Those words are what Google matches against.
Coverage is partial. You get the districts, listings and products that rank. For exhaustive datasets you still need the source.
The rule I use: if the field is short and the page states it plainly, search it in batch. If you need the full structured record, scrape the source. Most people build the scraper first and never test whether the shortcut would have worked. Test the shortcut first. Twenty keywords takes four minutes.
Run it yourself. First test a sample keyword in Google to make sure it shows what you need. Then create a new workflow in Hexomatic (hexomatic.com), paste the list of keywords into Data input, and add the Google Search Scraper.
Or book the Concierge Service and start with working output instead of setup.


