# 🦴 Chiropractor Leads Scraper - Chiropractic Clinic Emails (`renzomacar/chiropractor-leads-scraper`) Actor

Every chiropractic clinic in a metro with phone, website, emails and social profiles extracted live from each clinic's own site. Made for health-tech SaaS, equipment vendors and marketing agencies selling to chiropractors. $8 per 1,000 leads.

- **URL**: https://apify.com/renzomacar/chiropractor-leads-scraper.md
- **Developed by:** [Renzo Madueno](https://apify.com/renzomacar) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 leads

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/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

## 🦴 Chiropractor Leads Scraper — Chiropractic Clinic Emails & Phones

Chiropractic is one of the most owner-operated niches in healthcare: the person answering `info@` is usually the doctor who signs the checks. That makes a clean, current clinic list unusually valuable — and this Actor builds one live for any city: **clinic name, phone, website, address, emails and social profiles extracted from each clinic's own website**, $8 per 1,000 clinics.

### Why scrape instead of buying a list

Chiropractic clinics open, merge and rebrand constantly, and the big list vendors resell the same aging database to everyone in your space. A live scrape means the row you get reflects the clinic **today** — current site, current phone, current email — and nobody else has your exact list. You also pay per lead ($0.008), not per year.

### Who runs this Actor

- **EHR / practice-management and billing software** selling to solo and small-group practices.
- **Equipment and supply vendors** — tables, decompression, laser, e-stim consumables.
- **Marketing agencies** pitching local SEO and patient-acquisition funnels (check `techStack` for clinics still on dated site builders).
- **Networks and franchises** (The Joint-style) scouting independent clinics per metro.

### Running it

Set a **location** ("Denver, CO"), optionally pick **clinic types** — chiropractor, chiropractic clinic, sports chiropractor, prenatal chiropractor, walk-in chiropractor — and hit Start. Leave types empty to sweep all common ones. Power users pass full `searchQueries` like `"sports chiropractor in Austin, TX"` to cover several metros in one run.

Each clinic then gets its website visited (homepage, /contact, /about) for emails, extra phones and social profiles. One consolidated row per clinic:

```json
{
  "name": "Mile High Spine & Sport",
  "category": "Chiropractor",
  "phone": "+1 303-555-0147",
  "website": "milehighspine.com",
  "email": "frontdesk@milehighspine.com",
  "socialProfiles": { "instagram": "https://instagram.com/milehighspine", "facebook": "..." },
  "rating": 4.9,
  "reviewsCount": 312,
  "techStack": ["WordPress", "Google Analytics"],
  "searchQuery": "chiropractor in Denver, CO"
}
```

A 5-lead test run takes about a minute; a whole metro (usually 100–300 clinics) costs $1–2.50.

### Pricing

- **$0.008 per clinic lead** — $8 per 1,000
- $0.01 one-time start fee per run
- Nothing else. Empty runs cost the start fee only.

### FAQ

**How many clinics publish an email?**
In this niche typically 45–65% of clinics with a website. Rows without one (`emailFound: false`) still carry phone, address and rating — and chiropractors do answer their phones.

**Can I separate sports/rehab clinics from general family practices?**
Yes — run "sports chiropractor" and "chiropractor" as separate keywords; every row is tagged with the `searchQuery` that found it so you can segment the export.

**Do multi-location groups get deduplicated?**
Each physical location is its own row (its own address, phone, rating). Locations sharing one website are easy to collapse on the `website` column after export.

**How current is the data?**
Collected at run time — schedule the Actor monthly per territory and diff against your CRM to catch newly opened clinics first.

**Legal to use for cold outreach?**
The Actor gathers public business listings and emails clinics publish to be contacted. Follow CAN-SPAM (US), CASL (Canada) or GDPR (EU) rules for your campaigns.

**What if a run finds zero clinics?**
You pay only the $0.01 start fee. Broaden the keyword ("chiropractor") or use a larger city and rerun.

### Acupuncture, massage and manual therapy clinics

Chiropractic sits inside a wider manual-therapy market that shares the same buyers — practice software, billing services, table and equipment suppliers, marketing agencies. The neighbours are one query each:

```
acupuncture clinic in Boulder, CO
massage therapy clinic in Boulder, CO
physical therapy clinic in Longmont, CO
sports medicine clinic in Denver, CO
rehabilitation clinic in Westminster, CO
```

Every line runs its own search in the live Maps index and clinics found under several terms are merged, so a combined chiro-and-PT practice costs you one row, not three.

### Prenatal, pediatric and technique-specific practices

Chiropractors market by technique and by patient, and that is exactly how the Maps listings read. Targeting the sub-specialty gets you a list your message can actually speak to:

```
prenatal chiropractor in Austin, TX
pediatric chiropractor in Austin, TX
upper cervical chiropractor in Round Rock, TX
sports chiropractor in Cedar Park, TX
gonstead chiropractor in Austin, TX
```

These are almost always single-doctor offices. The email on the site is the doctor's or the front-desk manager's — not a corporate inbox — which is why response rates in this vertical beat almost every other healthcare segment.

### Functional medicine, IV therapy and cash-pay wellness

The fastest-growing corner of the market, and one that barely exists in purchased healthcare lists because it is mostly cash-pay and outside insurance directories:

```
functional medicine clinic in Nashville, TN
integrative medicine clinic in Franklin, TN
iv therapy clinic in Nashville, TN
wellness center in Brentwood, TN
naturopathic doctor in Nashville, TN
```

Cash-pay practices spend on marketing because they have to — nobody is sending them referrals. `rating` and `reviewsCount` tell you which ones already know that: a clinic with 300 reviews is running a review-request system and has a budget; a clinic with eleven is not yet, and is a harder sell for anything that costs money monthly.

# Actor input Schema

## `location` (type: `string`):

City, region or country to search in, e.g. 'Denver, CO', 'Austin, TX', 'London, UK'.

## `keywords` (type: `array`):

Which chiropractic clinic types to search for, one per line. Good options: 'chiropractor', 'chiropractic clinic', 'sports chiropractor', 'prenatal chiropractor', 'walk-in chiropractor', 'upper cervical chiropractor'. Leave empty to search all common clinic types at once.

## `searchQueries` (type: `array`):

Full searches, one per line (e.g. 'sports chiropractor in Austin, TX'). When set, these override Location + clinic types. Use several queries to cover multiple cities in one run.

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

Maximum number of companies to find per search. One search typically yields up to ~120 companies.

## `maxPagesPerSite` (type: `integer`):

How many pages to check on each company website when hunting for emails (homepage, /contact, /about...). More pages = more emails found, slightly slower run.

## `onlyWithWebsite` (type: `boolean`):

Drop companies that have no website (they can never have an email). You are not charged for dropped companies.

## `includeGenericEmails` (type: `boolean`):

Keep every published address, including shared inboxes like info@, hello@ and contact@. Disable to drop only non-deliverable system addresses (noreply@, no-reply@, donotreply@, mailer-daemon@, postmaster@, webmaster@, hostmaster@, abuse@).

## `language` (type: `string`):

Language code for the discovery search (e.g. 'en', 'es', 'fr', 'de').

## Actor input object example

```json
{
  "location": "Denver, CO",
  "keywords": [
    "chiropractor"
  ],
  "maxResults": 5,
  "maxPagesPerSite": 1,
  "onlyWithWebsite": false,
  "includeGenericEmails": true,
  "language": "en"
}
```

# Actor output Schema

## `leads` (type: `string`):

Complete B2B leads (company, website, phone, address, emails, social profiles), one item per lead in the default dataset.

# 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 = {
    "location": "Denver, CO",
    "keywords": [
        "chiropractor"
    ],
    "maxResults": 5,
    "maxPagesPerSite": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("renzomacar/chiropractor-leads-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 = {
    "location": "Denver, CO",
    "keywords": ["chiropractor"],
    "maxResults": 5,
    "maxPagesPerSite": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("renzomacar/chiropractor-leads-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 '{
  "location": "Denver, CO",
  "keywords": [
    "chiropractor"
  ],
  "maxResults": 5,
  "maxPagesPerSite": 1
}' |
apify call renzomacar/chiropractor-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,renzomacar/chiropractor-leads-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/aRTxbIzjfpM0UsKqR/builds/ZyvsEmn6uLbNsuGjv/openapi.json
