# Partner and Member Directory Extractor (`mambalabs/partner-member-directory-extractor`) Actor

Turn a vendor partner directory or a trade body member list into one company row per listing: name, website, domain, tier, tags, location, rating, and the contact details the directory publishes. Reads PartnerPage directories, the Shopify Partner Directory, and member lists. Clay ready.

- **URL**: https://apify.com/mambalabs/partner-member-directory-extractor.md
- **Developed by:** [Mamba Labs](https://apify.com/mambalabs) (community)
- **Categories:** Lead generation, Automation, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.40 / 1,000 company listeds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Partner and Member Directory Extractor

Turn a vendor partner directory or a trade body member list into a company list. Enter the directory page. You get one flat row per listed company: name, website, domain, tier, tags, location, rating, review count, and the contact details the directory itself publishes. Rows export to CSV or drop into a Clay table, ready for enrichment.

### Features

- **PartnerPage directories.** Many software vendors run their partner or expert directory on PartnerPage (Clay's Solutions Partner Directory and the Zapier partner directory are two, checked 2026-10-21). The actor finds the directory id on the page and reads the public PartnerPage listing API, so every partner comes back, not only the ones the page shows first. With listing details on, each row adds the tags the partner is filed under (expertise, industries, regions, languages, price bands), the location, and the listed email.
- **The Shopify Partner Directory.** Any listing page under `shopify.com/partners/directory`. Each partner row carries tier (Select, Plus, Premier, Platinum), rating, review count, partner since, city and country, website, and the listed phone and email.
- **Member lists.** Any directory whose listing page links to one profile page per member, such as a trade association member directory. The actor finds the profile links by their shared path, reads each profile, and takes the member's own website from it.
- **Dedupe.** A company listed twice, in one directory or across several, comes back once. Skipped repeats are free.
- **Polite by default.** robots.txt is read for every host and checked before every request, and requests to one host go one at a time.

### Measured on 2026-10-21

One run read 4 directories in 294 seconds: 176 companies from the Clay Solutions Partner Directory (PartnerPage, all with a domain), 51 Shopify partners from 5 listing pages (50 with a domain), and 76 IAB UK members from 5 member list pages (69 with a domain). The HubSpot solutions directory returned one free unsupported row. 15 repeated companies were skipped.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `directory_url` | string | | One directory page (one per row from Clay) |
| `directory_urls` | array | | Up to 20 directory pages |
| `max_listings` | string | `100` | Listings per directory, up to 5,000. Each company row is billed |
| `max_pages` | string | `10` | Shopify and member lists: listing pages to read |
| `include_details` | string | `true` | PartnerPage: one more request per listing for tags, location, and email |
| `dedupe_domains` | string | `true` | Return a repeated company once |
| `max_charge_usd` | string | | Stop before a row would pass this amount |

Numbers and yes or no fields are text, as Clay sends them (`"50"`, `"true"`). `directory_urls` is a JSON array; from a Clay table, send one `directory_url` per row.

### Output

One row per listing, the same columns on every row.

| Field | Example | What it is |
|---|---|---|
| `listing_name` | `Frontal AI` | The company on the listing |
| `company_domain`, `website` | `frontal.so`, `https://frontal.so/` | The website the listing gives |
| `listing_url` | `https://www.clay.com/en/experts/partner/frontal-ai` | The listing page |
| `tier` | `Elite Studio` | The partner tier the directory shows |
| `tags` | `["AI Outbound", "SaaS"]` | PartnerPage filter tags |
| `location` | `Dallas, United States` | As the directory gives it |
| `rating`, `review_count` | `5`, `486` | Directory reviews, when shown |
| `partner_since` | `June 2015` | Shopify |
| `listed_email`, `listed_phone` | | Only what the directory publishes; nothing is guessed |
| `linkedin_url` | | A LinkedIn link on the listing, returned as a link, never opened |
| `directory_type` | `partnerpage` | `partnerpage`, `shopify_partners`, or `generic_profiles` |
| `row_status` | `ok` | `ok`, `no_listings`, `robots_disallowed`, `blocked`, `unsupported`, or `error` |
| `billable_events_json` | `{"company-listed":1}` | What the row was billed as |

The run summary (key-value store record `RUN_SUMMARY`) lists each directory with its type, status, and listing count.

### Pricing

Pay per event. You pay only these events; the Apify platform and proxy costs of your run are paid by Mamba Labs.

| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Company listed (`company-listed`): one company row | $0.004 | $0.0038 | $0.0036 | $0.0034 |
| Actor start (`apify-actor-start`), one per GB of run memory, so once per run at the default 256 MB | $0.0015 | $0.0015 | $0.0015 | $0.0015 |

Free rows: skipped repeats, and no listings, robots disallowed, blocked, unsupported, and error rows. On the Apify free plan the actor stops at 1.50 USD of evaluation a month (about 375 company rows); any paid Apify plan removes that cap.

Example: the full Clay Solutions Partner Directory, about 180 companies, costs about $0.72.

### Usage examples

#### Apify Console or API

```json
{ "directory_urls": ["https://www.clay.com/en/experts"], "max_listings": 500 }
```

```json
{ "directory_urls": ["https://www.shopify.com/partners/directory/services", "https://www.iabuk.com/member-directory"], "max_listings": 100, "max_pages": 10 }
```

#### Clay

Run the actor once per directory, import the dataset into a Clay table, and enrich on `company_domain`. Filter on `tier` or `tags` to pick the partners that fit, then find people at each company.

#### MCP

The MCP server `@mambalabsdev/mcp-partner-member-directory-extractor` exposes this actor as a tool for Claude and other MCP clients.

### Error handling

| Situation | What you get |
|---|---|
| robots.txt disallows the directory page | One free row with `row_status` `robots_disallowed` |
| The page does not load | One free row with `row_status` `blocked` and the HTTP status |
| No list the actor can read (the page builds its list in the browser) | One free row with `row_status` `unsupported` |
| A listing page fails | It is skipped; the rest of the directory still returns |
| A host refuses the direct request | It is read again through the Apify proxy |
| Max charge reached | The run stops before the next billable row and says why in the status message |

### Limitations

- Directories that build their list in the browser cannot be read. On 2026-10-21 that included the HubSpot solutions directory and the Salesforce AppExchange consultants directory (one free `unsupported` row each), the Webflow certified partners directory (one free `no_listings` row), and directories on an older PartnerPage build such as Attio experts (one free `unsupported` row).
- Shopify's robots.txt disallows every URL with `page=` in it, so the actor never pages a Shopify listing. It reads 16 partners per listing page and reaches more by following the category and location pages the directory links to, up to `max_pages` pages.
- A member list's profile page may link to more than one outside site; the actor takes the link labeled as the website first, then the first outside link that is not a social network. Check `company_domain` on member lists before you send mail.
- Listed emails and phones are what each directory publishes for the company. You are responsible for how you contact the companies, under the law that applies to you and the directory's own terms.

### More from Mamba Labs

| Actor | Actor ID |
|---|---|
| [Account Hiring Watch](https://apify.com/mambalabs/account-hiring-watch?fpr=mamba) | `gRAZA5WBi1r6L0gy7` |
| [Agent Accessibility Auditor](https://apify.com/mambalabs/agent-accessibility-auditor?fpr=mamba) | `anxbRv0lKrpQ1pnua` |
| [Agent to Brokerage Resolver](https://apify.com/mambalabs/agent-brokerage-resolver?fpr=mamba) | `ePRRGLxOGyaVHO4dI` |
| [AI Tooling Detector](https://apify.com/mambalabs/ai-tooling-detector?fpr=mamba) | `EwkHhmqiuJgRoVEbE` |
| [B2B Reddit Conversation Monitor](https://apify.com/mambalabs/b2b-reddit-conversation-monitor?fpr=mamba) | `SoDryzzsjmY3SsiyG` |
| [Bluesky Brand Presence Mapper](https://apify.com/mambalabs/bluesky-brand-presence-mapper?fpr=mamba) | `eLpxzP4IuXznlFVND` |
| [Career Change Signal Engine](https://apify.com/mambalabs/career-change-signal-engine?fpr=mamba) | `vX2Yga1a6wGaXaP14` |
| [Company Change Event Feed](https://apify.com/mambalabs/company-change-event-feed?fpr=mamba) | `oX44rS0fkEJ3rXLWe` |
| [Company Contact Details Extractor](https://apify.com/mambalabs/company-contact-details-extractor?fpr=mamba) | `4mMncKaJykiq94grz` |
| [Company Discovery List Builder](https://apify.com/mambalabs/company-discovery-list-builder?fpr=mamba) | `jch0HdaZnpbMqlcGS` |
| [Company Firmographic Enricher](https://apify.com/mambalabs/company-firmographic-enricher?fpr=mamba) | `YlUtLWjfPpqykmB8g` |
| [Company Funding Record](https://apify.com/mambalabs/funding-investor-record?fpr=mamba) | `OFS4Mt1gyYNtGfUbE` |
| [Company Identity Resolver](https://apify.com/mambalabs/company-identity-resolver?fpr=mamba) | `lr8fTRAmZCBZmuwwh` |
| [Company Social Presence Mapper](https://apify.com/mambalabs/company-social-presence-mapper?fpr=mamba) | `4k6CCemkgBDz18m2h` |
| [Contact Classifier](https://apify.com/mambalabs/contact-classifier?fpr=mamba) | `0lGSeYJmniXhGANnO` |
| [Cookie Consent Audit](https://apify.com/mambalabs/cookie-consent-audit?fpr=mamba) | `TrKyOS0KBoGC35nbr` |
| [Domain Deliverability Checker](https://apify.com/mambalabs/domain-deliverability-checker?fpr=mamba) | `0tVgxI7A6o9jMlxmc` |
| [Domain to LinkedIn URL Resolver](https://apify.com/mambalabs/domain-to-linkedin-url-resolver?fpr=mamba) | `3HtnSaqPHOg1Qg5gx` |
| [Ecommerce Platform Profiler](https://apify.com/mambalabs/ecommerce-platform-profiler?fpr=mamba) | `5G2NeYjBbQTjaTn9L` |
| [Event Presence Index](https://apify.com/mambalabs/event-presence-index?fpr=mamba) | `WLhMy8fMDgsxdYxv5` |
| [Expert Witness Directory](https://apify.com/mambalabs/expert-witness-directory?fpr=mamba) | `LIpwlgfE3LaQBaXd4` |
| [Funding and Press Signal Scanner](https://apify.com/mambalabs/funding-press-signal-scanner?fpr=mamba) | `FS13X6dhQVgX3XOM6` |
| [GitHub Organization Signal Scanner](https://apify.com/mambalabs/github-organization-signal-scanner?fpr=mamba) | `ahF8RRpv5mzPao5CN` |
| [Google Ads Transparency Monitor](https://apify.com/mambalabs/google-ads-transparency-monitor?fpr=mamba) | `1eOwxhBVxzvOXAm4s` |
| [Government Contract Award Monitor](https://apify.com/mambalabs/public-award-monitor?fpr=mamba) | `zhEtllASykOcx9hJ8` |
| [GTM Hiring Signal Scraper](https://apify.com/mambalabs/gtm-hiring-signal-scraper?fpr=mamba) | `D7O1SA2EqwHGsGr1P` |
| [GTM Signals Aggregator](https://apify.com/mambalabs/b2b-buying-signals-hiring-tech-stack-intent-for-clay?fpr=mamba) | `xKdRfnfFNkdMpFuNs` |
| [ICP Fit Scorer](https://apify.com/mambalabs/icp-account-lead-scoring-fit-scorer-0-100-for-clay?fpr=mamba) | `W161DT8W4kW55dMFh` |
| [Influencer Change Monitor](https://apify.com/mambalabs/creator-change-monitor?fpr=mamba) | `d2VVgahNL6UmcLkhg` |
| [Influencer Finder](https://apify.com/mambalabs/creator-finder?fpr=mamba) | `tpkedmloIIWtXx6sg` |
| [Influencer Lead List Builder](https://apify.com/mambalabs/creator-lead-list-all-in-one?fpr=mamba) | `KnmByszcv135yM30G` |
| [Influencer Profile Scraper](https://apify.com/mambalabs/creator-profile-reader?fpr=mamba) | `EqEnklDVMIcB1V499` |
| [Influencer Talent Agency Lookup](https://apify.com/mambalabs/talent-agency-lookup?fpr=mamba) | `zCuX4Mgyg6JvXgGzd` |
| [Instagram Facebook Brand Presence Mapper](https://apify.com/mambalabs/meta-brand-presence-mapper?fpr=mamba) | `HXh65I0JBjPsunbY8` |
| [Integration and Marketplace Presence Mapper](https://apify.com/mambalabs/integration-marketplace-presence-mapper?fpr=mamba) | `V0guNuvM85Q61f2gj` |
| [Job Board Keyword Signal Scanner](https://apify.com/mambalabs/job-board-keyword-signal-scanner?fpr=mamba) | `4DvqpvhMR74NLcDDY` |
| [Job Change Tracker](https://apify.com/mambalabs/job-change-tracker?fpr=mamba) | `L8UbEmMJC1XYPSZOb` |
| [Job Posting Monitor](https://apify.com/mambalabs/gtm-job-discovery?fpr=mamba) | `QCfICD9kOPiOdj5iI` |
| [Legal Entity Resolver](https://apify.com/mambalabs/legal-entity-resolver?fpr=mamba) | `KHFyPCDIx7CyqULYm` |
| [Link in Bio Scraper and Newsletter Detector](https://apify.com/mambalabs/link-in-bio-newsletter-checker?fpr=mamba) | `OorucdheTIgu7RFzK` |
| [LinkedIn Company Page Mapper](https://apify.com/mambalabs/linkedin-company-presence-mapper?fpr=mamba) | `zOPm6A9JEhUGcIdFW` |
| [LinkedIn Post Tracker](https://apify.com/mambalabs/linkedin-post-engager-capture?fpr=mamba) | `oiGLNPuaf5BRaz9K5` |
| [Meta Ad Library Monitor](https://apify.com/mambalabs/meta-ad-library-monitor?fpr=mamba) | `J1GWlSXfSGU3u8Wng` |
| [Mobile Phone Waterfall](https://apify.com/mambalabs/mobile-phone-waterfall-orchestrator?fpr=mamba) | `6OOgPktf7RIa5XCOP` |
| [New Hire Finder](https://apify.com/mambalabs/new-hire-finder?fpr=mamba) | `cKuc38p4nYHNF3IW8` |
| [Outbound Stack Detector](https://apify.com/mambalabs/outbound-infrastructure-fingerprint?fpr=mamba) | `v43UJC8r7qW7cBSTG` |
| [Page Finder and Extractor](https://apify.com/mambalabs/page-finder-extractor?fpr=mamba) | `TpurgcOZbVnknlaiC` |
| [People Finder & Email Verifier](https://apify.com/mambalabs/people-finder?fpr=mamba) | `LEgloG7tWgQl4o6TD` |
| [Person Social Footprint Mapper](https://apify.com/mambalabs/person-social-footprint-mapper?fpr=mamba) | `jfQXa2zW9FHCJot9K` |
| [Pinterest Brand Presence Mapper](https://apify.com/mambalabs/pinterest-brand-presence-mapper?fpr=mamba) | `d1HvjZfKhgvWsoEwn` |
| [Prospect Engine](https://apify.com/mambalabs/b2b-prospect-engine?fpr=mamba) | `q9rT6v64nUJdPexOQ` |
| [Publishing Frequency Tracker](https://apify.com/mambalabs/blog-publishing-frequency?fpr=mamba) | `TbLwaUUATdYb6wp4N` |
| [Reddit Brand Presence Mapper](https://apify.com/mambalabs/reddit-brand-presence-mapper?fpr=mamba) | `pKQZmDaT70SEb54bZ` |
| [Reporting Window Finder](https://apify.com/mambalabs/public-company-reporting-window-finder?fpr=mamba) | `uINxR7a1IW8qUTRUX` |
| [Sequencer Lead Push](https://apify.com/mambalabs/clay-to-instantly-smartlead-push?fpr=mamba) | `0Jv27VeWM5tSZQs9x` |
| [Team Page People Extractor](https://apify.com/mambalabs/team-page-people-extractor?fpr=mamba) | `j8a9zX0k4mNbvDbWK` |
| [Tech Stack Signal Detector](https://apify.com/mambalabs/gtm-tech-stack-signal-scraper?fpr=mamba) | `qyd7nNyqFPelQViBx` |
| [TikTok Brand Presence Mapper](https://apify.com/mambalabs/tiktok-brand-presence-mapper?fpr=mamba) | `fco8FvoJcSafbeyd1` |
| [Trustpilot Reputation Enricher](https://apify.com/mambalabs/review-platform-reputation-enricher?fpr=mamba) | `3lIqfCt61j4hqE1xz` |
| [WCAG Accessibility Audit](https://apify.com/mambalabs/wcag-accessibility-audit?fpr=mamba) | `P3jBj3FRghKEhX52z` |
| [Website Traffic Rank Estimator](https://apify.com/mambalabs/website-traffic-rank-estimator?fpr=mamba) | `GnOFUzlNVIoXgeJjH` |
| [Work Email Waterfall](https://apify.com/mambalabs/email-waterfall-orchestrator?fpr=mamba) | `OT6xqTFThC0Rjf7Zj` |
| [Workplace Program Detector](https://apify.com/mambalabs/workplace-program-detector?fpr=mamba) | `Li6pPDhqbdzFz3h7G` |
| [X Brand Presence Mapper](https://apify.com/mambalabs/x-brand-presence-mapper?fpr=mamba) | `oLOgadhHUkNAyDA3w` |
| [YouTube Channel Stats Extractor](https://apify.com/mambalabs/youtube-channel-transcript-extractor?fpr=mamba) | `6hSpD3kd2s2IQ4VSs` |

Built by [Mamba Labs](https://apify.com/mambalabs?fpr=mamba).

# Actor input Schema

## `directory_url` (type: `string`):

One directory page. Use this or the list below; Clay users can send one URL per row here.

## `directory_urls` (type: `array`):

Up to 20 directory pages, one per line. Works with directories built on PartnerPage (for example https://www.clay.com/en/experts), the Shopify Partner Directory (any https://www.shopify.com/partners/directory/... listing page), and member or partner lists that link to one profile page per member (for example https://www.iabuk.com/member-directory).

## `max_listings` (type: `string`):

Stop after this many listings in each directory, 1 to 5,000. Each company row is billed. Default 100.

## `max_pages` (type: `string`):

Shopify and member list directories: listing pages to read before stopping, 1 to 100. PartnerPage directories ignore it. Default 10.

## `include_details` (type: `string`):

PartnerPage directories: one more request per listing adds tags (expertise, industries, regions), location, and the listed email. No: name, website, tier, and description only.

## `dedupe_domains` (type: `string`):

A company listed twice (in one directory or across directories) is returned once. Skipped repeats are free.

## `max_charge_usd` (type: `string`):

Stop before a row would push this run past this amount. Empty: no limit beyond the one you set in Apify.

## `source_tag` (type: `string`):

Internal attribution tag for published tasks. Leave empty.

## Actor input object example

```json
{
  "directory_urls": [
    "https://www.clay.com/en/experts"
  ],
  "max_listings": "20",
  "max_pages": "10",
  "include_details": "true",
  "dedupe_domains": "true"
}
```

# Actor output Schema

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

No description

## `run_summary` (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 = {
    "directory_urls": [
        "https://www.clay.com/en/experts"
    ],
    "max_listings": "20"
};

// Run the Actor and wait for it to finish
const run = await client.actor("mambalabs/partner-member-directory-extractor").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 = {
    "directory_urls": ["https://www.clay.com/en/experts"],
    "max_listings": "20",
}

# Run the Actor and wait for it to finish
run = client.actor("mambalabs/partner-member-directory-extractor").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 '{
  "directory_urls": [
    "https://www.clay.com/en/experts"
  ],
  "max_listings": "20"
}' |
apify call mambalabs/partner-member-directory-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mambalabs/partner-member-directory-extractor"
        }
    }
}
```

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/ZX0XJPPUvnFJxeC1a/builds/io5RlaBIxEjCAk1kH/openapi.json
