# Healthcare Practice Lead Scraper - Verified Emails (`qaseemiqbal/healthcare-practice-lead-scraper-verified-emails`) Actor

Find healthcare practices from Google Maps and business websites. Extract dentists, doctors, clinics, pharmacies, chiropractors, and more with verified emails, phone numbers, websites, ratings, social profiles, and CRM-ready exports for outreach and lead generation.

- **URL**: https://apify.com/qaseemiqbal/healthcare-practice-lead-scraper-verified-emails.md
- **Developed by:** [Muhammad Qaseem Iqbal](https://apify.com/qaseemiqbal) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Healthcare Practice Lead Scraper - Verified Emails 🩺📍✉️

Build fresh healthcare lead lists from Google Maps and business websites. Choose a healthcare business type, enter one or more locations, and get a clean table of practices with names, phone numbers, addresses, websites, ratings, social profiles, emails, and email verification status.

This Actor is made for people who need healthcare business contacts without manually copying data from Google Maps and individual websites. It is useful for sales teams, marketing agencies, dental suppliers, medical device companies, healthcare SaaS companies, recruiters, local SEO teams, and lead generation agencies. 🚀

### What This Actor Does 🧭

Healthcare Practice Lead Scraper helps you:

- 🔎 Find healthcare businesses on Google Maps by location
- 🦷 Search dentists, doctors, clinics, orthodontists, chiropractors, pharmacies, physical therapists, veterinarians, and custom specialties
- 🌐 Visit each business website when available
- ✉️ Find public business email addresses from websites
- ✅ Check email quality with clear status labels
- 📱 Collect social profile links when found
- 📊 Save everything into an Apify dataset that you can export
- 📁 Create optional HubSpot and Salesforce CSV files
- 🔁 Run the same search again later with Apify schedules

In simple terms: you give the Actor a business type and a place, and it gives you a ready-to-use healthcare lead list. 🎯

### Quick Start ⚡

1. 🏥 Choose a business type, such as `Dentist`, `Doctor`, or `Clinic`.
2. 📍 Enter a location, such as `Dallas, TX`, `Phoenix, AZ`, or `90210`.
3. 🔢 Pick how many results you want.
4. ✉️ Leave email search enabled if you want website emails.
5. ▶️ Click **Start**.
6. 📊 Open the **Dataset** tab to view or download your leads.

For the cheapest first test, use one city and `10` to `25` results. 💸

### Popular Use Cases 💼

| Use case | Example |
|---|---|
| 🦷 Dentist email list | Build a list of dental offices in Dallas, Austin, or Miami. |
| 🏥 Clinic prospecting | Find urgent care clinics, medical clinics, or specialty practices. |
| 📣 Marketing outreach | Create local healthcare prospect lists for ads, SEO, or website services. |
| 🧰 Dental or medical sales | Find practices that may need supplies, software, or equipment. |
| 👩‍⚕️ Recruiting | Find clinics and practices in a hiring territory. |
| 📈 Market research | Compare locations by rating, review count, website presence, and contact availability. |
| 🔁 Lead refreshes | Schedule recurring runs to keep city or territory lists updated. |

### What Data You Can Get 📦

| Data point | What it means |
|---|---|
| 🏷️ Business name | Practice or clinic name from Google Maps. |
| 🩺 Category | Business type, such as Dentist, Clinic, Pharmacy, or Chiropractor. |
| 📍 Address | Full address, plus city, state, postal code, and country when available. |
| ☎️ Phone | Public business phone number from the listing. |
| 🌐 Website | Website listed on Google Maps. |
| 🗺️ Google Maps URL | Direct link to the Google Maps listing. |
| ⭐ Rating | Google star rating when available. |
| 💬 Review count | Number of Google reviews when available. |
| ✉️ Email | Best public business email found on the website. |
| ✅ Email status | Plain status such as verified, DNS-valid, unknown, blocked, invalid, or not found. |
| 📬 All emails | Full list of discovered emails with source pages. |
| 📱 Social links | Facebook, Instagram, LinkedIn, X/Twitter, YouTube, or TikTok links when found. |
| 🧾 Crawl status | Whether the website was checked successfully. |
| 🕒 Scraped at | Timestamp showing when the lead was collected. |

### Supported Healthcare Searches 🏥

Built-in business types include:

- 🦷 Dentists
- 👨‍⚕️ Doctors
- 🏥 Clinics
- 😁 Orthodontists
- 🦴 Chiropractors
- 🏃 Physical therapists
- 💊 Pharmacies
- 🐾 Veterinarians

You can also use custom searches such as:

- `pediatric dentist`
- `cosmetic dentist`
- `urgent care clinic`
- `dermatology clinic`
- `compounding pharmacy`
- `physical therapy clinic`

### Example Input 🧪

This is a low-cost starter run:

```json
{
  "businessType": "dentist",
  "locations": ["Dallas, TX"],
  "maxResults": 25,
  "enrichEmails": true,
  "verifyEmails": true,
  "smtpVerification": false,
  "enrichSocials": true,
  "maxPagesPerWebsite": 3,
  "stopAfterEmailFound": true,
  "maxEmailsToVerify": 2,
  "outputPreset": "full"
}
````

#### Custom Search Example 🔎

```json
{
  "businessType": "custom",
  "searchTerms": ["pediatric dentist", "orthodontist"],
  "locations": ["Phoenix, AZ", "Scottsdale, AZ"],
  "maxResults": 40,
  "enrichEmails": true,
  "verifyEmails": true,
  "smtpVerification": false,
  "onlyWithEmail": true
}
```

### Important Settings Explained 🛠️

| Setting | Plain-English explanation |
|---|---|
| `businessType` | The type of healthcare business to search for. |
| `locations` | Cities, ZIP codes, counties, or metro areas. Use specific places, not whole countries. |
| `searchTerms` | Custom search phrases, required when `businessType` is `custom`. |
| `maxResults` | Maximum number of leads to save. |
| `enrichEmails` | Visit business websites to look for public emails. |
| `verifyEmails` | Check discovered emails for basic quality. |
| `smtpVerification` | Extra email check that can be slower and less predictable. Off by default to save cost. |
| `enrichSocials` | Look for social media links on business websites. |
| `onlyWithEmail` | Save only leads where an email was found. |
| `onlyVerifiedEmails` | Save only SMTP-verified emails. This can exclude real emails when mail servers block checks. |
| `maxPagesPerWebsite` | How many pages to check on each business website. Lower is cheaper. |
| `stopAfterEmailFound` | Stop checking extra pages after finding an email. Recommended for low-cost runs. |
| `outputPreset` | Choose normal dataset only, HubSpot CSV, Salesforce CSV, or all outputs. |

### Example Output 📊

Each saved item represents one business:

```json
{
  "searchQuery": "dentist Dallas, TX",
  "businessType": "dentist",
  "location": "Dallas, TX",
  "name": "Lakewood Family Dental",
  "category": "Dentist",
  "address": "6333 E Mockingbird Ln, Dallas, TX 75214",
  "city": "Dallas",
  "state": "TX",
  "postalCode": "75214",
  "phone": "(214) 555-0138",
  "website": "https://www.lakewoodfamilydental.example",
  "mapsUrl": "https://www.google.com/maps/place/...",
  "rating": 4.8,
  "reviewCount": 214,
  "email": "info@lakewoodfamilydental.example",
  "emailVerified": null,
  "emailVerificationStatus": "mx_exists",
  "emailVerificationNote": "Domain has MX records; SMTP verification was not requested.",
  "emailSourceUrl": "https://www.lakewoodfamilydental.example/contact",
  "socialLinks": {
    "facebook": "https://www.facebook.com/lakewoodfamilydental",
    "instagram": "https://www.instagram.com/lakewoodfamilydental",
    "linkedin": null,
    "twitter": null,
    "youtube": null,
    "tiktok": null
  },
  "websiteCrawlStatus": "success",
  "emailExtractionStatus": "found",
  "scrapedAt": "2026-06-16T10:30:00.000Z",
  "source": "google_maps"
}
```

### Email Statuses In Plain English ✅

Email checks are helpful, but no scraper can guarantee that every email will accept your message. This Actor shows clear labels so you can decide what to use.

| Status | Meaning |
|---|---|
| ✅ `smtp_verified` | The mail server accepted the recipient check. Strongest signal. |
| 📬 `mx_exists` | The email domain can receive mail, but SMTP was not checked or was inconclusive. |
| 🌀 `catch_all` | The domain may accept many addresses, so the exact email cannot be fully confirmed. |
| 🧪 `syntax_valid` | The email format looks valid, but DNS/SMTP was not checked. |
| 🚧 `blocked` | The mail server blocked or limited the verification attempt. |
| ❌ `invalid` | The email failed syntax, DNS, or SMTP checks. |
| ❓ `unknown` | The check did not return a clear answer. |
| 🔍 `not_found` | No email was found on the website. |
| ⏭️ `not_checked` | Email checking was disabled. |

### Exports And CRM Files 📁

Your main results are saved in the Apify dataset. You can download them as:

- 📄 CSV
- 📊 Excel/XLSX
- 🧱 JSON
- 🧾 JSONL
- 🌐 HTML
- 🧩 XML
- 📰 RSS

If you choose a CRM output preset, the Actor also creates:

| File | Use |
|---|---|
| `hubspot.csv` | Import into HubSpot. |
| `salesforce.csv` | Import into Salesforce Leads. |
| `RUN_SUMMARY.json` | See counts, warnings, filters, and run details. |

CRM fields can differ by account. Always review the CSV before importing into a live CRM. 📌

### How To Keep Runs Cheap 💸

This Actor is configured with cost-conscious defaults, but your choices still matter.

For the lowest-cost runs:

- ✅ Start with `10` to `25` results
- 📍 Use one specific city or ZIP code
- 🔎 Avoid broad searches like `USA` or `United States`
- ✉️ Keep `smtpVerification` off unless you really need it
- 🛑 Keep `stopAfterEmailFound` on
- 🌐 Keep `maxPagesPerWebsite` low, such as `2` or `3`
- 📁 Use `outputPreset: "full"` unless you need CRM CSV files
- 🔁 Test small before scheduling larger runs

Google Maps may return fewer results than requested. That is normal and depends on the location, category, and search term. 🗺️

### Automation Options 🔁

You can use this Actor manually or automate it with Apify:

- ⏰ **Schedules:** refresh leads weekly or monthly
- 🔔 **Webhooks:** notify your system when a run finishes
- 🧩 **Integrations:** send results to Google Sheets, Make, Zapier, Airtable, n8n, Slack, or Airbyte
- 🛠️ **API:** start runs and fetch datasets from your own tools
- 📦 **Datasets:** store, preview, filter, and export results

### Good Locations Vs Bad Locations 📍

Use specific locations for better results:

| Good ✅ | Avoid 🚫 |
|---|---|
| `Dallas, TX` | `USA` |
| `Plano, TX` | `United States` |
| `90210` | `worldwide` |
| `Phoenix metro` | `all cities` |
| `Orange County, CA` | empty location |

For a large territory, enter several cities or ZIP codes instead of one huge region. 🧭

### Responsible Use ⚖️

This Actor is designed to collect publicly available business information from Google Maps listings and business websites.

It does not:

- ❌ access private patient records
- ❌ log into websites
- ❌ collect consumer email databases
- ❌ guess private personal emails
- ❌ send outreach messages
- ❌ provide legal advice

You are responsible for how you use the data. Make sure your scraping, storage, outreach, and marketing workflows follow applicable laws, platform terms, privacy rules, GDPR, CAN-SPAM, CASL, and other local requirements. Use the data responsibly and respect opt-out requests. ✅

### FAQ 🙋

#### Can I build a dentist email list? 🦷

Yes. Choose `Dentist`, enter your target locations, and keep email enrichment enabled. The Actor searches Google Maps, visits practice websites, and saves public business emails when found.

#### Are emails guaranteed to work? ✅

No. Email verification improves confidence, but it cannot guarantee delivery. Some mail servers block checks or return unclear answers. The Actor shows a transparent status for each email.

#### Why do some leads have no email? 🔍

Some businesses do not publish an email address. They may use only a contact form, have no website, hide emails behind scripts, or block crawlers.

#### Can I search multiple cities? 🏙️

Yes. Add several locations, such as `Dallas, TX`, `Plano, TX`, and `Fort Worth, TX`. The Actor deduplicates overlapping results when possible.

#### Can I export to CSV or Excel? 📊

Yes. Apify datasets can be exported as CSV, Excel/XLSX, JSON, JSONL, XML, HTML, or RSS.

#### Can I send leads to HubSpot or Salesforce? 📁

Yes. Set `outputPreset` to `hubspot`, `salesforce`, or `all` to create CRM-ready CSV files.

#### Can I use this through an API? 🛠️

Yes. You can run the Actor with the Apify API and fetch results from the default dataset.

#### Is this only for dentists? 🏥

No. It supports dentists, doctors, clinics, orthodontists, chiropractors, pharmacies, physical therapists, veterinarians, and custom healthcare searches.

### Troubleshooting 🧯

| Problem | Likely reason | What to try |
|---|---|---|
| No results | Location is too broad or search is too narrow | Use a city, ZIP code, or simpler search term. |
| Fewer results than expected | Google Maps returned fewer listings | Add nearby cities or related search terms. |
| No emails found | Website has no visible email or only a contact form | Increase `maxPagesPerWebsite` or disable `onlyWithEmail`. |
| Many `unknown` emails | Mail servers blocked checks | Keep DNS-valid emails or verify them in your own email tool. |
| Run is slow | Website crawling or SMTP checks add time | Lower `maxResults`, keep SMTP off, and reduce pages per website. |
| Duplicate businesses | Nearby city searches overlap | Keep the default dedupe setting enabled. |
| CRM import fails | Your CRM has custom required fields | Review and map CSV columns before import. |

### Support And Feedback 💬

Use the **Issues** tab on the Actor page to report problems, ask questions, or request new healthcare categories or CRM mappings.

Helpful details to include:

- 🆔 Run ID
- 📍 Location searched
- 🏥 Business type or custom search term
- 📊 Expected result
- ⚠️ What happened instead

This helps diagnose issues faster and improve the Actor for everyone. 🚀

# Actor input Schema

## `businessType` (type: `string`):

Healthcare provider category to search for. Choose Custom if you want to provide your own search terms.

## `searchTerms` (type: `array`):

Optional custom search terms such as pediatric dentist, cosmetic dentist, urgent care clinic, or orthodontist. Required when Business type is Custom.

## `locations` (type: `array`):

Cities, ZIP codes, counties, or metro areas to search. Use specific locations such as Dallas, TX or 90210 instead of broad countries.

## `startUrls` (type: `array`):

Optional Google Maps search or place URLs. Use this when you already have specific Maps URLs to process.

## `maxResults` (type: `integer`):

Total maximum number of business records to save across all searches.

## `maxResultsPerSearch` (type: `integer`):

Maximum Google Maps listings to collect from each search term and location combination. Google Maps may return fewer results than requested.

## `includeWithoutWebsite` (type: `boolean`):

If enabled, the Actor saves Google Maps leads even when no business website is available.

## `enrichEmails` (type: `boolean`):

Visit each business website and search for email addresses on the homepage, contact pages, footers, and structured data.

## `verifyEmails` (type: `boolean`):

Run syntax and DNS checks, and optionally SMTP checks, to estimate whether discovered email addresses are deliverable.

## `smtpVerification` (type: `boolean`):

Attempt SMTP verification without sending email. Some mail servers block this, so unknown results are expected for some domains.

## `enrichSocials` (type: `boolean`):

Extract Facebook, Instagram, LinkedIn, X/Twitter, YouTube, and TikTok links from business websites.

## `onlyWithEmail` (type: `boolean`):

If enabled, businesses without discovered email addresses are excluded from the dataset.

## `onlyVerifiedEmails` (type: `boolean`):

If enabled, only businesses with an email address verified by SMTP are saved. This can exclude valid emails when mail servers block verification.

## `stopAfterEmailFound` (type: `boolean`):

If enabled, the Actor stops following extra same-domain website pages for a business after at least one email is found. This lowers runtime and compute cost.

## `minimumReviews` (type: `integer`):

Skip businesses with fewer Google reviews than this value. Use 0 to disable this filter.

## `minimumRating` (type: `string`):

Optional Google Maps rating filter. Use Any to keep all ratings.

## `websiteCrawlDepth` (type: `integer`):

How many same-domain link levels to follow when searching for emails. 0 checks only the homepage.

## `maxPagesPerWebsite` (type: `integer`):

Maximum number of same-domain website pages to crawl for each business.

## `maxEmailsToVerify` (type: `integer`):

Limit how many discovered emails are checked with DNS or SMTP for each business. Lower values reduce runtime and network work.

## `outputPreset` (type: `string`):

Choose whether to produce only the full dataset or also CRM-ready CSV files in the key-value store.

## `dedupeMode` (type: `string`):

How duplicate businesses should be detected across overlapping searches.

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

Select proxies for Google Maps and website requests. Apify Proxy is recommended for reliable runs.

## `maxMapConcurrency` (type: `integer`):

Maximum number of Google Maps browser pages processed in parallel.

## `maxWebsiteConcurrency` (type: `integer`):

Maximum number of website pages processed in parallel.

## `maxVerificationConcurrency` (type: `integer`):

Maximum number of DNS/SMTP email checks processed in parallel.

## `requestDelayMs` (type: `integer`):

Optional delay between sensitive requests and browser actions.

## `debugMode` (type: `boolean`):

Enable more detailed logs and hidden diagnostic fields in dataset records.

## `saveHtmlSnapshots` (type: `boolean`):

Save limited HTML snapshots for failed website extraction cases. Use only for debugging because it increases storage usage.

## Actor input object example

```json
{
  "businessType": "dentist",
  "searchTerms": [
    "pediatric dentist",
    "orthodontist"
  ],
  "locations": [
    "Dallas, TX",
    "Plano, TX"
  ],
  "startUrls": [],
  "maxResults": 25,
  "maxResultsPerSearch": 50,
  "includeWithoutWebsite": true,
  "enrichEmails": true,
  "verifyEmails": true,
  "smtpVerification": false,
  "enrichSocials": true,
  "onlyWithEmail": false,
  "onlyVerifiedEmails": false,
  "stopAfterEmailFound": true,
  "minimumReviews": 0,
  "minimumRating": "any",
  "websiteCrawlDepth": 1,
  "maxPagesPerWebsite": 3,
  "maxEmailsToVerify": 2,
  "outputPreset": "full",
  "dedupeMode": "placeOrPhoneOrAddress",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxMapConcurrency": 1,
  "maxWebsiteConcurrency": 8,
  "maxVerificationConcurrency": 2,
  "requestDelayMs": 250,
  "debugMode": false,
  "saveHtmlSnapshots": false
}
```

# Actor output Schema

## `results` (type: `string`):

Full normalized healthcare practice lead records.

## `summary` (type: `string`):

Run counts, warnings, query coverage, and troubleshooting details.

## `hubspotCsv` (type: `string`):

HubSpot import CSV when requested.

## `salesforceCsv` (type: `string`):

Salesforce Lead import CSV when requested.

# 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 = {
    "searchTerms": [
        "pediatric dentist",
        "orthodontist"
    ],
    "locations": [
        "Dallas, TX",
        "Plano, TX"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("qaseemiqbal/healthcare-practice-lead-scraper-verified-emails").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 = {
    "searchTerms": [
        "pediatric dentist",
        "orthodontist",
    ],
    "locations": [
        "Dallas, TX",
        "Plano, TX",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("qaseemiqbal/healthcare-practice-lead-scraper-verified-emails").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "pediatric dentist",
    "orthodontist"
  ],
  "locations": [
    "Dallas, TX",
    "Plano, TX"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call qaseemiqbal/healthcare-practice-lead-scraper-verified-emails --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=qaseemiqbal/healthcare-practice-lead-scraper-verified-emails",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Healthcare Practice Lead Scraper - Verified Emails",
        "description": "Find healthcare practices from Google Maps and business websites. Extract dentists, doctors, clinics, pharmacies, chiropractors, and more with verified emails, phone numbers, websites, ratings, social profiles, and CRM-ready exports for outreach and lead generation.",
        "version": "0.1",
        "x-build-id": "lpuBgcFdyQpIi2vnf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/qaseemiqbal~healthcare-practice-lead-scraper-verified-emails/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-qaseemiqbal-healthcare-practice-lead-scraper-verified-emails",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/qaseemiqbal~healthcare-practice-lead-scraper-verified-emails/runs": {
            "post": {
                "operationId": "runs-sync-qaseemiqbal-healthcare-practice-lead-scraper-verified-emails",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/qaseemiqbal~healthcare-practice-lead-scraper-verified-emails/run-sync": {
            "post": {
                "operationId": "run-sync-qaseemiqbal-healthcare-practice-lead-scraper-verified-emails",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "businessType"
                ],
                "properties": {
                    "businessType": {
                        "title": "Business type",
                        "enum": [
                            "dentist",
                            "doctor",
                            "clinic",
                            "orthodontist",
                            "chiropractor",
                            "physical_therapist",
                            "pharmacy",
                            "veterinarian",
                            "custom"
                        ],
                        "type": "string",
                        "description": "Healthcare provider category to search for. Choose Custom if you want to provide your own search terms.",
                        "default": "dentist"
                    },
                    "searchTerms": {
                        "title": "Custom search terms",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Optional custom search terms such as pediatric dentist, cosmetic dentist, urgent care clinic, or orthodontist. Required when Business type is Custom.",
                        "items": {
                            "type": "string",
                            "minLength": 2,
                            "maxLength": 120
                        },
                        "default": []
                    },
                    "locations": {
                        "title": "Locations",
                        "maxItems": 200,
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Cities, ZIP codes, counties, or metro areas to search. Use specific locations such as Dallas, TX or 90210 instead of broad countries.",
                        "items": {
                            "type": "string",
                            "minLength": 2,
                            "maxLength": 120
                        },
                        "default": [
                            "Dallas, TX"
                        ]
                    },
                    "startUrls": {
                        "title": "Google Maps URLs",
                        "type": "array",
                        "description": "Optional Google Maps search or place URLs. Use this when you already have specific Maps URLs to process.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL",
                                    "description": "Google Maps search or place URL."
                                }
                            }
                        },
                        "default": []
                    },
                    "maxResults": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Total maximum number of business records to save across all searches.",
                        "default": 25
                    },
                    "maxResultsPerSearch": {
                        "title": "Maximum results per search",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum Google Maps listings to collect from each search term and location combination. Google Maps may return fewer results than requested.",
                        "default": 50
                    },
                    "includeWithoutWebsite": {
                        "title": "Include businesses without websites",
                        "type": "boolean",
                        "description": "If enabled, the Actor saves Google Maps leads even when no business website is available.",
                        "default": true
                    },
                    "enrichEmails": {
                        "title": "Find emails on websites",
                        "type": "boolean",
                        "description": "Visit each business website and search for email addresses on the homepage, contact pages, footers, and structured data.",
                        "default": true
                    },
                    "verifyEmails": {
                        "title": "Verify emails",
                        "type": "boolean",
                        "description": "Run syntax and DNS checks, and optionally SMTP checks, to estimate whether discovered email addresses are deliverable.",
                        "default": true
                    },
                    "smtpVerification": {
                        "title": "Use SMTP verification",
                        "type": "boolean",
                        "description": "Attempt SMTP verification without sending email. Some mail servers block this, so unknown results are expected for some domains.",
                        "default": false
                    },
                    "enrichSocials": {
                        "title": "Find social profiles",
                        "type": "boolean",
                        "description": "Extract Facebook, Instagram, LinkedIn, X/Twitter, YouTube, and TikTok links from business websites.",
                        "default": true
                    },
                    "onlyWithEmail": {
                        "title": "Only save leads with emails",
                        "type": "boolean",
                        "description": "If enabled, businesses without discovered email addresses are excluded from the dataset.",
                        "default": false
                    },
                    "onlyVerifiedEmails": {
                        "title": "Only save SMTP-verified emails",
                        "type": "boolean",
                        "description": "If enabled, only businesses with an email address verified by SMTP are saved. This can exclude valid emails when mail servers block verification.",
                        "default": false
                    },
                    "stopAfterEmailFound": {
                        "title": "Stop website crawl after finding an email",
                        "type": "boolean",
                        "description": "If enabled, the Actor stops following extra same-domain website pages for a business after at least one email is found. This lowers runtime and compute cost.",
                        "default": true
                    },
                    "minimumReviews": {
                        "title": "Minimum review count",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Skip businesses with fewer Google reviews than this value. Use 0 to disable this filter.",
                        "default": 0
                    },
                    "minimumRating": {
                        "title": "Minimum rating",
                        "enum": [
                            "any",
                            "3.0",
                            "3.5",
                            "4.0",
                            "4.5"
                        ],
                        "type": "string",
                        "description": "Optional Google Maps rating filter. Use Any to keep all ratings.",
                        "default": "any"
                    },
                    "websiteCrawlDepth": {
                        "title": "Website crawl depth",
                        "minimum": 0,
                        "maximum": 3,
                        "type": "integer",
                        "description": "How many same-domain link levels to follow when searching for emails. 0 checks only the homepage.",
                        "default": 1
                    },
                    "maxPagesPerWebsite": {
                        "title": "Maximum pages per website",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of same-domain website pages to crawl for each business.",
                        "default": 3
                    },
                    "maxEmailsToVerify": {
                        "title": "Maximum emails to verify per business",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Limit how many discovered emails are checked with DNS or SMTP for each business. Lower values reduce runtime and network work.",
                        "default": 2
                    },
                    "outputPreset": {
                        "title": "Output preset",
                        "enum": [
                            "full",
                            "hubspot",
                            "salesforce",
                            "all"
                        ],
                        "type": "string",
                        "description": "Choose whether to produce only the full dataset or also CRM-ready CSV files in the key-value store.",
                        "default": "full"
                    },
                    "dedupeMode": {
                        "title": "Deduplication mode",
                        "enum": [
                            "placeOrPhoneOrAddress",
                            "phoneOrAddress",
                            "domain",
                            "none"
                        ],
                        "type": "string",
                        "description": "How duplicate businesses should be detected across overlapping searches.",
                        "default": "placeOrPhoneOrAddress"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies for Google Maps and website requests. Apify Proxy is recommended for reliable runs."
                    },
                    "maxMapConcurrency": {
                        "title": "Google Maps concurrency",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Maximum number of Google Maps browser pages processed in parallel.",
                        "default": 1
                    },
                    "maxWebsiteConcurrency": {
                        "title": "Website crawl concurrency",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of website pages processed in parallel.",
                        "default": 8
                    },
                    "maxVerificationConcurrency": {
                        "title": "Email verification concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of DNS/SMTP email checks processed in parallel.",
                        "default": 2
                    },
                    "requestDelayMs": {
                        "title": "Request delay in milliseconds",
                        "minimum": 0,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Optional delay between sensitive requests and browser actions.",
                        "default": 250
                    },
                    "debugMode": {
                        "title": "Debug mode",
                        "type": "boolean",
                        "description": "Enable more detailed logs and hidden diagnostic fields in dataset records.",
                        "default": false
                    },
                    "saveHtmlSnapshots": {
                        "title": "Save HTML snapshots",
                        "type": "boolean",
                        "description": "Save limited HTML snapshots for failed website extraction cases. Use only for debugging because it increases storage usage.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
