Fast Phone Number Extractor | Bulk, Any Website & Low Cost avatar

Fast Phone Number Extractor | Bulk, Any Website & Low Cost

Pricing

from $5.00 / 1,000 page processeds

Go to Apify Store
Fast Phone Number Extractor | Bulk, Any Website & Low Cost

Fast Phone Number Extractor | Bulk, Any Website & Low Cost

Fast Phone Number Extractor efficiently extracts phone numbers from static websites at high speed while keeping usage costs low. It detects various number formats, supports country code filtering. Ideal for cost-effective web scraping projects.

Pricing

from $5.00 / 1,000 page processeds

Rating

0.0

(0)

Developer

Muzaffer Kadir YILMAZ

Muzaffer Kadir YILMAZ

Maintained by Community

Actor stats

2

Bookmarked

74

Total users

1

Monthly active users

3 days ago

Last modified

Share

Fast Phone Number Extractor

Extract phone numbers from any website in bulk. Give it one or more URLs and it returns every valid phone number found on each page, correctly parsed and formatted. It fetches pages through a managed browser-and-proxy backend, so you can choose a fast plain-HTTP mode or a full browser mode that renders JavaScript and bypasses anti-bot protection (Cloudflare and similar).

Use this actor to:

  • Lead generation — collect contact numbers from a list of business websites
  • Directory building — enrich a company list with phone numbers
  • Data verification — check that a phone number listed elsewhere actually appears on a business's site
  • Contact discovery — quickly find the phone number on any single page

Features

  • Two fetch modes: fast request (cheap, no JavaScript) and browser (JavaScript rendering + anti-bot bypass)
  • Multi-source extraction: tel:/sms: links, WhatsApp links, JSON-LD structured data, microdata, and page text
  • Country-aware validation and national/international formatting via libphonenumber-js
  • Per-page deduplication with the source of each number, original text, and match position
  • Run statistics: finished/failed requests, pages with numbers, and unique-number events

How it works

  1. The actor fetches each start URL in the selected mode.
  2. It follows same-site links up to maxRequestsPerCrawl.
  3. For every page it collects phone numbers from tel:/sms: links, WhatsApp links, JSON-LD, microdata, and visible text, then validates each with the selected country as a local-number hint.
  4. It writes one dataset item per page and a STATS record for the run.

Request modes

ModeJavaScriptAnti-bot bypassSpeedRelative costUse when
request (default)NoNoFastLowThe number is in the static HTML — most contact pages
browserYesYesSlowerHigherThe page renders numbers with JavaScript or is protected by Cloudflare / a bot wall

Start with request. Switch to browser only for pages that return nothing in request mode or that block plain HTTP.

Getting more results

  • Start from a contact or location page when you only need one business's number.
  • Increase maxRequestsPerCrawl when numbers may live on deeper pages.
  • Set the correct phoneCountryCode for local numbers without a + country prefix.
  • Use browser mode for JavaScript-heavy or bot-protected sites.
  • Results reflect phone numbers actually exposed by the website. Numbers embedded only in images are not read.

What data you get

Each page you crawl returns:

FieldDescription
urlThe page that was crawled (final URL after redirects)
titleThe page's title
modeThe fetch mode used (request or browser)
httpStatusThe HTTP status reported for the page
phoneNumbersArray of phone numbers found (see below)

Each entry in phoneNumbers includes:

FieldDescription
numberNumber in E.164 international format, e.g. +12125550198
nationalNumberNational significant number, e.g. 2125550198
formattedNumberNumber formatted for its country, e.g. (212) 555-0198
countryDetected country code, e.g. US
sourceWhere it was found: tel, whatsapp, json-ld, microdata, or text
textThe exact text or value the number was found in
positionStart/end offsets in the page text (only for text matches)

Input

FieldTypeDescription
startUrlsarrayPages to extract phone numbers from
modestringFetch mode: request (fast HTTP, no JavaScript) or browser (JavaScript + anti-bot bypass). Required, default request
maxRequestsPerCrawlnumberMaximum number of pages to visit, including links found on the start pages (default: 1)
phoneCountryCodestringCountry hint for parsing numbers that aren't already in international format, e.g. US, TR, GB (default: US)

Examples

One contact page (fast mode)

{
"startUrls": [{ "url": "https://example-business.com/contact" }],
"mode": "request",
"maxRequestsPerCrawl": 1,
"phoneCountryCode": "US"
}

JavaScript-rendered or bot-protected site (browser mode)

{
"startUrls": [{ "url": "https://example.com/iletisim" }],
"mode": "browser",
"maxRequestsPerCrawl": 1,
"phoneCountryCode": "TR"
}

Crawl several pages from multiple sites

{
"startUrls": [
{ "url": "https://example.com" },
{ "url": "https://example.org/contact" }
],
"mode": "request",
"maxRequestsPerCrawl": 20,
"phoneCountryCode": "GB"
}

Output sample

{
"url": "https://example-business.com/contact",
"title": "Contact Us",
"mode": "request",
"httpStatus": 200,
"phoneNumbers": [
{
"number": "+12125550198",
"nationalNumber": "2125550198",
"formattedNumber": "(212) 555-0198",
"country": "US",
"source": "tel",
"text": "(212) 555-0198"
}
]
}

Notes

  • phoneCountryCode only affects numbers written in a local (non-international) format. Numbers already written with a country code, e.g. +1 212 555 0198, are parsed correctly regardless.
  • When the same number is found by more than one source, the highest-confidence source wins: tel/whatsapp links and structured data (json-ld, microdata) take precedence over free text.
  • The default key-value store contains a STATS record with the mode used, finished/failed requests, pages with numbers, and unique-number events. uniqueNumbersFound is the sum of per-page unique numbers; the same number on two pages is counted twice.

License

ISC