# Changelog of Google Maps Email Scraper 📇 Contact Extractor (emails, phones) (`tagadanar/google-maps-contact-extractor`) Actor

- **URL**: https://apify.com/tagadanar/google-maps-contact-extractor/changelog.md
- **Full Actor documentation**: https://apify.com/tagadanar/google-maps-contact-extractor.md

## Changelog

### 2026-08-29

- A search Google Maps has no businesses for no longer fails the run. Any run
  that delivered zero rows used to end red with "the payload shape has probably
  moved" — including a simple misspelling, which Google answers with its short
  "nothing here" payload. The run now says "Google Maps returned no business
  listings for … check the spelling or widen the area" and ends green. A run
  that received full result pages and still parsed nothing out of them is the
  only case that still reports a parser problem, and it is still red.
- Every run now sets a status message you can read from the run list, built by
  one pure function (`src/status.js`) from explicit counters: searches answered,
  pages read, records parsed, rows delivered, charge limit. A search that was
  refused is named with the reason instead of disappearing into the log.
- README states the actual prices ($0.004 per business row, $0.005 per contact
  found, $0.001 per run start) instead of only naming the events.

### 0.1 (2026-08-19)

First release.

- Google Maps search by the phrase you would type into the app, up to 10
  searches and 120 businesses per search in one run.
- Every business website read for contacts: the homepage, plus up to three
  contact or legal pages when the homepage carried no address. "Mentions
  légales" and "Impressum" are tried before "contact", because on French and
  German sites that is the page legally obliged to carry one.
- Emails from mailto links, from the page text, and from the written-out
  obfuscations (`name [at] domain [dot] fr`). Retina image artefacts, theme
  placeholders and vendor build hashes are filtered out.
- Phone numbers in two tiers: the ones the owner published in a `tel:` link,
  and the ones found in the page text that normalise to a valid international
  number for that country. Anything that did not normalise is dropped.
- LinkedIn, Facebook, Instagram and X profiles, profile URLs only. Share
  buttons and platform home pages are never delivered as a business profile.
- A business with no website, or whose website did not answer, still comes back
  with its full Maps details and a `websiteStatus` that says which.
- Paid placements are filtered out of every page, so an advertisement is never
  delivered or billed as a business.
- A chain with several branches in one search has its website read once, and
  every branch row gets the result.
