Fast Phone Number Extractor | Bulk, Any Website & Low Cost
Pricing
from $5.00 / 1,000 page processeds
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
Maintained by CommunityActor stats
2
Bookmarked
74
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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
- The actor fetches each start URL in the selected mode.
- It follows same-site links up to
maxRequestsPerCrawl. - 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. - It writes one dataset item per page and a
STATSrecord for the run.
Request modes
| Mode | JavaScript | Anti-bot bypass | Speed | Relative cost | Use when |
|---|---|---|---|---|---|
request (default) | No | No | Fast | Low | The number is in the static HTML — most contact pages |
browser | Yes | Yes | Slower | Higher | The 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
maxRequestsPerCrawlwhen numbers may live on deeper pages. - Set the correct
phoneCountryCodefor local numbers without a+country prefix. - Use
browsermode 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:
| Field | Description |
|---|---|
url | The page that was crawled (final URL after redirects) |
title | The page's title |
mode | The fetch mode used (request or browser) |
httpStatus | The HTTP status reported for the page |
phoneNumbers | Array of phone numbers found (see below) |
Each entry in phoneNumbers includes:
| Field | Description |
|---|---|
number | Number in E.164 international format, e.g. +12125550198 |
nationalNumber | National significant number, e.g. 2125550198 |
formattedNumber | Number formatted for its country, e.g. (212) 555-0198 |
country | Detected country code, e.g. US |
source | Where it was found: tel, whatsapp, json-ld, microdata, or text |
text | The exact text or value the number was found in |
position | Start/end offsets in the page text (only for text matches) |
Input
| Field | Type | Description |
|---|---|---|
startUrls | array | Pages to extract phone numbers from |
mode | string | Fetch mode: request (fast HTTP, no JavaScript) or browser (JavaScript + anti-bot bypass). Required, default request |
maxRequestsPerCrawl | number | Maximum number of pages to visit, including links found on the start pages (default: 1) |
phoneCountryCode | string | Country 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
phoneCountryCodeonly 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/whatsapplinks and structured data (json-ld,microdata) take precedence over freetext. - The default key-value store contains a
STATSrecord with the mode used, finished/failed requests, pages with numbers, and unique-number events.uniqueNumbersFoundis the sum of per-page unique numbers; the same number on two pages is counted twice.
License
ISC