Bulk URL Contact Extractor — Single-Fetch at Scale
Pricing
Pay per event
Bulk URL Contact Extractor — Single-Fetch at Scale
Process huge URL lists at high speed: ONE HTTP request per URL, no crawling, no link-following. Returns emails, phones, social links (LinkedIn/X/FB/IG) and address per URL. Built for million-row URL lists. For per-domain crawls use website-email-scraper.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Ale
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
URL Contact Scraper
Extract emails, phone numbers, and social media profiles from any list of web page URLs — no API keys, no login required.
What it does
- Visits each URL you provide and extracts all contact information from the page HTML
- Extracts email addresses (on-domain emails prioritised), phone numbers (international format), and social media links (LinkedIn, Twitter/X, Facebook, Instagram)
- Extracts physical address from schema.org structured data when present
- Returns one record per URL with the page title and all discovered contact data
- Processes URLs concurrently for fast bulk extraction
Why this beats the alternatives
The leading incumbent has 50,000+ users but a 3.9★ rating — users report stale data and missing fields. This actor visits each URL live, so you always get fresh contact data. It handles challenge pages gracefully and skips thin/blocked pages rather than returning empty records.
Use cases
- CRM enrichment — batch-enrich a list of company contact pages with emails and phones
- Sales prospecting — extract contact info from a curated list of target company pages
- Lead generation — scrape contact pages from a list of discovered company URLs
- Research — map social profiles across a portfolio of websites
Input parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
urls | string[] | List of web page URLs to scrape | — |
maxConcurrency | integer | Number of URLs scraped simultaneously | 5 |
requestDelay | integer | Delay between requests per worker (ms) | 500 |
proxyConfiguration | object | Apify proxy settings | {"useApifyProxy": true} |
Tips
- Supply specific pages (contact, about, team) rather than homepages for better email coverage
- Increase
requestDelayto 1000–2000ms for sensitive or rate-limited sites - Use
maxConcurrency: 1when scraping a single domain to avoid rate limits
Output fields
| Field | Type | Description |
|---|---|---|
url | string | The input URL that was scraped |
page_title | string|null | Page title from og:title or <title> |
emails | string[] | Emails found — on-domain emails listed first |
phones | string[] | Phone numbers in international format |
linkedin_url | string|null | LinkedIn company/profile URL |
twitter_url | string|null | Twitter/X profile URL |
facebook_url | string|null | Facebook page URL |
instagram_url | string|null | Instagram profile URL |
address | string|null | Physical address from schema.org |
status_code | integer | HTTP status code of the page |
scraped_at | string | ISO 8601 timestamp |
Pricing
| Event | Rate |
|---|---|
| Actor start | $0.25 (one-time) |
| Per 1,000 pages | $1.50 |
MCP integration
Use this actor directly from Claude or other AI assistants via the MCP Apify integration:
Use apify/nanoscrape/url-contact-scraper to extract contact info from these pages: https://stripe.com/contact, https://twilio.com/company/contact
Scrape emails and phones from these URLs using apify/nanoscrape/url-contact-scraper: ["https://example.com/about", "https://acme.com/contact-us"]
Notes
- Challenge pages (Cloudflare, DataDome) are detected and skipped gracefully; the record is still returned with an empty contact fields
- Pages returning less than 200 bytes are treated as soft blocks and skipped
- Duplicate input URLs are automatically deduplicated
- For best email coverage on company sites, supply
/contact,/about, and/teampages separately