Unadhi Guides

Google listing vs website phone check: one sheet that flags every local business whose Google Maps number differs from the number on its own website

Updated 27 Oct 2026 · Disclosure: the website contact scraper linked below is an Unadhi product on the Apify Store. This guide is free, and the sheet also works if you copy the numbers by hand. Current Apify pricing is only on the Store page. This page has no affiliate links and nobody paid to be mentioned. Google Maps data comes from a separate Apify Actor that Unadhi does not make.

Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.

What you get: one Google Sheet with one row per business that puts the phone number on its Google Maps listing next to every phone number its own website shows. Each row gets a Result (Match / Different / No phone on website / No phone on Google / Skipped), the page the matching number was found on, and a plain Next step. Web and local SEO agencies use it to check client sites before a call; owners of several branches use it to catch the branch whose website still shows an old number. Formulas are below. The example rows are made up.

The finished sheet

check tab (example rows are made up)

BusinessDomainStatusGoogle phoneWebsite phonesResultFound onNext step
Smile Dentalsmiledental.exampleok+914012345678+914012345678, +919800000001Matchsmiledental.example/contactOK: same number on Google and the website
Corner Bakerycornerbakery.exampleok+914022223333+914044445555DifferentAsk the owner which number is right, then fix the other place
City Physiocityphysio.exampleok+914066667777No phone on websiteAdd the number to the contact page and footer as a tap-to-call link
Green Floristgreenflorist.exampleok+914088889999No phone on GoogleOwner adds a phone to the Google Business Profile
Big Chain Storebigchain.exampleblocked-by-terms+911800000000SkippedCheck the website by hand

Why check the two numbers against each other

Step 1: get the Google listings

Run a Google Maps scraper on Apify for your search (for example "physiotherapist in Hyderabad") or for your own list of places. The popular Google Maps Scraper (made by Compass, not by us) returns title, website and phoneUnformatted (the phone in international format, like +17183565168) for each place. Note the run's dataset ID.

Agency checking existing clients? Skip this step and type the client list straight into the scrape tab (see the free route below).

Step 2: run the contact scraper on those websites

Open the website contact scraper and set the input like this:

{ "datasetId": "PASTE_THE_MAPS_DATASET_ID", "datasetCarryFields": ["title", "phoneUnformatted", "address", "placeId"], "maxPagesPerSite": 5, "defaultCountry": "IN", "checkEmailMx": false }

What it does, as written in the Actor's input schema and code on 27 October 2026:

Export the dataset as CSV. In your sheet use File → Import → Upload, choose "Insert new sheet", untick "Convert text to numbers, dates and formulas" (otherwise +91... numbers lose their plus sign), and rename the tab scrape. Headers look like sourceItems/0/phoneUnformatted and phones/0/phone, so the formulas find columns by header name.

Free route

For a handful of businesses, make a scrape tab with the headers domain, status (type ok), sourceItems/0/title, sourceItems/0/phoneUnformatted, phones/0/phone, phones/0/foundOn, phones/1/phone, phones/1/foundOn. Copy the number from the Google listing and from the website, both written as +, country code, then digits with no spaces. The formulas work the same.

Step 3: build the check tab

Create a tab named check, put these headers in row 1 and these formulas in row 2, and fill down as many rows as scrape has.

ColHeaderFormula (row 2)
ABusiness=IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH("sourceItems/0/title", scrape!$A$1:$ZZ$1, 0)), "")
BDomain=IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH("domain", scrape!$A$1:$ZZ$1, 0)), "")
CStatus=IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH("status", scrape!$A$1:$ZZ$1, 0)), "")
DGoogle phone=IFERROR(REGEXREPLACE(TO_TEXT(INDEX(scrape!$A2:$ZZ2, MATCH("sourceItems/0/phoneUnformatted", scrape!$A$1:$ZZ$1, 0))), "[^0-9+]", ""), "")
EWebsite phones=IFERROR(TEXTJOIN(", ", TRUE, FILTER(scrape!$A2:$ZZ2, REGEXMATCH(scrape!$A$1:$ZZ$1, "^phones/\d+/phone$"))), "")
FResult=IFS(C2<>"ok", "Skipped", AND(D2="", E2=""), "No phone anywhere", D2="", "No phone on Google", E2="", "No phone on website", ISNUMBER(SEARCH(D2, E2)), "Match", TRUE, "Different")
GFound on=IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH(SUBSTITUTE(INDEX(scrape!$A$1:$ZZ$1, MATCH(D2, scrape!$A2:$ZZ2, 0)), "/phone", "/foundOn"), scrape!$A$1:$ZZ$1, 0)), "")
HNext step=IFS(F2="Match", "OK: same number on Google and the website", F2="Different", "Ask the owner which number is right, then fix the other place", F2="No phone on website", "Add the number to the contact page and footer as a tap-to-call link", F2="No phone on Google", "Owner adds a phone to the Google Business Profile", F2="Skipped", "Check the website by hand", TRUE, "Find a working number before anything else")

Notes on the formulas:

Step 4: work the list

Add a tab named plan. In A1: =QUERY(check!A2:H, "select F, count(B) where B is not null group by F order by count(B) desc label F 'Result', count(B) 'Businesses'", 0). Fix your own or your clients' Different and No phone on website rows first; they are the ones losing calls today.

Agencies: a Different row on a business that is not your client is a reason to offer help, not to send bulk email. Contact one business at a time, say how you found the mismatch, and honour every "no".

Partner programme opening soon

Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.

Frequently asked questions

Do I need both scrapers?

No. For a few businesses, copy both numbers by hand into the scrape tab. The scrapers save time when you check dozens or hundreds.

Why does a number show as Different when it looks the same?

Usually one side lost its plus sign or country code on import. Re-import the CSV with "Convert text to numbers, dates and formulas" unticked.

Does the contact scraper read Google Maps?

No. It reads only each business's own website. The Google listing data comes from a separate Google Maps scraper whose dataset you pass in.

What does the Unadhi Actor cost?

No Actor fee during launch. You pay Apify only for the platform usage of each run; Apify's free plan includes $5 of usage a month.

Not legal advice. Use public business phone numbers only for business contact, follow anti-spam and telemarketing rules where you are, and honour every opt-out. Spotted an error? Write to mininglife7@gmail.com and we correct it.

Sources

Related

← All guides

Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.