# MemberClicks Directory Scraper - Export Member Leads (`rook-data-tools/memberclicks-directory-scraper`) Actor

Export public MemberClicks directory records for lead generation and research. Get names, organizations, phones, emails, websites, addresses, categories, and source URLs as JSON, CSV, or Excel-ready data. Works only with directories that expose public search. Public data, no login needed.

- **URL**: https://apify.com/rook-data-tools/memberclicks-directory-scraper.md
- **Developed by:** [Rook DataTools](https://apify.com/rook-data-tools) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 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

## MemberClicks Member Directory Scraper

**Turn public MemberClicks directories into clean member and organization records you can export, filter, and send to your sales or research workflow.** Supply a public directory URL, choose an optional search term, and receive structured rows instead of copying listings by hand.

Built for teams that sell to or research association communities:

- Association vendors and service providers
- Event sponsors and exhibitors
- Recruiters and partnership teams
- Market researchers and local business-development teams

### What you get

Each record always includes its public member ID and directory provenance. When the directory publishes a field, the Actor also returns:

- `name`
- `organization`
- `phone` and `fax`
- `email`
- `website`
- `address`, `city`, `state`, `postalCode`, and `country`
- `categories`
- `description`
- `profileImageUrl`
- `extra` public fields that do not fit the standard columns
- `directoryId`, `directoryHost`, `sourceUrl`, `searchTerm`, and `scrapedAt`

Fields that the directory leaves blank are omitted. The Actor does not guess missing contact data.

### Quick start

1. Open a MemberClicks-hosted member, supplier, professional, or organization directory on `*.memberclicks.net` that works without signing in, and copy its URL.
2. Paste it into **Public MemberClicks directory URLs**.
3. Add one or more **Search terms** if that directory asks visitors to search before showing results. Leave the list empty when the directory offers all records immediately.
4. Set **Max results**, choose whether to return only new records, and click **Start**.
5. Download the dataset as JSON, CSV, or Excel, or connect it to your existing Apify integration.

At $0.005 per saved record plus the $0.01 run-start charge, 1,000 returned records cost about **$5.01**. A run that returns no records costs only the $0.01 start charge.

### Search behavior

MemberClicks directory owners choose which public search fields and result columns to expose. If you provide a search term, the Actor uses the most relevant public text field (company/organization, last name, name, or keyword). Use **Search field label** when you want a specific field such as `Last Name`.

Some directories support an unfiltered browse; others require a term. A search-only directory will report that restriction instead of pretending it returned the full membership.

### Only new records

Keep **Only new since last run** on for scheduled exports. The Actor remembers the public member ID within each directory for up to 400 days and skips records it returned during that window. Turn it off when you intentionally want a complete repeat export.

Run one scheduled instance at a time when strict cross-run deduplication matters. Separate overlapping runs are not serialized and can observe the same new member simultaneously.

### Reliability and public-data boundary

- Only public MemberClicks-hosted HTTPS directory pages on `*.memberclicks.net` are accepted. Custom-domain, private/local network, nonstandard-port, and credential-bearing URLs are rejected.
- The Actor reads and follows each site's `robots.txt`, including longer crawl delays chosen by the directory owner.
- A failed directory or malformed record does not erase good records from other inputs. If every input fails, the run fails clearly instead of producing a misleading empty success.
- No login, member account, credentials, paywall bypass, CAPTCHA solving, or private profile access is used.
- Anti-bot challenges are not bypassed. A challenged or login-gated input is reported as an error.

Use the output in accordance with the directory's terms and applicable privacy, marketing, and data-protection rules.

# Actor input Schema

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

One or more public MemberClicks-hosted directory/search pages on \*.memberclicks.net. Use the public page that visitors can open without signing in.

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

Optional terms to submit to the directory's public text search (for example Smith, Acme, or Austin). Leave empty when the directory supports showing all public records. Some directory owners require a term before returning results.

## `searchField` (type: `string`):

Optional case-insensitive field-label match, such as Last Name or Company. Leave blank to let the Actor select the most useful public text field.

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

Stop after this many new records across all directory URLs and search terms.

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

Skip member IDs already returned by earlier runs of this Actor. Turn this off to export the same public records again.

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

Minimum delay between requests to one directory host. The Actor automatically uses a longer delay when robots.txt requires it.

## Actor input object example

```json
{
  "startUrls": [
    "https://aaes.memberclicks.net/index.php?id=2000982&option=com_mcdirectorysearch&view=search"
  ],
  "searchTerms": [
    "Smith"
  ],
  "maxResults": 1000,
  "onlyNewSinceLastRun": true,
  "requestDelayMs": 1000
}
```

# 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": [
        "https://aaes.memberclicks.net/index.php?id=2000982&option=com_mcdirectorysearch&view=search"
    ],
    "searchTerms": [
        "Smith"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rook-data-tools/memberclicks-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": ["https://aaes.memberclicks.net/index.php?id=2000982&option=com_mcdirectorysearch&view=search"],
    "searchTerms": ["Smith"],
}

# Run the Actor and wait for it to finish
run = client.actor("rook-data-tools/memberclicks-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": [
    "https://aaes.memberclicks.net/index.php?id=2000982&option=com_mcdirectorysearch&view=search"
  ],
  "searchTerms": [
    "Smith"
  ]
}' |
apify call rook-data-tools/memberclicks-directory-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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