# Wild Apricot Member Directory Scraper: Association Leads (`doggo/wildapricot-directory-scraper`) Actor

Scrape public member directories built on Wild Apricot. Export member or organization name, contact, company, location and profile fields as an association lead list. No API key needed. Output to CSV, JSON or Excel.

- **URL**: https://apify.com/doggo/wildapricot-directory-scraper.md
- **Developed by:** [Doggo](https://apify.com/doggo) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Wild Apricot Member Directory Scraper: Association Leads

Export every public member from any **Wild Apricot** association, nonprofit, or club
directory. Paste the directory URL and get back a clean spreadsheet of members (name,
company, job title, phone, email, and location) in Excel, CSV, JSON, or Google Sheets.

One actor covers the **tens of thousands of organizations** that run on Wild Apricot. No
code and no login required.

### What data you get (per member)

- **Name**
- **Company / organization**
- **Job title**
- **Phone**
- **Email** (when the member makes it public)
- **City, state, postal code**
- **Membership level**
- Any other public profile field the organization shows
- Direct link to the member's profile

Each record contains the member's name, profile URL, the source directory, and every
public field from their profile — field names follow whatever labels the organization
uses. Illustrative example:

```json
{
  "name": "Jane Cooper",
  "profileUrl": "https://exampleassoc.wildapricot.org/Sys/PublicProfile/12345678",
  "Organization": "Cooper Consulting LLC",
  "Job Title": "Principal Engineer",
  "Phone": "555-014-2233",
  "Email": "jane@cooperconsulting.com",
  "City": "Denver",
  "State": "CO",
  "Membership level": "Professional Member",
  "sourceDirectory": "https://exampleassoc.wildapricot.org/publicdir/"
}
````

### How to run it in the Apify Console

1. Open the organization's public member directory in your browser (the URL usually ends
   in `/Members` or `/publicdir/`).
2. Paste it into **Directory URLs** and click **Start**. You can add several directories
   in one run.
3. When the run finishes, download your results from the **Dataset** tab in any format
   (Excel, CSV, JSON, HTML), or send them to Google Sheets via an integration.

You can also start runs via the [Apify API](https://docs.apify.com/api/v2) or on a
schedule to keep member lists fresh.

#### Input options

| Input | What it does |
|-------|--------------|
| **Directory URLs** (`startUrls`) | Public member-directory page(s) of Wild Apricot sites. Required. |
| **Open each member profile** (`scrapeProfiles`) | On (default, recommended): visits each member's profile for their full public fields. Off: only profile URLs are returned. |
| **Max members** (`maxItems`) | Stop after this many members (default 500). |
| **Max directory pages** (`maxDirectoryPages`) | How many directory pages to paginate through — about 50 members per page (default 25). |

### Great for

- Niche, highly-targeted B2B and professional lead lists
- Reaching members of trade associations, chambers, and professional societies
- Recruiting, partnerships, and event outreach
- Market and membership research

### FAQ and limitations

**Which directories does it work on?**
Any organization running on Wild Apricot (sites hosted at `<org>.wildapricot.org` or on a
custom domain powered by Wild Apricot) with a **public** member directory.

**Can it access member-only directories?**
No. Directories that require a login are not accessible — only publicly visible profiles
are scraped, and emails appear only where the member or organization publishes them.

**Why do the columns differ between organizations?**
Each organization chooses which profile fields to show publicly, so the set of fields (and
their names) follows that organization's directory setup.

### Use with AI agents (MCP)

This Actor works as a tool for AI agents via the [Apify MCP server](https://mcp.apify.com). Add it to Claude, Cursor, or any MCP-compatible assistant with this server URL:

```text
https://mcp.apify.com?tools=doggo/wildapricot-directory-scraper
```

Then just ask something like *"Export all members from this Wild Apricot association directory with emails and companies"* — the agent fills in the input, runs the Actor, and reads the results from the dataset. Standard pay-per-result pricing applies to the calling account.

# Actor input Schema

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

Public member-directory page URL(s) of Wild Apricot sites, e.g. https://<org>.wildapricot.org/Members or /publicdir/.

## `scrapeProfiles` (type: `boolean`):

Visit each member's profile for their full public fields (recommended). If off, only profile URLs are returned.

## `maxItems` (type: `integer`):

Stop after this many members.

## `maxDirectoryPages` (type: `integer`):

How many directory pages to paginate through (50 members per page).

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://seaoa.wildapricot.org/publicdir/"
    }
  ],
  "scrapeProfiles": true,
  "maxItems": 500,
  "maxDirectoryPages": 25
}
```

# Actor output Schema

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

Every member as JSON: name, company, job title, phone, email, location, membership level, and profile link.

## `overview` (type: `string`):

Members in a friendly table view.

# 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://seaoa.wildapricot.org/publicdir/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("doggo/wildapricot-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://seaoa.wildapricot.org/publicdir/" }] }

# Run the Actor and wait for it to finish
run = client.actor("doggo/wildapricot-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://seaoa.wildapricot.org/publicdir/"
    }
  ]
}' |
apify call doggo/wildapricot-directory-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wild Apricot Member Directory Scraper: Association Leads",
        "description": "Scrape public member directories built on Wild Apricot. Export member or organization name, contact, company, location and profile fields as an association lead list. No API key needed. Output to CSV, JSON or Excel.",
        "version": "0.2",
        "x-build-id": "ebQBBzJIV5hmwpiyj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/doggo~wildapricot-directory-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-doggo-wildapricot-directory-scraper",
                "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/doggo~wildapricot-directory-scraper/runs": {
            "post": {
                "operationId": "runs-sync-doggo-wildapricot-directory-scraper",
                "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/doggo~wildapricot-directory-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-doggo-wildapricot-directory-scraper",
                "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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Directory URLs",
                        "type": "array",
                        "description": "Public member-directory page URL(s) of Wild Apricot sites, e.g. https://<org>.wildapricot.org/Members or /publicdir/.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "scrapeProfiles": {
                        "title": "Open each member profile",
                        "type": "boolean",
                        "description": "Visit each member's profile for their full public fields (recommended). If off, only profile URLs are returned.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max members",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after this many members.",
                        "default": 500
                    },
                    "maxDirectoryPages": {
                        "title": "Max directory pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "How many directory pages to paginate through (50 members per page).",
                        "default": 25
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
