SyncGTM now works inside Claude and ChatGPT. Learn more
All GTM agents

Scrape Phones From Website

/scrape-phones-from-website

Crawl a company website and get back every published phone number: switchboard, sales and office lines, at 0.5 credits per site.

Download Skillscrape-phones-from-website.zip · free

Overview

scrape-phones-from-website crawls a company website and returns every phone number published on it — the homepage plus the contact, about, team, support and location pages. It calls the SyncGTM MCP tool `scrape_phones_from_website` at 0.5 credits per site, and what comes back are company lines: switchboard, sales and office numbers, not a named person's mobile. The skill wraps it for batch runs, so it dedupes your domain list, prices the job before it spends, and labels each number by format rather than dropping raw digits into your CRM.

What it does

  1. 1

    Takes one input: a website URL or a bare domain. `url` is the only parameter the tool has, so there is nothing to tune and nothing to get wrong.

  2. 2

    Crawls the homepage plus contact, about, team, support and location pages, pulling numbers from page text, `tel:` links and embedded markup.

  3. 3

    Returns the site `url` and a flat `phones` array of every number found — one site is one call, however many numbers come back. There is no per-number label in the response.

  4. 4

    Returns switchboard, sales and office lines. It does NOT return a decision-maker's direct dial or personal mobile: for that you need `find_work_phone` or `find_mobile_number` at 12 credits each, from a `linkedin_url`.

  5. 5

    Costs 0.5 credits per call, charged whether the site publishes a number or not. An empty result is normal, not an error.

  6. 6

    The skill strips `www.` and paths so one company is billed once, prices the batch before it runs, labels each number from its format as switchboard, mobile format or unknown, and keeps zero-result domains in the table as blanks.

How to use it

  1. 1

    Download the skill file — it saves as scrape-phones-from-website.zip.

  2. 2

    In Claude, open Settings → Capabilities → Skills and upload the .zip (or unzip the scrape-phones-from-website/ folder into .claude/skills/ for Claude Code).

  3. 3

    Connect the SyncGTM MCP server using the setup guide for your client at docs.syncgtm.com/mcp_server/setup. It is browser sign-in, no API key.

  4. 4

    Paste your domains as bare domains — acme.com, not www.acme.com/contact — and run /scrape-phones-from-website. The skill prices the batch at 0.5 credits per domain and asks before spending.

  5. 5

    The one setting worth tuning is the escalation budget: how many accounts may go to `find_work_phone` at 12 credits each. It defaults to zero, so without it the run stops at the published switchboard on every row.

Use cases

Local business call sheets

Turn a list of local business websites into a dial list carrying whatever office line each site publishes. When you only need to reach the front desk, this is 24x cheaper than a per-person phone lookup.

CRM phone backfill

Fill the empty phone field on every account your CRM already has a domain for. 0.5 credits per account instead of 12, run across the whole segment in one pass.

Bounce recovery

When a sequence dies on undeliverable addresses, pull the company switchboard so the account stays reachable by phone instead of going to the suppression list.

Maps listing verification

Compare the number on a Google Maps listing with the numbers the business publishes on its own site. Catches stale listings and call-tracking numbers before a rep dials one.

GTM workflow examples

Monday local call sheet from Google Maps

  1. 1Run `google_maps_listings` for "med spas in Phoenix" with `max_results` 60 — 2 credits flat, whatever the cap — returning business name, website, phone and rating.
  2. 2Run `scrape_phones_from_website` on the ~45 listings that have a website, one call per domain — 22.5 credits — for the switchboard and office lines the site publishes, then compare them against the single number the Maps listing shows.
  3. 3Run `scrape_emails_from_website` on the same 45 domains — 22.5 credits — so each dial has a contact inbox behind it for the follow-up email.
  4. 4Run `validate_whatsapp` — 1 credit per number, `mobile` as the input — on the numbers that come back in mobile format, to flag the businesses reachable there.

Outcome: A 45-row call sheet carrying whatever office number and contact inbox each site publishes, plus a WhatsApp flag on the mobile-format numbers, built in one sitting for 47 credits plus 1 per WhatsApp check.

Backfill the phone field on 80 CRM accounts

  1. 1Run `check_credits` (free), then export the 80 accounts that have a domain but no phone number on the record.
  2. 2Run `scrape_phones_from_website` across all 80 domains — 40 credits — and write every number found back to the account, labeled switchboard rather than direct dial.
  3. 3For the ~20 domains that publish no number, run `scrape_emails_from_website` — 10 credits — so those accounts still carry a reachable channel.
  4. 4For the 12 tier-1 accounts with a named champion, escalate to `find_work_phone` from the champion's `linkedin_url` — 144 credits — and mark only those rows as direct dials.

Outcome: 60 of the 80 accounts carry a published company number, 12 tier-1 rows also carry a direct dial, and the 20 blanks fall back to whatever inbox the site publishes — 194 credits, against the 960 that sending all 80 to `find_work_phone` would have cost.

Rescue a sequence that died on bounces

  1. 1Run `verify_email` across the 120 addresses in the sequence — 0.3 credits each, 36 total — and pull out the 30 that come back undeliverable.
  2. 2Run `scrape_phones_from_website` on those 30 company domains — 15 credits — to get a switchboard line for each account.
  3. 3Run `find_people_within_company` on the 18 domains that returned a number — 1.5 credits per call flat, 27 total, 5 profiles per call by default — so the rep has a name to ask for at the front desk.
  4. 4Hand reps a list of account, switchboard number and contact name, and suppress the 12 accounts left with neither a deliverable email nor a published number.

Outcome: 18 accounts pulled back out of a dead email list, each with a number to call and a person to ask for, for exactly 78 credits.

Prompts

Paste any of these into Claude once the skill is installed and the SyncGTM MCP is connected.

Scrape phone numbers from acme.com and label each number as switchboard, sales or unknown.
Scrape phone numbers from these 40 domains, one call per domain. Tell me the credit total before you start, then return one row per domain with every number found.
Find med spas in Phoenix with google_maps_listings, cap it at 50 listings, then scrape phone numbers from every listing that has a website. Price the scrape at 0.5 credits per site before you run it, and return business, website, Maps phone and scraped phones side by side.
Here are 25 CRM accounts with a domain and no phone. Scrape phone numbers from each domain, and for any domain that returns nothing, scrape emails from the same site instead. Flag which channel each account ended up with.
Scrape phone numbers from stripe.com. If nothing comes back, do not guess a number — say so and tell me which tool to use next.

Best practices

  • Pass the bare domain. The crawl already covers contact, about, team, support and location pages, so a deep link buys you nothing — and a list mixing acme.com, www.acme.com and acme.com/contact bills three calls for one company.

  • Set the expectation before the run: these are company lines. Tell your client to label them switchboard so nothing lands in a mobile column and reps stop expecting a decision-maker to pick up.

  • Budget for the whole list, not the hits. 0.5 credits is charged per call, and plenty of sites publish no number at all — an empty result is normal and still costs.

  • Forbid guessing, of numbers and of labels. The response is `url` plus a `phones` array with no per-number context, so a line whose purpose is unclear stays `unknown` and a site with no number stays blank — a plausible fabricated number wastes a dial and burns the account.

  • Never re-run a domain that came back empty. The second crawl costs another 0.5 credits and returns the same nothing — send it to `scrape_emails_from_website` (0.5) for a contact inbox instead.

  • Escalate deliberately. `find_work_phone` and `find_mobile_number` are 12 credits each, 24 site scrapes apiece, so reserve them for named contacts at accounts you have already qualified.

Complementary skills

Explore more

Ready to run /scrape-phones-from-website on your own data?