# Veterinarian Contact Scraper (`scrapido/veterinarian-contact-scraper`) Actor

🐶 Veterinarian Contact Scraper collects vet clinic records from Google Maps—name, address, city, state, ZIP, phone & place ID. 📧 Site crawling adds emails and socials. 🐾 Great for pet product suppliers & vet software sales.

- **URL**: https://apify.com/scrapido/veterinarian-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

### Veterinarian Contact Scraper 📋

**Veterinarian Contact Scraper** is built to eliminate time-consuming manual research when you need veterinarian directory scraper outputs—emails, phones, and social links—fast. It’s an Apify automation actor for teams doing vet practice lead generation, and it helps you turn scattered web presence into a usable contact dataset for faster outreach and measurable ROI.

***

### What is Veterinarian Contact Scraper? 🔍

**Veterinarian Contact Scraper** is an Apify actor that automates contact information extraction for veterinary businesses. It targets veterinarian directory scraper style results by using a search term and one or more geographic locations, then scrapes the businesses’ publicly available websites to collect emails, phone numbers, and social media links. Whether you're a sales professional, recruiter, marketer, or researcher, this veterinarian contact scraper helps you run automated veterinarian scraping and convert publicly listed clinic information into structured JSON records for CRM data enrichment and outreach.

***

### What Does Veterinarian Contact Scraper Do? ⚙️

It takes your input (search term + location(s)), finds matching veterinary businesses, scrapes their websites for publicly listed contact details, and outputs a clean dataset row per business with structured contact fields.

- 🔍 **Searches veterinary businesses** using your `googleMapsSearchTerm` plus `googleMapsLocation` inputs
- 📧 **Extracts publicly listed emails** into `scraped_emails` and counts them in `emails_found`
- 📞 **Extracts phone numbers** into `scraped_phones`
- 🔗 **Extracts social media profiles** into `scraped_social_media`
- 🌍 **Structures results with place details** (name, website, address components, ratings, geo coordinates, `place_id`), ready for analysis and CRM enrichment

***

### What Would Results from Veterinarian Contact Scraper Look Like? 👀

Expect structured records in your Apify dataset, including clinic identity, address, and extracted contact info.

```json
{
  "name": "Paws & Whiskers Veterinary Clinic",
  "website": "https://www.pawswhiskersvet.com/",
  "phone": "(212) 555-0198",
  "full_address": "123 Madison Ave New York NY 10010 US",
  "city": "New York",
  "state": "NY",
  "zip": "10010",
  "country_code": "US",
  "scraped_emails": [
    "contact@pawswhiskersvet.com"
  ],
  "scraped_phones": [
    "+12125550198"
  ],
  "scraped_social_media": [
    "https://www.facebook.com/pawswhiskersvet/"
  ],
  "emails_found": 1,
  "pages_scraped": 6,
  "avg_rating": 4.6,
  "total_reviews": 128,
  "lat": "40.7477",
  "long": "-73.9884",
  "place_id": "ChIJVTP2s1dZwokR4WQp3qk0g6o",
  "scrape_status": "success"
}
```

You can export the dataset as JSON or CSV from the Apify interface.

***

### Capabilities of Veterinarian Contact Scraper 🛠️

| Capability | What It Means for You |
|---|---|
| ✅ **Veterinarian Search Term Control** | Use `googleMapsSearchTerm` to target the veterinary niche you care about (vet practice lead generation, animal clinic contact scraping, etc.). |
| ✅ **Location Targeting** | Provide one or multiple `googleMapsLocation` values to focus on specific regions for clinic email finder and territory planning. |
| ✅ **Stop at a Business Target** | Set `maxBusinesses` to define how many businesses with emails you want to find before the run stops. |
| ✅ **Per-Location vs Global Limiting** | Use `scrapeMaxBusinessesPerLocation` to collect up to `maxBusinesses` per location, or combine all locations under one total limit. |
| ✅ **Built-in Proxy Support** | `proxyConfiguration` with `proxy support` is available to help with scraping reliability for larger batches. |
| ✅ **Structured Output for CRM Workflows** | Dataset fields include address parsing components, rating/review stats, and geo coordinates to speed up downstream CRM data enrichment. |
| ✅ **Email, Phone, and Social Extraction** | Captures contact information extraction elements: emails (`scraped_emails`), phone numbers (`scraped_phones`), and social links (`scraped_social_media`). |
| ✅ **Operational Status + Quality Signals** | Includes `emails_found`, `pages_scraped`, and `scrape_status` so you can filter low-yield results in analysis. |

***

### Launch Your First Veterinarian Contact Scraper Task 🚀

Follow these steps to start veterinarian directory scraper style data collection in minutes.

#### Required Input Fields

Example input:

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

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `googleMapsSearchTerm` | string | ✅ Yes | `Veterinarian` | Enter the business type or niche for email scraper (for example: “dentists” or “coffee shops”). |
| `googleMapsLocation` | array | ✅ Yes | `["New York"]` | Target geographic locations (for example: cities or regions like “Miami, Florida”). |
| `maxBusinesses` | integer | No | `5` | Target number of businesses to find with emails (allowed range: 1–1000). The scraper stops once this target is reached. |
| `scrapeMaxBusinessesPerLocation` | boolean | No | `false` | If `true`, it collects up to `maxBusinesses` results per location; if `false`, it combines all locations up to one total limit. |
| `proxyConfiguration` | object | No | `{ "proxy support": true }` | Proxy settings for scraping. Recommended for large-scale scraping. |

