# Urologist Contact Scraper (`scrapido/urologist-contact-scraper`) Actor

🩺 Urologist Contact Scraper gathers urology practice listings from Google Maps with full address, ZIP, phone and website. 📧 Emails and social links from every site. 💊 Built for urology device sales & pharmaceutical outreach teams.

- **URL**: https://apify.com/scrapido/urologist-contact-scraper.md
- **Developed by:** [Scrapido](https://apify.com/scrapido) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Urologist Contact Scraper

**Urologist Contact Scraper** is an Apify actor that automates finding and extracting urology clinic lead generation data from publicly available web sources—especially urologist email finder results like business contact info. If you’re a marketer, researcher, or data team tired of manual lookup, this contact scraping automation helps you scale provider contact information scraping quickly and efficiently.

***

### What is Urologist Contact Scraper? 🔍

**Urologist Contact Scraper** is an automated web scraping actor on Apify designed to search for urologist-related businesses and extract their contact information—emails, phone numbers, and social media profiles—then save everything into a structured dataset.

This urology clinic lead generation tool solves a common pain point: manual prospecting takes too long, especially when you need leads across many locations. Instead of copy-pasting details into your CRM, this urologist contact scraper helps you build a healthcare contact database in minutes.

Use it as a practical urology practice contact extraction solution for B2B healthcare prospecting, provider contact information scraping, and CRM lead enrichment at scale.

***

### What Data Does a Urologist Contact Scraper Collect? 📊

This actor focuses on contact discovery and enrichment, capturing business identity, web presence, and contact methods. It outputs structured rows that include the contact details you need for medical professional data mining and outreach.

| Data Category | Fields Extracted | Description |
|---|---|---|
| Contact | `scraped_emails`, `scraped_phones` | Extracted email addresses and phone numbers found on business websites |
| Identity | `name`, `website`, `place_id` | Business name, website URL, and a place identifier |
| Location | `full_address`, `city`, `state`, `zip`, `country_code`, `lat`, `long` | Address and geolocation fields for easier segmentation |
| Discovery | `scrape_status` | Indicates whether scraping succeeded, failed, or had no website |
| Navigation | `website` | The business website link used for contact extraction |
| Discovery metadata | `pages_scraped` | How many pages were scraped during the website extraction step |

***

### What Do Results from Urologist Contact Scraper Look Like? 👀

Each result is a structured JSON record saved to your Apify dataset. Here’s a real example of what one dataset row can contain:

```json
{
  "name": "Bayview Urology Associates",
  "website": "https://www.bayviewurology.com",
  "phone": "+1 (212) 555-0136",
  "full_address": "1450 Park Ave New York NY 10028 US",
  "city": "New York",
  "state": "NY",
  "zip": "10028",
  "country_code": "US",
  "scraped_emails": [
    "contact@bayviewurology.com",
    "info@bayviewurology.com"
  ],
  "scraped_phones": [
    "+1-212-555-0136"
  ],
  "scraped_social_media": [
    "https://www.linkedin.com/company/bayview-urology-associates/",
    "https://www.facebook.com/bayviewurology/"
  ],
  "emails_found": 2,
  "pages_scraped": 7,
  "avg_rating": 4.3,
  "total_reviews": 118,
  "lat": "40.7659",
  "long": "-73.9602",
  "place_id": "ChIJs9dQpKQ4wokR9JmGZK7JHn8",
  "scrape_status": "success"
}
```

Apify saves results to a dataset (JSON by default). You can export your dataset from the Apify Console anytime.

***

#### Core Features: Urologist Contact Scraper ⚡

| Feature | Benefit |
|---|---|
| ✅ **Urologist search term targeting** | Uses your `googleMapsSearchTerm` to focus on urologist businesses |
| ✅ **Location targeting by region** | Set `googleMapsLocation` (e.g., “New York”) to build region-specific urologist directory leads |
| ✅ **Configurable result cap** | Use `maxBusinesses` to control run size for predictable ROI |
| ✅ **Optional per-location cap** | Toggle `scrapeMaxBusinessesPerLocation` to control whether limits apply per location or globally |
| ✅ **Built-in proxy support** | Includes `proxyConfiguration` to help scraping runs stay stable at scale |
| ✅ **Extracts emails, phones, and social** | Saves `scraped_emails`, `scraped_phones`, and `scraped_social_media` for CRM-ready enrichment |
| ✅ **Structured dataset output** | Dataset rows include consistent fields like `name`, `website`, `full_address`, and `scrape_status` |
| ✅ **Stops when the target is reached** | The actor stops when it reaches your target business count, so you don’t overrun budget |

***

### Getting Started with Urologist Contact Scraper 🚀

1. **Open Apify Store** — Go to [apify.com/store](https://apify.com/store) and search **Urologist Contact Scraper**
2. **Click Try for Free** — Sign in or create a free Apify account
3. **Open the Input Tab** — Configure your scraping parameters
4. **Set Search Term** — Use `googleMapsSearchTerm` (default prefill is `Urologist`)
5. **Choose Locations** — Add one or more entries in `googleMapsLocation`
6. **Set Result Cap** — Adjust `maxBusinesses` to control how many businesses with emails to target
7. **(Optional) Apply per-location limit** — Enable `scrapeMaxBusinessesPerLocation` if you want a cap per location
8. **Run and Export** — Open the dataset tab to preview and export your results

***

### Ways to Use Urologist Contact Scraper 💡

- 🎯 **Urology clinic lead generation** — Build segmented lead lists by state/city for outreach and partnerships
- 📣 **B2B healthcare prospecting** — Collect provider contact information scraping data for scalable sales workflows
- 🔎 **Urologist email finder** — Find business email addresses and pair them with websites and phones
- 🏥 **Medical directory scraping (data mining)** — Assemble a healthcare contact database for research and analysis
- 🧾 **CRM lead enrichment** — Import structured records (address, website, emails found) directly into your CRM
- ⚙️ **Website to email extraction automation** — Speed up website-based contact lookup without manual research sprints

***

#### Input Parameters — Urologist Contact Scraper

```json
{
  "googleMapsSearchTerm": "Urologist",
  "googleMapsLocation": ["New York"],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `googleMapsSearchTerm` | string | ✅ Yes | `Urologist` | Business type or niche the actor searches for (prefilled with `Urologist`) |
| `googleMapsLocation` | array | ✅ Yes | `["New York"]` | Target geographic location(s) used to segment results (for example, `["New York"]`) |
| `maxBusinesses` | integer | No | `5` | Target number of businesses to find (1–1000). The scraper stops when this target is reached |
| `scrapeMaxBusinessesPerLocation` | boolean | No | `false` | If enabled, collects up to `maxBusinesses` results per location; if disabled, applies a single combined total limit |
| `proxyConfiguration` | object | No | `{ "proxy support": true }` | Proxy settings for scraping. Recommended for larger-scale runs |

***

#### Output Parameters — Urologist Contact Scraper

```json
{
  "name": "Bayview Urology Associates",
  "website": "https://www.bayviewurology.com",
  "phone": "+1 (212) 555-0136",
  "full_address": "1450 Park Ave New York NY 10028 US",
  "city": "New York",
  "state": "NY",
  "zip": "10028",
  "country_code": "US",
  "scraped_emails": [
    "contact@bayviewurology.com",
    "info@bayviewurology.com"
  ],
  "scraped_phones": [
    "+1-212-555-0136"
  ],
  "scraped_social_media": [
    "https://www.linkedin.com/company/bayview-urology-associates/",
    "https://www.facebook.com/bayviewurology/"
  ],
  "emails_found": 2,
  "pages_scraped": 7,
  "avg_rating": 4.3,
  "total_reviews": 118,
  "lat": "40.7659",
  "long": "-73.9602",
  "place_id": "ChIJs9dQpKQ4wokR9JmGZK7JHn8",
  "scrape_status": "success"
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `name` | Business Name | text | The business name for the urology-related listing |
| `website` | Website | link | The business website URL used during contact extraction |
| `phone` | Phone | text | The phone value associated with the business listing |
| `full_address` | Address | text | Concatenated address string built from street, city, state, zip, and country code |
| `city` | City | text | City value from the scraped business information |
| `state` | State | text | State value from the scraped business information |
| `zip` | zip | text | ZIP/postal code value from the scraped business information |
| `country_code` | country\_code | text | Two-letter (or similar) country code associated with the listing |
| `scraped_emails` | Emails Found | array | List of email addresses extracted from the business website |
| `scraped_phones` | Phone Numbers | array | List of phone numbers extracted from the business website |
| `scraped_social_media` | Social Media | array | List of social media links extracted from the business website |
| `emails_found` | # Emails | number | Count of emails found for this business |
| `pages_scraped` | Pages Scraped | number | Number of pages processed during the website scraping step |
| `avg_rating` | Rating | number | Average rating value from the business listing |
| `total_reviews` | Reviews | number | Total review count from the business listing |
| `lat` | lat | text | Latitude value for the business location |
| `long` | long | text | Longitude value for the business location |
| `place_id` | place\_id | text | Place identifier from the listing data |
| `scrape_status` | Status | text | Current scraping state (for example, `success`, `failed`, or `no_website`) |

***

### Why Choose This Urologist Contact Scraper? 🏆

If you’re building urologist directory leads or expanding a healthcare contact database, speed and structure matter. **Urologist Contact Scraper** helps you go from a simple urologist email finder query to a clean dataset containing business identity, websites, emails found, phones, and social links. It also supports proxyConfiguration for more reliable scraping at scale and provides consistent dataset output you can export into CRM lead enrichment workflows. For pay-per-result usage, you can cap with `maxBusinesses` to control spend. Need help? Reach out at <scrapidocontact@gmail.com>.

***

### How Many Results Can You Scrape? 📈

Use `maxBusinesses` to define the target number of businesses with emails. The scraper stops once your target is reached, and you can decide whether the limit is global or applied per location via `scrapeMaxBusinessesPerLocation`. In practice, total output depends on how many businesses matching your search term actually surface websites with extractable contact details.

***

### Legal Guidelines for Scraping Urologist ⚖️

This actor collects data only from publicly available sources and extracts contact information such as emails, phone numbers, and social media links from business websites. It does not access private profiles or restricted content. You’re responsible for complying with applicable privacy regulations and relevant website terms when using extracted data for outreach. For any data removal requests, contact <scrapidocontact@gmail.com>.

***

### FAQ — Urologist Contact Scraper ❓

#### How does the Urologist Contact Scraper extract contact information?

It searches for urologist businesses using your `googleMapsSearchTerm` and `googleMapsLocation` inputs, then uses each business’s `website` to extract `scraped_emails`, `scraped_phones`, and `scraped_social_media` into the Apify dataset.

#### What if a business has no website?

For listings without a website, the output will reflect that in `scrape_status` (for example, `no_website`), and the extracted arrays like `scraped_emails`, `scraped_phones`, and `scraped_social_media` will be empty for that row.

#### Can I control the number of businesses returned?

Yes. Use `maxBusinesses` to set the target number of businesses with emails, and use `scrapeMaxBusinessesPerLocation` to decide whether the cap applies per location or as a single total limit across all locations.

#### Does it support proxy configuration for more reliable runs?

Yes. The `proxyConfiguration` input supports scraping proxies via the `proxy support` option and is recommended for larger-scale runs.

#### What dataset fields will I get at the end?

Your dataset includes fields like `name`, `website`, `phone`, `full_address`, `scraped_emails`, `emails_found`, `pages_scraped`, `avg_rating`, `total_reviews`, `place_id`, and `scrape_status` in a consistent order suitable for analysis, exports, and CRM import.

#### How can I use this for urology practice contact lookup?

You can use it as a urology practice contact extraction pipeline: filter by location fields (`city`, `state`, `zip`), then use `scraped_emails` and `scraped_phones` to enrich your CRM. The combination of address + emails found makes provider contact information scraping practical for B2B healthcare prospecting.

***

### Conclusion 🏁

**Urologist Contact Scraper** helps you automate urology contact scraping into a structured dataset—perfect for urology clinic lead generation, CRM lead enrichment, and fast medical professional data mining. Set your `googleMapsSearchTerm`, target locations, cap with `maxBusinesses`, and export ready-to-use results from Apify.

***

### 🆘 Support & Feedback

Have a question or feature request for the **Urologist Contact Scraper**?

If you need assistance, contact: <scrapidocontact@gmail.com>.

### Multiple Email Type

**Email Types** keeps only the kinds of mailbox you want. Every row records what
it was classified as in `emailType`.

| Type | What it matches |
| --- | --- |
| Personal | Free webmail (Gmail, Outlook, Yahoo, iCloud, ...) |
| Business | Company domains — free webmail and institutions excluded |
| Education | `.edu`, `.ac.uk`, `.edu.au` and other academic suffixes |
| Government | `.gov`, `.mil`, `.gov.uk`, `.gc.ca`, ... |
| Non-profit | `.org`, `.ngo`, `.org.uk`, ... |

A business found with no email at all is unaffected — whether those rows are
wanted is already governed by the existing email-only setting.

### Multiple Phone Type

**Phone Types** does the same for numbers, checked against the line's *real*
type rather than a guess. Numbers on ranges where mobile and landline cannot be
told apart are kept rather than dropped, since discarding them would lose good
leads.

### Outreach links

| Field | Meaning |
| --- | --- |
| `telLink` | A clickable `tel:` link for the primary number |
| `whatsappLink` | A `wa.me` chat link, or empty for a landline or an invalid number |
| `whatsappCapable` | Whether the line could support WhatsApp |
| `phoneContacts` | Every kept number with its own type, links and validity |

`whatsappCapable` never claims the person uses WhatsApp — only that the number
is of a kind that could. Turn the links off with **Include WhatsApp links**; the
capability flag is still reported.

# Actor input Schema

## `googleMapsSearchTerm` (type: `string`):

Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `array`):

Target geographic location for the email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `scrapeMaxBusinessesPerLocation` (type: `boolean`):

If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.

## `validateEmails` (type: `boolean`):

Run DNS/MX validation and confidence scoring on every email found, and include the results (confidence score, validation status, role-based/catch-all flags) in the output.

## `minRating` (type: `integer`):

Skip businesses rated below this (1-5 stars). Leave at 0 for no filter.

## `minReviews` (type: `integer`):

Skip businesses with fewer than this many Google reviews. Leave at 0 for no filter.

## `requireWebsite` (type: `boolean`):

Skip businesses with no website listed on Google Maps (they can't be crawled for contact info anyway).

## `leadMode` (type: `string`):

Business Contacts (default) returns the business's generic contact info (info@, main phone, socials). Decision-Maker Finder instead looks for a named person with a job title (e.g. "Jane Smith, Owner") on the business's team/about pages — a best-effort heuristic, not guaranteed on every site.

## `proxyConfiguration` (type: `object`):

Proxy settings for scraping. Recommended for large-scale scraping.

## `emailTypes` (type: `array`):

Which kinds of mailbox to keep. Pick as many as you like; leave empty for every type. A business with no email at all is unaffected by this - whether those rows are wanted is governed by the existing email-only setting.

## `phoneTypes` (type: `array`):

Which kinds of line to keep. Leave empty for every type. Numbers on ranges where mobile and landline cannot be told apart are always kept rather than silently dropped.

## `includeWhatsappLinks` (type: `boolean`):

Add a ready-made wa.me chat link for numbers on a line WhatsApp can run on. The link means the number is in a form WhatsApp accepts - not proof that an account exists.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "Urologist",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "validateEmails": false,
  "minRating": 0,
  "minReviews": 0,
  "requireWebsite": false,
  "leadMode": "Business Contacts",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "emailTypes": [
    "Business"
  ],
  "phoneTypes": [
    "Mobile",
    "Landline"
  ],
  "includeWhatsappLinks": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "googleMapsSearchTerm": "Urologist",
    "googleMapsLocation": [
        "New York"
    ],
    "maxBusinesses": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    },
    "emailTypes": [
        "Business"
    ],
    "phoneTypes": [
        "Mobile",
        "Landline"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/urologist-contact-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "googleMapsSearchTerm": "Urologist",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
    "emailTypes": ["Business"],
    "phoneTypes": [
        "Mobile",
        "Landline",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapido/urologist-contact-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "googleMapsSearchTerm": "Urologist",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "emailTypes": [
    "Business"
  ],
  "phoneTypes": [
    "Mobile",
    "Landline"
  ]
}' |
apify call scrapido/urologist-contact-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/urologist-contact-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qb9YN5AMiKb4U3bD5/builds/tfCCeh2xrOaut0nJO/openapi.json
