Local SEO

One word, one country, one button.

A Local SEO campaign finds every business of a given kind in a whole country, reads their website, checks their email actually works, and builds them a listing. Two fields start it. About forty more sit underneath for when you want them — and this page shows you both.

Three ways to start one

They all do the same thing. Use whichever suits the day.

Click it yourself

Two boxes and a button on one screen. Walked through below.

Ask an agent

Tell it what to search and which country. It sets the campaign up and watches it for you.

Ask your own assistant

Claude Code, Antigravity, whatever you already use. Connect it once, then ask in plain words.

SpiderIQ is an AI-native operating system for agencies — it is built for assistants first. The dashboard exists for people who want to watch it happen with their own eyes. If you would rather just say what you want out loud and have it run, that is the intended way to use it, not a shortcut.

Step one: what, and where

The campaign form with a one-word search query and a country selected
Two required fields. Nothing else has to be touched to launch.

One word in the first box. restaurant. hotel. barber. Not a sentence — the search runs against Google Maps, and a phrase narrows it to nothing.

A country or a US state in the second. The moment you pick one it tells you how many towns it will search. Denmark is 75. A large US state runs to around 950. That number is the honest measure of how big the job is.

The location picker filtered to a single country, showing the town count beside it
Type the first few letters, then click the row. The list holds every country and every US state.

Step two: how wide to cast

A whole country is the default, not the only option. Four ways to draw the boundary:

The location filter offering all locations, cities only, by population, or specific regions
The count updates as you narrow, so you can see the cost of the decision before you commit.
FilterWhat it doesUse it when
All locationsEvery city in the countryYou want total coverage of a market
Cities onlyExcludes postcode-level splitsYou want breadth without the long tail
By populationFilters by city sizeOnly the towns big enough to hold your buyer
Specific regionsPick states, with optional ZIP depthA territory, a franchise map, one rep's patch

Step three: how deep to read each site

This is the dial that decides both quality and cost, so it is worth understanding. Four modes, each with a real per-site time:

Four website extraction modes with page counts and per-site timings
Lead Research is the recommended default and the one selected unless you change it.
ModeDepthSpeedBest for
Quick Contacts5 pages~3 sec/siteCold outreach lists — emails and phones, fast
AI Context5 pages~5 sec/siteAI sales agents — builds an AI-ready company document
Lead Research25 pages~15 sec/siteSales research — full intel with team and company
Deep Extract50 pages~30 sec/siteEnterprise B2B — maximum coverage of complex sites

And about forty more dials underneath

Every one of them ships already set correctly, which is why two fields are enough to launch. They are there for the campaign where the default is not what you want.

Google Maps options including results per location, language, reviews, photos, phone validation and image storage
The Maps group alone: results per town, the locale results come back in, and four toggles.
GroupWhat you can change
MapsResults per town, search locale across 14 languages, review content, business photos, phone validation, image storage
CrawlPages per site, crawl strategy (best-first, breadth-first, depth-first), which page types to prioritise, page timeout
JavaScript sitesFull browser rendering for JavaScript-driven sites, with its own timeout
ExtractionTeam members, company information, and AI analysis of business pain points
Summary documentAn AI-written markdown summary per business — cleanup level, length cap, and duplicate-section stripping
Lead scoringGive it your product description and your ideal customer, and every lead comes back scored against them
Email checksProfile-photo lookup, spam-blacklist checks, emails per business, SMTP timeout
OutreachPush finished leads straight into an outreach campaign, with per-field mapping

Then five steps run on their own

The five campaign steps listed down the side of the screen
The same five steps run on every campaign, in this order, whether you watch them or not.
StepWhat it doesWhy it takes the time it does
1 · FindReads Google Maps for every town in the countryAbout 14 minutes per town — roughly two thirds of the whole job
2 · ReadOpens each business website and pulls out contacts, team and a descriptionRuns many at once; this part is quick
3 · CheckTests every email address before it is usedWith step 2, about 8 minutes a batch
4 · BuildCreates a VayaPin directory listing, with the description written in the local languageOnly for businesses that cleared step 3
5 · RescueNo usable email? Finds the Instagram, Facebook or LinkedIn insteadOnly runs for the ones step 3 rejected

Note the order. The email is verified before the listing is built, not after — so nothing is created for a business we cannot actually reach.

How long before something is genuinely wrong

Reading Google Maps is the slow part, and no amount of extra capacity changes it: browser navigation, scrolling, and cooldowns come to roughly 14 minutes for every town. A country-sized campaign therefore runs for hours to days, not minutes.

If the status still says Running and the result count is still climbing, it is working. Silence is not a fault.

Where a person still decides

WhenThe decision
BeforeWhich kind of business, and which country. This is the whole targeting decision, and it is one word plus one dropdown.
BeforeWhether finished leads should be pushed into an outreach campaign. That switch is off by default, and the campaign it points at is locked once the run starts — so leave it off and you will build every listing and email nobody.
AfterRead the first twenty results. Are they the kind of business you asked for? Category matching is the one place a Maps search can quietly drift.
AfterAnswer anyone who replies. Speed here is worth more than anything upstream of it.

Reading the result

The Campaigns tab carries a status and a progress count for every run. Two columns tell you everything.

If it saysIt meansDo this
RunningWorking. The count climbs as it goesNothing. Come back tomorrow
SucceededFinished cleanlyCheck the count looks sensible for the size of the country
DegradedFinished, but parts of it struggledUsable. Worth looking at why
StoppedSomeone halted itStart a new one if that was not deliberate
FailedIt fell overRun it again. A re-run of a failed campaign routinely returns a hundred times the results

A campaign that ends Failed is not a dead end and it is not unusual — a country-wide crawl touches a lot of moving parts. The re-run is the fix, and it costs you one click.

Or skip the screen entirely

Every option on this page is also a field your own assistant can set. The same campaign, launched from Python, JavaScript or a single curl:

The generated code for launching a campaign, with Python, JavaScript and cURL tabs
Generated per campaign, with your own token. Hand it to Claude Code or Antigravity once and you never open the dashboard again.

That is the point of the whole thing. The screen is a convenience; the campaign is an instruction, and instructions are what assistants are good at.

Want this pointed at your market?

Tell me what you sell and where, and I will show you the size of the list before you commit to anything.

Talk to me →