# Agency Leads Scraper 🏢 marketing & dev agencies + contacts (`tagadanar/agency-leads-scraper`) Actor

Build a prospecting list of marketing, design and software agencies: website, services, hourly rate, minimum budget, team size, rating, plus phone, email and address from the agency's own profile. DesignRush and Sortlist together, 28 categories, 69 countries. No API key, flat price per agency.

- **URL**: https://apify.com/tagadanar/agency-leads-scraper.md
- **Developed by:** [Tagada Data](https://apify.com/tagadanar) (community)
- **Categories:** Lead generation, SEO tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 agency leads

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

## Agency Leads Scraper

Build a prospecting list of marketing, design and software agencies, with the
phone numbers and email addresses to actually contact them.

Pick a service ("digital marketing", "web design", "software development"),
optionally pick a country, set how many you want. You get back a clean
spreadsheet of agencies: who they are, what they sell, how big they are, what
they charge, how well they are reviewed, and how to reach them.

Three directories are covered in a single run, Clutch, DesignRush and
Sortlist, so one export gives you a wider list than any single-site scraper.
No API key, no login, no browser. One flat price per agency, platform usage
included.

### Why three directories and not one

Most agency-lead tools read a single site, and most of them read Clutch. A
single-site list inherits that site's blind spots: Clutch is strongest on
client reviews and rates, DesignRush is where agencies publish a phone number
and an email address, and Sortlist is the only one carrying official company
registration numbers and exact headcounts. Reading all three in one run gives
you the union, one row per directory listing, with a `source` column so you
can compare how the same agency presents on each.

It also makes the list resilient. Clutch spent part of August 2026 refusing
automated traffic outright, and every Clutch-only scraper on this Store spent
those weeks failing. When one directory closes its door, this actor says so
loudly in the run status and still delivers the other two.

### What you get

One row per agency, same columns whichever directory it came from.

| Field | What it is | Source |
| --- | --- | --- |
| `name`, `website`, `tagline`, `description` | Who they are and how they pitch | all |
| `services` | The services they sell | all |
| `phone` | Direct phone number | DesignRush, Clutch |
| `email` | Direct email address | DesignRush |
| `streetAddress`, `city`, `region`, `postalCode`, `country` | Postal address | DesignRush, Clutch |
| `location` | The city and region the directory listed for this search | all |
| `offices` | Every office they run, not just the head office | Sortlist |
| `teamSize` | Exact headcount | Sortlist |
| `employeesLabel`, `employeesMin`, `employeesMax` | Headcount band | all |
| `hourlyRateLabel`, `hourlyRateMin`, `hourlyRateMax` | Average hourly rate | DesignRush, Clutch |
| `minBudget`, `maxBudget`, `budgetCurrency` | Smallest project they take | all |
| `rating`, `reviewCount` | Client rating out of 5 | all |
| `portfolioCount`, `awards` | Published work and awards | DesignRush, Sortlist |
| `registrationNumber`, `registrationCountry` | Official company registration number | Sortlist |
| `languages`, `sectors` | Languages spoken, client industries served | Sortlist |
| `linkedinUrl`, `facebookUrl`, `twitterUrl`, `instagramUrl`, `youtubeUrl` | Social profiles | DesignRush |
| `isVerified`, `isClaimed`, `isSponsored` | Directory badges, and whether the slot was paid for | all |
| `source`, `profileUrl`, `sourceUrl`, `scrapedAt` | Where each row came from | all |

A field is `null` when that directory does not publish it, never a guess. The
`source` column tells you which one you are looking at.

Two things worth knowing before you sort the spreadsheet:

Budgets are not all in the same currency. DesignRush and Clutch quote US
dollars, Sortlist quotes euros, and `budgetCurrency` records which. Sortlist
publishes no phone number or email address at all, so those columns are empty
on its rows and you are never charged the contact fee for them; Clutch
publishes a phone number and address on most profiles but no email.

### Categories

digital-marketing, seo, ppc-paid-media, social-media-marketing,
content-marketing, email-marketing, public-relations, advertising,
influencer-marketing, lead-generation, web-design, web-development, ecommerce,
software-development, mobile-app-development, ui-ux-design, branding,
graphic-design, video-production, ai, cybersecurity, cloud-consulting,
blockchain, market-research, it-services, marketing-strategy,
marketing-automation, game-development.

Plain English works too: "web design", "PPC", "google ads", "logo design" and
"mobile app" all resolve to the right category.

### Who uses this

**Agencies selling to agencies.** White-label developers, freelancers and
contractors who subcontract for bigger shops. Filter on `employeesMin` and
`hourlyRateMin` to find the ones large enough to outsource and expensive enough
to have margin.

**Software and SaaS vendors.** Anyone selling project management, reporting,
SEO tooling or hosting to agencies. `services` and `teamSize` tell you who fits
your plan tiers; `email` and `linkedinUrl` tell you where to send it.

**Buyers running a pitch.** Shortlist agencies by budget, rating and location
before you talk to anyone, instead of filling in one lead form at a time.

**M\&A and market researchers.** `registrationNumber` from Sortlist is the
official company number, so a row can be matched straight against a company
register.

**Recruiters** hiring creative and technical staff, using headcount, services
and location to find the shops worth approaching.

### Examples

Fifty digital marketing agencies with contact details, anywhere:

```json
{
  "categories": ["digital-marketing"],
  "maxResults": 50
}
```

German web design agencies (the country filter applies to DesignRush and
Sortlist; Clutch rows stay worldwide and say so in the log):

```json
{
  "categories": ["web-design"],
  "location": "Germany",
  "maxResults": 200
}
```

A fast, cheap sweep of several categories with no profile lookups:

```json
{
  "categories": ["seo", "ppc-paid-media", "content-marketing"],
  "location": "us",
  "includeContactDetails": false,
  "maxResults": 500
}
```

Sortlist only, for company registration numbers and headcounts:

```json
{
  "categories": ["software-development"],
  "sources": ["sortlist"],
  "maxResults": 300
}
```

Clutch only, for reviewed agencies with rates and phone numbers:

```json
{
  "categories": ["digital-marketing"],
  "sources": ["clutch"],
  "maxResults": 100
}
```

A specific city page, pasted straight in:

```json
{
  "directoryUrls": [
    "https://www.designrush.com/agency/digital-marketing/new-york/new-york-city"
  ],
  "maxResults": 100
}
```

### FAQ

**Is this a Clutch.co scraper?**
Clutch is one of its three sources, so yes, and you also get the two
directories Clutch-only scrapers cannot see. Pass `"sources": ["clutch"]` if
you only want Clutch rows. When Clutch tightens its anti-bot wall, as it did
for part of August 2026, the run says so in its status message and still
delivers DesignRush and Sortlist instead of failing outright.

**How do I find marketing agencies to sell to?**
Pick `digital-marketing` (or `seo`, `social-media-marketing`, `advertising`),
set a country, leave contact details on. You get names, emails, phone numbers,
headcounts and hourly rates in one export.

**Where do the contact details come from?**
DesignRush and Clutch agency profiles, where the agency itself published a
public business phone number or address; email addresses are DesignRush only.
Sortlist does not publish contact details, so its rows have none. You are only
charged the contact fee when a phone number or an email actually comes back.

**How many agencies can I get?**
DesignRush lists 50 per page and pages up to 483 deep on its biggest category,
so roughly 24,000 agencies for web design alone. Clutch lists about 60 per
page and its digital-marketing directory alone runs over 2,500 pages deep.
Sortlist returns 100 per page for up to 48 pages, about 4,800 per category.
Country filters and `maxResults` cut those down, which is usually what you
want.

**Does a country filter mean the agency is based there?**
Not always. DesignRush and Sortlist also list agencies that serve a country
from elsewhere, and the filter does not apply to Clutch's worldwide directory
pages at all (paste a Clutch location URL into `directoryUrls` for those).
Check the `country` column (and `city`, on enriched rows) if you only want
local head offices.

**Why does `location` sometimes disagree with `city`?**
`location` is the office the directory showed for your search, and `city` comes
from the agency's own profile, which is its main address. An agency with a
Berlin office and a New York head office will show both.

**Can I get the same agency from several directories?**
Yes, and that is on purpose. Well-known agencies are listed on two or all
three, and you get one row per directory so you can compare what each one
holds. Dedupe on `website` if you want a single row per company.

**Are sponsored listings included?**
Yes, flagged with `isSponsored` rather than hidden, so you can drop them or
keep them.

**Can I search a city or a US state?**
Paste the directory URL into `directoryUrls`. The `location` field covers
countries; city and state pages have a different URL shape on each site and are
passed straight through instead.

**Is it fast?**
A run with no profile lookups is a page fetch per 50 to 100 agencies. Turning
contact details on adds one lookup per DesignRush and Clutch agency, which is
the slow part, so use `includeContactDetails: false` when you only need the
firmographic columns.

### Related actors

- [BBB Business Scraper](https://apify.com/tagadanar/bbb-scraper) for accredited
  US businesses with ratings and complaints
- [Yellow Pages US Scraper](https://apify.com/tagadanar/yellowpages-us) for
  local business leads with phone numbers
- [Europages Scraper](https://apify.com/tagadanar/europages) for European B2B
  suppliers with emails
- [German Company KYC](https://apify.com/tagadanar/german-company-kyc) to check
  a Sortlist `registrationNumber` against the German commercial register

***

agency leads, marketing agency list, digital agency directory, agency contact
database, b2b agency prospecting, clutch scraper, clutch alternative, find
marketing agencies, agency email list, web design companies list, seo agency
leads, agency directory export, designrush scraper, sortlist scraper, clutch
agency list, agency lead generation

# Actor input Schema

## `categories` (type: `array`):

The service you want agencies for, in plain words: <code>digital marketing</code>, <code>seo</code>, <code>web design</code>, <code>branding</code>, <code>software development</code>. Add several to build one combined list. Full list: digital-marketing, seo, ppc-paid-media, social-media-marketing, content-marketing, email-marketing, public-relations, advertising, influencer-marketing, lead-generation, web-design, web-development, ecommerce, software-development, mobile-app-development, ui-ux-design, branding, graphic-design, video-production, ai, cybersecurity, cloud-consulting, blockchain, market-research, it-services, marketing-strategy, marketing-automation, game-development.

## `location` (type: `string`):

Limit the list to one country, by name or ISO code: <code>United States</code>, <code>us</code>, <code>Germany</code>, <code>de</code>. Leave empty for agencies worldwide. Both directories list agencies that <i>serve</i> a country as well as ones headquartered there, so check the <code>country</code> column if you only want local head offices. For a city or a US state, paste the directory URL into the field below instead.

## `sources` (type: `array`):

Leave all three ticked for the widest list. DesignRush brings phone numbers, email addresses and street addresses; Sortlist adds company registration numbers, exact headcounts, spoken languages and client sectors; Clutch adds verified client reviews, hourly rates, minimum project sizes and phone numbers. An agency on several directories is returned once per directory so you can compare.

## `includeContactDetails` (type: `boolean`):

Opens each DesignRush agency's profile to add the phone number, email address, street address, star rating and social profiles. Leave this on for prospecting. Turning it off makes a run several times faster and cheaper when you only need names, services, rates and websites. Sortlist rows are unaffected: that directory publishes no phone or email at all, so nothing extra is fetched or charged for them.

## `directoryUrls` (type: `array`):

Paste DesignRush, Sortlist or Clutch listing URLs to scrape exactly those pages, for example <code>https://www.designrush.com/agency/digital-marketing/new-york/new-york-city</code>, <code>https://www.sortlist.com/i/branding/germany-de</code> or <code>https://clutch.co/agencies/digital-marketing</code>. Use this for city and state pages, or any filtered listing the fields above do not cover. Agency profile URLs are not accepted here.

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

Total agencies to return across every category and directory in this run. DesignRush lists 50 per page and pages up to 483 deep; Sortlist returns 100 per page for up to 48 pages. This is the number that decides the size of your bill.

## Actor input object example

```json
{
  "categories": [
    "digital-marketing"
  ],
  "sources": [
    "designrush",
    "sortlist",
    "clutch"
  ],
  "includeContactDetails": true,
  "directoryUrls": [],
  "maxResults": 20
}
```

# Actor output Schema

## `agencies` (type: `string`):

One item per agency in the default dataset.

# 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 = {
    "categories": [
        "digital-marketing"
    ],
    "location": "",
    "sources": [
        "designrush",
        "sortlist",
        "clutch"
    ],
    "includeContactDetails": true,
    "directoryUrls": [],
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("tagadanar/agency-leads-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 = {
    "categories": ["digital-marketing"],
    "location": "",
    "sources": [
        "designrush",
        "sortlist",
        "clutch",
    ],
    "includeContactDetails": True,
    "directoryUrls": [],
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("tagadanar/agency-leads-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 '{
  "categories": [
    "digital-marketing"
  ],
  "location": "",
  "sources": [
    "designrush",
    "sortlist",
    "clutch"
  ],
  "includeContactDetails": true,
  "directoryUrls": [],
  "maxResults": 20
}' |
apify call tagadanar/agency-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tagadanar/agency-leads-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/Li9ZVB6VTbmMz7Lvl/builds/OQW2GoLqBblVhfizz/openapi.json
