# ChamberMaster & GrowthZone Member Leads — Directory Scraper (`rook-data-tools/chambermaster-directory-scraper`) Actor

Scrape ChamberMaster/GrowthZone chamber directories into member leads with business name, category, phone, website, address, social profiles, and description. Build local B2B sales, sponsor, or outreach lists from public directory data; no login needed.

- **URL**: https://apify.com/rook-data-tools/chambermaster-directory-scraper.md
- **Developed by:** [Rook DataTools](https://apify.com/rook-data-tools) (community)
- **Categories:** Lead generation, Business
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## ChamberMaster / GrowthZone Directory Scraper

**Turn any chamber of commerce member directory into clean, structured business leads.**
ChamberMaster / GrowthZone powers roughly **80% of US local chambers** — so one tool
scrapes the vast majority of chamber directories. Point it at a chamber's directory URL and
get, per business: name, category, phone, website, full address, social profiles, and a
description.

![Real run: a public chamber directory turned into a ranked call list — 15 businesses → 12 emails added → AI-scored leads with written openers](https://raw.githubusercontent.com/willowridge1234/rook-data-tools-assets/main/pipeline-proof.png)

### Why it's reliable & cheap

Built specifically for how ChamberMaster / GrowthZone directories are structured — the
same engine works across thousands of chamber sites, so runs are fast, cost pennies,
need no proxies, and the output stays consistent site-to-site.

### Input

Paste one or more chamber directory URLs — usually `business.<chamber>.com` or
`web.<chamber>.com`. The Actor finds the `/list` directory and walks every category
automatically.

```json
{
  "startUrls": [{ "url": "https://business.brainerdlakeschamber.com/list" }],
  "fetchDetails": true,
  "maxRecords": 1000
}
```

- **fetchDetails** (default on): open each business's page for full address, website, and
  socials. Turn off for a faster, cheaper listing-only pull.
- **onlyNewSinceLastRun**: schedule it and get only businesses you haven't seen before.
- **maxRecords / maxRecordsPerDirectory**: cost controls.

### Output example

```json
{
  "name": "Studio Wraps",
  "category": "Advertising Media",
  "phone": "(218) 270-2189",
  "website": "http://www.studiowraps.com/",
  "address": "5558 Pine Beach Rd STE 3",
  "city": "Brainerd",
  "state": "MN",
  "zip": "56401",
  "socials": ["https://www.facebook.com/…", "https://www.linkedin.com/…"],
  "profileUrl": "https://business.brainerdlakeschamber.com/list/Details/studio-wraps-1734…",
  "sourceDirectory": "https://business.brainerdlakeschamber.com/list",
  "scrapedAt": "2026-07-23T20:55:00.000Z"
}
```

### Who buys this

Sales teams selling to local businesses (POS, insurance, marketing, SaaS, banking),
event & sponsor outreach, franchise site selection, and anyone building a regional B2B
list from chamber membership.

### Notes & honest limits

- **Emails are not published by ChamberMaster** (they sit behind a "Send Email" form), so
  there is no email column — pair this with our **Business Website Contact Extractor** to
  add emails from each business's own site. You still get phone, website, full address,
  and social profiles here.
- Businesses appearing in multiple categories are **de-duplicated** to one record.
- Works on any ChamberMaster/GrowthZone directory. Non-ChamberMaster chamber sites won't
  match and simply return nothing.

### Also available

Scraping **association** directories on **Wild Apricot** or **MembershipWorks**? Use our
companion Actors — same clean lead output, different platforms.
---------------------------------------------------------------

### 🔗 Part of a lead-generation suite (scrape → enrich → qualify)

This Actor works best chained with its companions on the same account:

1. **Directory scrapers** — get businesses/members (name + website) from
   Wild Apricot, MembershipWorks, or ChamberMaster / GrowthZone directories.
2. **Business Website Contact Extractor** — add the emails/phones the directories hide.
3. **AI Lead Qualifier** — score each lead against your ICP and write a personalized opener.

Pass any Actor's **dataset ID** into the next step to run the whole pipeline.

# Actor input Schema

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

One or more ChamberMaster/GrowthZone directory URLs. Usually https://business.<chamber>.com or https://web.<chamber>.com — the Actor finds the /list directory automatically. Works on any ChamberMaster-powered chamber of commerce site.

## `fetchDetails` (type: `boolean`):

ON (default): open each business's detail page for full address, website, socials. OFF: faster/cheaper listing-only mode (name, phone, description, category).

## `maxRecords` (type: `integer`):

Hard cap across all directories in this run. Controls cost.

## `maxRecordsPerDirectory` (type: `integer`):

Cap per chamber directory. 0 = no per-directory cap.

## `onlyNewSinceLastRun` (type: `boolean`):

When on, businesses already returned by previous runs (per directory + member id) are skipped — ideal for scheduled CRM feeds. First run returns everything.

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

Politeness delay between page/detail requests.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://business.brainerdlakeschamber.com/list"
    }
  ],
  "fetchDetails": true,
  "maxRecords": 1000,
  "maxRecordsPerDirectory": 0,
  "onlyNewSinceLastRun": false,
  "requestDelayMs": 200
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://business.brainerdlakeschamber.com/list"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rook-data-tools/chambermaster-directory-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 = { "startUrls": [{ "url": "https://business.brainerdlakeschamber.com/list" }] }

# Run the Actor and wait for it to finish
run = client.actor("rook-data-tools/chambermaster-directory-scraper").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 '{
  "startUrls": [
    {
      "url": "https://business.brainerdlakeschamber.com/list"
    }
  ]
}' |
apify call rook-data-tools/chambermaster-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rook-data-tools/chambermaster-directory-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/OyaPEwcv5dlR7V22J/builds/a4tOWFrhLdfSuRLrb/openapi.json
