Enrich a prospect list with the phone numbers Google Maps doesn't provide

You scraped a zone: 400 businesses, their addresses, their websites. And a phone column that's half empty. Some records have no number at all. Others show a nine-digit switchboard that goes to an automated phone menu, where your call never reaches a person.

The number almost always exists. It's just somewhere else: on the website's contact page, in a team signature, at the bottom of the legal notice. A map listing gives one main number per business. The website often shows several: a direct line, a sales mobile, sometimes a fax. The goal is to fill the missing numbers across the whole list, row by row, without manually reopening 400 websites.

Module phones_extra: additional phone numbers

What the listing gives
+33 1 23 45 67 89 (switchboard)
→
What the website also exposes
+33 6 12 … mobile
+33 1 23 45 67 92 direct line

For each prospect with a website, the module reads the public pages, extracts phone numbers, validates them, and normalises them to E.164. The empty columns in your list get filled in.

Why a Google Maps listing only gives one number (often the wrong one)

Because a map source publishes one canonical number per establishment. That's how listings work: one business, one number. But most companies have several lines: reception, direct sales, a manager's mobile, support. The number on the listing is usually the switchboard, meaning the one that filters the most.

This produces two recurring gaps in a scraped list. The first: records with no phone number at all, because the establishment didn't fill one in on the map. The second is harder to spot: a number that's there but unusable, such as a generic switchboard, a voicemail, a shared line. In both cases, the list looks complete when it really isn't.

Where additional numbers are: on the prospect's website, and it's legal

On the public pages of each company's website: home page, contact page, team pages, and especially the legal notices (mentions légales). In France, a professional website must publish a direct means of contact. Publishing a phone number is one of those legal obligations.

According to Service-Public.fr (legal notices for a website), a professional website must include, among its mandatory disclosures, an email address and a phone number to contact the business, in information that is "easily accessible". In other words, the website is required to show the number the map leaves out. That's where the module looks for it, using the same public-page extraction logic as for SIRET / SIREN enrichment from legal notices.

How OutSend enriches your prospect list with additional phone numbers

The phones_extra module starts from your existing list, for example the output of a Google Maps scrape exported to CSV. For each row that has a website, it crawls the public pages to extract all phone numbers, validate them, and normalise them. Records without a website are skipped from the start: the website is the source.

  1. Website filter. Any prospect without a site_web value is excluded at launch. The module never invents a number: it either reads one from a real page, or returns nothing.
  2. Public page crawl. Home, contact, team pages, legal notices: the places where a number is exposed. The prospect's address is used to guide country detection for ambiguous formats.
  3. Extraction and validation. Every digit sequence that looks like a phone number is tested against Google's phonenumbers library. Anything that fails validation is discarded.
  4. E.164 normalisation and deduplication. Each accepted number is rewritten in E.164 format, then compared against the number already on the record. A duplicate of the switchboard is not added; only new numbers fill the column.

As output, your list comes back with five additional columns: phones_extra (every additional number found on the site), phones_extra_count (how many), phones_source_urls (the pages they were read from), phones_mobile (the mobiles, detected via the national numbering plan) and phones_fixed (the other numbers). An empty cell means the module ran but found nothing of that type, not that it failed. Everything exports with the list in CSV, JSON, or XLSX.

E.164: why all numbers come out in the same format

Because a list of numbers each written in its own way is unusable in bulk. "01.23.45.67.89", "0123 456 789", "+33 (0)1 23 45 67 89" all refer to the same line, but no calling tool or CRM knows that. E.164 normalisation rewrites everything into a single, unambiguous form, ready to dial or import.

01.23.45.67.89  →  +33123456789
06 12 34 56 78  →  +33612345678
+33 (0)1 23 45 67 92  →  +33123456792

E.164 is the international numbering plan defined by ITU-T recommendation E.164 (ITU): country code followed by the national number, with no spaces or punctuation. For France, the country code is +33 and the leading 0 of the national number is dropped. It's the format expected by CRMs, campaign tools, and telephony APIs.

Normalisation also makes the field filterable. Once in E.164, the module distinguishes a landline from a mobile based on the national plan. According to ARCEP (the French telecoms regulator, numbering page), numbers starting with 01 to 05 are landlines, while those starting with 06 or 07 are mobiles. This is what allows the phones_mobile column and the phones_fixed column to be filled separately, making it possible to target mobiles when your approach calls for it.

Enriching your prospect list with additional phone numbers: three concrete use cases

Three situations where filling the gaps makes a list more useful without making it longer.

Local B2B list with gaps in the phone column. 300 tradespeople scraped, a third with no usable number. The module crawls their websites, fills in direct landlines and mobiles where found. The same list becomes callable without starting a new extraction.

Getting past a generic switchboard. A list of SMEs where every record points to a switchboard. By reading the contact page and team page, the module surfaces more direct lines when they are published, so your prospects are easier to reach.

Pre-qualification before a campaign. Combining additional numbers with cleanup: running the list through the dead URL checker before crawling avoids searching for a number on a site that no longer exists, then the social media extractor adds non-phone channels. Everything chains together in a no-code prospecting pipeline.

Need an overview? See all OutSend features.

What the module does not do

It never invents a number. If there is no website, or no readable number on the public pages, the row comes back without enrichment, with empty columns. The module also does not identify who holds a line, nor does it verify that a number is still assigned: it extracts, validates the format, and normalises. To go further, this enrichment combines with other modules in the suite, such as the email finder and legal data enrichment.

On the compliance side, the numbers read come from pages the company is required to make public. Building a clean phone file remains your responsibility, and all B2B telephone prospecting follows its own rules, covered in our guide on B2B cold calling, Bloctel, and the opt-in rules.

FAQ: enriching a list with phone numbers Google Maps does not provide

Does the module find a number for every record?

No. It enriches rows whose website publishes a readable number on its public pages. A record with no website, or with a website that exposes no number, comes back without enrichment rather than with an approximate value.

Where do the additional numbers come from?

From the public pages of each prospect's website: home page, contact page, team pages, and legal notices (mentions légales). In France, a contact phone number is mandatory on professional websites under legal notice regulations (Service-Public.fr). The module reads those pages, not a reconstructed database.

What is E.164 format and why use it?

E.164 is the international numbering plan (ITU-T recommendation E.164): country code + national number, with no spaces or punctuation, for example +33612345678. All numbers found are rewritten in this form so they can be imported directly into a CRM or calling tool, and compared with each other.

Does the module distinguish between landlines and mobiles?

Yes. Once normalised, numbers are classified according to the national plan: per ARCEP, 01 to 05 designate landlines and 06/07 designate mobiles. The module therefore fills a phones_mobile column distinct from the phones_fixed column, making it easy to filter afterwards.

What does the output look like, and in what format?

Your list comes back with five added columns: phones_extra, phones_extra_count, phones_source_urls, phones_mobile and phones_fixed. Numbers are normalised to E.164 and deduplicated against the number already present. An empty column means "nothing found of that type", not an error. Export is available in CSV, JSON, or XLSX alongside the rest of the list.

Do I need to start from scratch, or can I enrich an existing list?

The module is designed to enrich a list that already exists. It takes your businesses with their websites as input, whether they come from an OutSend scrape or your own file, and adds the phone columns on top, without triggering a new extraction. It can also be chained downstream of a scrape inside a pipeline.

Run this on your own lists

This step and the others in a single pipeline. The alpha is free.

Get started for free