Partner and Member Directory Extractor MCP Server
You can extract structured company listings from partner directories and member lists through an Apify-backed, read-only MCP tool.
Extract company rows from PartnerPage directories (e.g., Clay, Zapier), Shopify Partner Directory pages, and member lists that link to one profile page per member.
Supply one
directory_urlor up to 20directory_urls.Control runs with
max_listings,max_pages,include_details,dedupe_domains, and optionalmax_charge_usd.Receive rows with listing name, domain, website, listing URL, tier, tags, location, rating, review count, partner-since date, and published email/phone.
Get robots.txt checks, domain deduplication, free skipped repeats, and unsupported-directory rows marked
row_status: unsupported.Requires
APIFY_TOKEN; usage is billed per company row on Apify.
Allows extracting companies from the Shopify Partner Directory, returning each listed partner as a row with website, domain, tier, tags, location, rating, review count, partner since, and published email and phone details.
Allows extracting companies from the Zapier partner directory via PartnerPage, returning partner listings with website, domain, tier, tags, location, and other published directory details.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Partner and Member Directory Extractor MCP ServerList every agency in the Clay experts directory with website and tier"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Partner and Member Directory Extractor MCP Server
An MCP server for the Mamba Labs Partner and Member Directory Extractor actor on Apify. Give it a partner directory or a member list URL. Each listed company comes back as one row with its website, domain, tier, tags, and location.
What's Inside
Related MCP server: Team Page People Extractor MCP Server
What it does
The actor reads three directory families: directories built on PartnerPage (Clay's Solutions Partner Directory and the Zapier partner directory among them), read through PartnerPage's public listing API; the Shopify Partner Directory; and member lists that link to one profile page per member, such as a trade association directory. Each row carries listing_name, company_domain, website, listing_url, tier, tags, location, rating, review_count, partner_since, and the listed_email and listed_phone the directory publishes. robots.txt is checked before every request. A directory that builds its list in the browser returns one free row with row_status unsupported.
All of the work runs on Apify. This package is a thin client that starts the actor run, waits for it, and hands back the dataset rows.
Quick start
You need Node.js 18 or newer and an Apify account with an API token.
Add this to your Claude Desktop config (claude_desktop_config.json), Cursor, or any MCP client:
{
"mcpServers": {
"mamba-partner-member-directory-extractor": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-partner-member-directory-extractor"
],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}Restart the client. The extract_directory_companies tool appears.
Prerequisites
Node.js 18 or newer.
An Apify API token from console.apify.com/account/integrations, set as
APIFY_TOKEN. The server lists its tool without a token; a call needs one.
Example prompts
"List every agency in the Clay experts directory with its website and tier."
"Pull 100 Shopify partners that do store migrations, with their rating and location."
"Turn the IAB UK member directory into a list of company domains."
Tool
extract_directory_companies. One tool. Example arguments:
{
"directory_url": "https://www.clay.com/en/experts",
"max_listings": "200"
}Inputs
Every buyer facing input of the actor. Omitted inputs take the actor's own defaults. Numbers and yes or no inputs are sent as text.
Input | Type | Description |
| string | One directory page |
| array | Up to 20 directory pages |
| string | Listings per directory, 1 to 5000. Default 100 |
| string | Shopify and member lists: listing pages to read. Default 10 |
| string | PartnerPage: tags, location, and email. Default true |
| string | Return a repeated company once. Default true |
| string | Optional cost cap for the run |
Pricing
Pay per event on Apify, billed to your Apify account. Prices in USD.
Event | Free plan | Bronze | Silver | Gold |
| $0.004 | $0.0038 | $0.0036 | $0.0034 |
| $0.0015 | $0.0015 | $0.0015 | $0.0015 |
Skipped repeats, and no listings, robots disallowed, blocked, unsupported, and error rows are free.
Your keys
The actor needs no key. Proxy traffic adds nothing to your price: Mamba Labs pays the platform costs of the run.
Full actor documentation
apify.com/mambalabs/partner-member-directory-extractor
License
MIT. See LICENSE.
Available Tools
1 toolextract_directory_companiesExtract companies from a partner or member directoryARead-onlyIdempotent
Turn a vendor partner directory or a trade body member list into one company row per listing. Give directory_url or directory_urls (up to 20). Reads directories built on PartnerPage (for example https://www.clay.com/en/experts or the Zapier partner directory) through PartnerPage's public listing API, the Shopify Partner Directory (any https://www.shopify.com/partners/directory/... page), and member lists that link to one profile page per member. Each row: listing_name, company_domain, website, listing_url, tier, tags, location, rating, review_count, partner_since, and the email and phone the directory itself publishes. robots.txt is checked before every request. A directory that cannot be read (it builds its list in the browser) returns one free row with row_status unsupported. A run that does not succeed is returned as an error with its run ID. Read-only; requires an APIFY_TOKEN; Apify charges per company row.
| Name | Required | Description | Default |
|---|---|---|---|
| max_pages | No | Shopify and member list directories: listing pages to read, 1 to 100. Default 10. | |
| max_listings | No | Listings per directory, 1 to 5000. Each company row is billed. Default 100. | |
| directory_url | No | One directory page URL. | |
| dedupe_domains | No | Return a company listed more than once only once; skipped repeats are free. Default true. | |
| directory_urls | No | Up to 20 directory page URLs. | |
| max_charge_usd | No | Optional. The run stops before any row that would take its charges over this amount. | |
| include_details | No | PartnerPage directories: true adds tags, location, and the listed email with one more request per listing. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: robots.txt is checked before every request, unreadable directories yield one free row flagged unsupported, failed runs return an error with a run ID, an APIFY_TOKEN is required, and Apify bills per company row (with dedupe skips free and max_charge_usd as a stop). This is unusually rich operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core transformation, then source support, then row shape, then operational constraints — a sensible priority order with little filler. It is dense and somewhat run-on in the middle, which keeps it just shy of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and seven optional parameters, the description fills the gap by enumerating the exact row fields returned (listing_name, company_domain, tier, tags, location, rating, partner_since, published email/phone) and describing both the unsupported and error outcomes. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds real value on top: it frames directory_url vs directory_urls as alternates with a 20-URL cap, ties include_details to extra per-listing requests, and connects dedupe to billing. It doesn't restate ranges already in the schema, which keeps the additions meaningful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — turning a partner directory or member list into one company row per listing — and enumerates the exact source families supported (PartnerPage, Shopify Partner Directory, member lists). An agent knows precisely what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains which input to supply (directory_url or directory_urls, up to 20) and the eligibility conditions for each source type, including the failure mode where a JS-rendered directory returns row_status unsupported. It stops short of an explicit 'do not use this for X' exclusion, but with no siblings there is little else to route against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.0.0- First observed
extract_directory_companies
TDQS
Scored across 1 tool
There is only one tool, so there is no possibility of selecting the wrong one. Its description signals a single, well-bounded operation (directory → company rows) with no sibling tools to confuse it with.
The lone name, extract_directory_companies, follows a clear verb_noun_plural pattern in snake_case. There are no competing conventions to clash with, and the name is self-describing.
A one-tool surface is thin even for a single-purpose extractor: there is no companion for checking run status, fetching a prior run's rows, or listing supported directory types, which the description implies are real concerns (run IDs, errors, per-row billing). It is defensible but borderline.
The async lifecycle is a dead end — the description says failed runs return a run ID, yet there is no tool to poll, retry, or retrieve results for that run, and no way to discover which directories are supported. The single extraction call itself is thorough, but agents will hit a wall after submitting work.
Maintenance
Related MCP Connectors
Clutch.co B2B agency directory, profiles, and reviews as JSON, via an Apify Actor, hosted MCP.
Find emails, phone numbers and social profiles on a list of company websites. One row per domain.
Company profiles, site audits and page-to-JSON extraction for AI agents.
Scrape and crawl websites into queryable tables: products, leads, Shopify catalogs, real estate.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables building targeted company lists from live job boards or SEC filings via the Apify actor, supporting role keywords, locations, and filing phrases.164 npmMIT
- AlicenseAqualityAmaintenanceExtracts people (names and titles) from a company's team, leadership, or about page given a domain. Uses Apify to crawl and return structured data, with optional filters for seniority and email inclusion.165 npmMIT
- AlicenseAqualityAmaintenanceClassifies company sites as B2B or B2C and as SaaS, online store, agency, manufacturer, wholesaler, distributor, or marketplace, while matching your own buyer phrases and returning the quoted text and page as evidence. Runs deterministically on Apify, giving one row per domain with grace-free status rows for unreachable, blocked, or empty sites.179 npmMIT
- AlicenseAqualityAmaintenanceEnables users to pull portfolio company lists from Y Combinator, a16z, Sequoia, Accel, and other investors or any portfolio page URL, returning one row per company with name, domain, website, description, and stage or batch. Runs on Apify and produces Clay-ready output, with YC results filterable by batch, industry, region, status, and search terms.1350 npmMIT