# Cloudtango MSP Provider Directory Scraper (`jungle_synthesizer/cloudtango-msp-provider-directory-scraper`) Actor

Extracts managed service provider (MSP) profiles from the Cloudtango directory: firmographics, vendor certification tiers, compliance certifications, named client testimonials, and MSP award rankings.

- **URL**: https://apify.com/jungle\_synthesizer/cloudtango-msp-provider-directory-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 record scrapeds

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?

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

## MSP Directory & Managed Service Provider Database — Cloudtango Scraper

Scrapes managed service provider (MSP) profiles from the [Cloudtango](https://www.cloudtango.net) directory. Returns firmographics, graded vendor certification tiers, compliance certifications, named client testimonials, and MSP award rankings for independent MSPs worldwide.

***

### Cloudtango MSP Provider Directory Scraper Features

- Extracts every provider profile in Cloudtango's directory — over 9,000 independent MSPs across the US, UK, Australia, Germany, Canada, and more
- Captures vendor partnerships with graded certification tiers, not just vendor names — Microsoft competencies, Cisco specializations, Acronis/3CX/Check Point tier badges where the source publishes them
- Pulls compliance certifications (ISO 27001, ISO 9001) straight off the profile
- Returns full testimonials — quote, author name, job title, and client company — a customer-concentration signal and a qualified contact record in one field
- Collects case studies with named clients and summaries
- Ranks providers against Cloudtango's own annual MSP award lists (Global 100 and 12 country editions), with position
- Includes firmographics: HQ city/country, branch offices, services, client segment (SMB/SME/Enterprise), and rating

***

### Who Uses MSP Directory Data?

- **Vendor channel teams** — build a partner-recruitment and competitive-coverage map from graded certification tiers across dozens of vendors
- **PE associates sourcing an MSP roll-up** — screen 9,000+ independent MSPs by size signal, client concentration, and compliance posture in one pass
- **Sales teams selling into MSPs** — build a prospect list filtered by services offered, vendor stack, or region
- **Market researchers** — track MSP award standings year over year across 13 country/global lists
- **Recruiters and analysts** — pull named client references and testimonials as verified customer relationships, or at least the closest thing to one that's publicly posted

***

### How Cloudtango MSP Provider Directory Scraper Works

1. Start a run — no filters required, the default input scrapes the full directory.
2. The scraper enumerates every current MSP award list first, so award/rank data is attached to each provider before it saves.
3. Provider profiles are fetched and parsed for firmographics, partnerships, certifications, and testimonials.
4. Records land in your dataset as the run progresses — export to JSON, CSV, or Excel whenever you're ready.

***

### Input

```json
{
  "maxItems": 50
}
```

| Field          | Type    | Default | Description                                                                 |
|----------------|---------|---------|-------------------------------------------------------------------------------|
| `maxItems`     | integer | 10      | Maximum number of provider records to return. Set to `0` to scrape everything. |
| `resumeCursor` | string  | —       | Continue a previous run — see [Resuming a large crawl](#resuming-a-large-crawl) below. |

#### Resuming a large crawl

Every run emits a `resumeCursor` in its Output. If a large crawl stops before it finishes — because it hit `maxItems`, your spend cap (`maxTotalChargeUsd`), or was aborted — start a new run with **the same input** plus that `resumeCursor` to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

- You are **not re-charged** for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its `resumeCursor` is no longer valid.
- `resumeCursor` is opaque — supply it unmodified.

***

### Cloudtango MSP Provider Directory Scraper Output Fields

```json
{
  "provider_id": 6562,
  "name": "Leaf IT",
  "profile_url": "https://www.cloudtango.net/providers/6562/leaf-it",
  "website": "https://leaf-it.com",
  "logo_url": "https://www.cloudtango.net/media/img/logos/leaf-it.png",
  "phone": "028 9089 7650",
  "description": "Leaf is a cloud-first Microsoft partner committed to delivering technology solutions that solve business challenges.",
  "hq_city": "Belfast",
  "hq_country": "United Kingdom",
  "branches": ["Dublin"],
  "services": ["VoIP", "CRM", "Cybersecurity", "Dynamics 365", "IaaS"],
  "vendor_partnerships": [
    { "vendor": "Microsoft", "tier": "Modern Work" },
    { "vendor": "Cisco", "tier": null },
    { "vendor": "Dell", "tier": null }
  ],
  "vendor_partnership_count": 6,
  "certifications": ["ISO 27001"],
  "primary_vertical": null,
  "client_segment": "SMB, SME",
  "rating": 4.7,
  "reviews_count": 5,
  "testimonials": [
    {
      "quote": "We have found Leaf to be excellent to work with, efficient and flexible throughout the project.",
      "author_name": "Adrian McDonagh",
      "author_title": "IT Manager",
      "client_company": "Ulster Rugby"
    }
  ],
  "named_clients": ["Ulster Rugby", "Translink", "Kerr Henderson"],
  "case_studies": [
    { "client": "Translink", "summary": "Northern Ireland's public transport service revolutionise productivity with Office 365." }
  ],
  "case_studies_count": 2,
  "awards": ["MSP Select UK"],
  "award_list_rank": 11,
  "listing_country": "United Kingdom",
  "listing_region": "northern-ireland",
  "source": "cloudtango.net",
  "scraped_at": "2026-08-21T14:41:51.169Z"
}
```

| Field                       | Type    | Description                                                                                     |
|------------------------------|---------|---------------------------------------------------------------------------------------------------|
| `provider_id`                | integer | Cloudtango's numeric provider id                                                                  |
| `name`                       | string  | Provider (MSP) name                                                                               |
| `profile_url`                | string  | Cloudtango profile URL                                                                            |
| `website`                    | string  | The provider's own domain, when a linked case study exposes it. Null otherwise                    |
| `logo_url`                   | string  | Provider logo image URL                                                                           |
| `phone`                      | string  | Contact phone number                                                                              |
| `description`                | string  | Provider's own profile description                                                                |
| `hq_city`                    | string  | Headquarters city                                                                                 |
| `hq_country`                 | string  | Headquarters country                                                                              |
| `branches`                   | array   | Additional office cities named on the profile                                                     |
| `services`                   | array   | Named services (e.g. VoIP, IaaS, Cybersecurity)                                                   |
| `vendor_partnerships`        | array   | `[{ vendor, tier }]` — tier is populated where Cloudtango publishes a competency badge for that vendor |
| `vendor_partnership_count`   | integer | Total partner count, including partners the source's UI collapses behind a "+N" marker            |
| `certifications`             | array   | Compliance certifications (ISO 27001, ISO 9001) where disclosed                                   |
| `primary_vertical`           | string  | Declared only when over 50% of the provider's clients sit in one industry                         |
| `client_segment`             | string  | SMB / SME / Enterprise client-type tags on the profile                                            |
| `rating`                     | number  | Average rating (0–5)                                                                              |
| `reviews_count`              | integer | Number of reviews behind the rating                                                               |
| `testimonials`               | array   | `[{ quote, author_name, author_title, client_company }]`                                          |
| `named_clients`              | array   | Distinct client companies across testimonials and case studies                                    |
| `case_studies`               | array   | `[{ client, summary }]`                                                                           |
| `case_studies_count`         | integer | Number of case studies                                                                            |
| `awards`                     | array   | Which Cloudtango MSP ranking lists (country/global) the provider appears on                       |
| `award_list_rank`            | integer | Best (lowest) rank position across the ranking lists the provider appears on                      |
| `listing_country`            | string  | Country as listed by Cloudtango                                                                   |
| `listing_region`             | string  | Region/city slug as listed by Cloudtango                                                          |
| `source`                     | string  | Always `"cloudtango.net"`                                                                         |
| `scraped_at`                 | string  | ISO timestamp when the record was scraped                                                         |

***

### FAQ

#### Does this cover every MSP on Cloudtango, or just one country?

Every provider profile in Cloudtango's directory — over 9,000 independent MSPs worldwide, not a single-country slice. Set `maxItems` to `0` for a full run.

#### What is `vendor_partnerships` tier data, and why is it sometimes null?

Cloudtango publishes graded certification tiers (Microsoft competencies, Cisco specializations, Acronis/3CX/Check Point tiers, and more) for a subset of vendor relationships. Where the source shows a tier badge for a partnership, this scraper captures it; where it doesn't, `tier` is `null` and the vendor name is still returned.

#### Some fields — like `services`, `branches`, or `vendor_partnerships` — look short. Are they incomplete?

Cloudtango's public profile pages sometimes show a partial list with a "+N more" marker rather than the full set. This scraper returns exactly what's published — real, not padded — and `vendor_partnership_count` reflects the total including anything collapsed behind the marker.

#### Can I filter to a specific award list or country?

Not as a separate input — every run already covers the full directory, so filter the output dataset by `listing_country`, `listing_region`, or `awards` after the run.

***

### Need More Features?

Have a feature request or found a bug? [Open an issue](https://console.apify.com/actors/J4Jz1qgQUK73qFb35/issues) and we'll take a look.

### Why Use Cloudtango MSP Provider Directory Scraper?

- **The only MSP-native dataset on the platform** — search the Apify store for MSP data today and every result is a generalist agency directory scraper, not an MSP-specific source
- **Testimonials come with a job title and a company, not just a quote** — a customer-concentration data point on the MSP and a contact record on the client, in the same field
- **Graded vendor certification tiers, not a flat partner list** — the detail a channel team actually screens for

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

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

Maximum number of records to scrape

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10
}
```

# Actor output Schema

## `results` (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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/cloudtango-msp-provider-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/cloudtango-msp-provider-directory-scraper").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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10
}' |
apify call jungle_synthesizer/cloudtango-msp-provider-directory-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/cloudtango-msp-provider-directory-scraper"
        }
    }
}

```

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/J4Jz1qgQUK73qFb35/builds/vrsFyOVOoo5CaQXv6/openapi.json