**Step-by-step launch guide:**

1. **Open** the actor in the Apify Console
2. **Set `googleMapsSearchTerm`** to your exact veterinarian niche
3. **Add one or more `googleMapsLocation`** entries
4. **Set `maxBusinesses`** to control run size for vet practice lead generation
5. **Start** the run and monitor progress in logs
6. **Download results** from the Dataset tab (export JSON/CSV)

***

### Solving Real Problems with Veterinarian Contact Scraper 💼

- 🎯 **Sales Prospecting** — build a vet practice lead generation list without spending hours doing contact information extraction manually
- 📣 **Campaign Targeting** — generate clinician segments by city/state and enrich CRM records using structured data output
- 🤝 **Partnership and Hiring** — outreach to animal clinic contact scraping leads with emails, phones, and socials
- 🔬 **Competitive Research** — scrape veterinarian websites to map clinic contact coverage for market intelligence
- ⚙️ **Automated Pipelines** — run B2B prospecting automation workflows repeatedly to keep your CRM fresh

***

### What Sets Veterinarian Contact Scraper Apart? 🏆

- 💰 **Business-focused stopping logic** — use `maxBusinesses` to reach your targeted yield of businesses with emails
- 🔄 **Flexible multi-location control** — switch between per-location limits and a global total with `scrapeMaxBusinessesPerLocation`
- 📧 **Practical support** — for questions or issues, contact <scrapidocontact@gmail.com>
- 🛡️ **Proxy-ready runs** — optional `proxyConfiguration` helps maintain reliability for scraping veterinarian websites at scale

***

### Search Limits and Capacity 📈

Use `maxBusinesses` (range 1–1000) to cap how many businesses with emails you aim to collect. Output size depends on how many veterinary business websites contain publicly available contact details that match the extraction. For high-volume prospecting automation, enable proxyConfiguration and design runs to fit your budget and desired dataset scale.

***

### Is It Legal to Scrape Veterinarian Tools? ⚖️

This actor works with **publicly available data** (it searches for veterinary businesses and extracts contact information from publicly listed website content). You should ensure your use complies with applicable laws and the target websites’ Terms of Service, including GDPR/CCPA and anti-spam regulations. For compliance or data-removal requests, email <scrapidocontact@gmail.com>.

***

### Ending Note ✉️

Stop manually hunting for clinic emails and contact pages. **Veterinarian Contact Scraper** turns veterinarian directory scraper research into a structured dataset you can import into your outreach tools—emails, phones, social links, and address components included.

***

### FAQ — Veterinarian Contact Scraper ❓

#### How Does the Veterinarian Contact Scraper Work?

It takes your `googleMapsSearchTerm` and `googleMapsLocation` inputs, finds matching veterinary businesses, and then scrapes publicly available website content to collect emails, phone numbers, and social media links. Each result is saved in your Apify dataset with fields like `scraped_emails`, `scraped_phones`, and `scraped_social_media`.

#### What Types of Veterinarian Profiles Can I Target?

You can target veterinary business listings that match your search term and locations. The actor focuses on businesses whose websites contain publicly available contact information, supporting use cases like veterinarian directory scraper workflows and animal clinic contact scraping.

#### How Did the Veterinarian Contact Scraper Perform in Our Tests?

Performance depends on how many target websites publicly list contact details that can be extracted and how many businesses match your location and search term. The dataset includes quality signals such as `emails_found`, `pages_scraped`, and `scrape_status` so you can review and filter results.

#### Why Scrape Veterinarian Websites Instead of Buying a List?

Scraped data is typically fresher and more niche-specific. Buying lists often leads to outdated contacts or lower match rates. With structured output for CRM data enrichment, you can build higher-quality segments for vet practice lead generation and contact information extraction.

#### How Much Does the Veterinarian Contact Scraper Cost?

Costs follow Apify’s pricing model for actor runs (and in this actor, you can control how much data you aim to collect using `maxBusinesses`). To reduce waste, tune `googleMapsLocation`, `googleMapsSearchTerm`, and `maxBusinesses` to your target.

#### Top Benefits of the Veterinarian Contact Scraper

Fast vet contact discovery, structured dataset output for CRM or analysis, extraction of emails plus phone numbers and social links, and configurable limits for run control across locations.

#### What Are the Disadvantages of Scraping Veterinarian Leads?

Not every business website publishes contact emails, so yield can vary by location and niche keyword. If you use narrow search terms or very small locations, the dataset may be smaller than expected.

#### How to Choose the Best Veterinarian Contact Scraper

Look for structured output, clear limits, proxy support, and fields that help you validate and enrich leads. This actor provides dataset-ready contact information extraction outputs (including `scraped_emails`, address parsing fields, ratings/reviews, and `place_id`) and support via <scrapidocontact@gmail.com>.

***

### 🆘 Support & Feedback

Have a question or need help improving your veterinarian directory scraper results?

Contact us at <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": "Veterinarian",
  "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": "Veterinarian",
    "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/veterinarian-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": "Veterinarian",
    "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/veterinarian-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": "Veterinarian",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "emailTypes": [
    "Business"
  ],
  "phoneTypes": [
    "Mobile",
    "Landline"
  ]
}' |
apify call scrapido/veterinarian-contact-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/veterinarian-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/JZiU6EAKSzUuDYRqo/builds/QT1RW6M5W4t6DTk3v/openapi.json
