# DesignRush Agency Directory Scraper CHEAPEST (`ahmed_jasarevic/designrush-agency-scraper`) Actor

Scrape B2B agencies from DesignRush.com: name, website, email, phone, address, hourly rate, budget, employees, founded year, rating, reviews, services, socials and portfolio count.

- **URL**: https://apify.com/ahmed\_jasarevic/designrush-agency-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Lead generation, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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

## DesignRush Agency Directory Scraper

Scrape **B2B agencies** from [DesignRush.com](https://www.designrush.com/agency) — one of the largest agency directories on the web. This Actor extracts agency contact and business data for **outbound prospecting, agency brokers, and market researchers**.

It pulls the full profile for every agency it visits: **name, real website, email, phone, address, hourly rate band, project budget band, employee count, founding year, rating, review count, services, areas of expertise, clients, social profiles, and portfolio count**.

### Why use this Actor?

- **Complete lead data** — email + phone are extracted from the page's embedded schema.org JSON-LD (Organization/LocalBusiness), not guessed.
- **No browser needed** — DesignRush serves server-rendered HTML, so this Actor uses a fast, cheap `CheerioCrawler` (HTTP only). No expensive browser compute units.
- **Proxy by default** — all requests go through the Apify proxy (UNBLOCKER group, designed for Cloudflare-protected sites), so your IP is never exposed and the risk of being blocked is minimized.
- **Built-in safety limits** — hard caps on requests, concurrency, retries and timeouts, so a run can never spin out of control.
- **Apify platform advantages** — schedule recurring runs, get results via API, export to JSON/CSV/Excel, and integrate with n8n or any webhook.

### How to use

1. Open the Actor in Apify Console and click **Start**.
2. (Optional) In the **Input** tab, set `startUrls` to specific category pages (e.g. `https://www.designrush.com/agency/digital-marketing`) or profile pages, or set `categories` to a list of slugs like `["digital-marketing", "web-design"]`.
3. Leave `startUrls` and `categories` empty to automatically discover and scrape **all 60+ categories** from the DesignRush agency hub.
4. Set `maxAgencies` to control how many agencies to collect.
5. Run and download the dataset.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | — | Category listing pages, profile pages, or the hub page. Empty = scrape all categories. |
| `categories` | array | — | Category slugs to scrape (ignored if `startUrls` is set). |
| `maxAgencies` | integer | 100 | Max agencies to scrape (free users capped at 10). |
| `maxPagesPerCategory` | integer | 5 | Max listing pages per category (~30 agencies per page). |
| `includeContactDetails` | boolean | true | Fetch the contact endpoint when email/phone is missing from the profile. |
| `includeReviews` | boolean | false | Include individual review snippets in the output. |
| `maxRequestsPerCrawl` | integer | 500 | Hard cap on total HTTP requests. |
| `maxConcurrency` | integer | 5 | Parallel requests (keep modest). |
| `proxyConfiguration` | object | Apify proxy (UNBLOCKER group) | Proxy settings. The UNBLOCKER group is designed for Cloudflare-protected sites and is included in your plan (100k units/month). If you encounter issues, you can switch to `BUYPROXIES94952` (faster datacenter group) in the Input tab. |

### Output

Each dataset item is one agency. Example:

```json
{
  "url": "https://www.designrush.com/agency/profile/lounge-lizard",
  "slug": "lounge-lizard",
  "agencyId": "438",
  "name": "Lounge Lizard",
  "slogan": "Growth Marketing & Web Design Experts Since 1998",
  "website": "https://www.loungelizard.com/",
  "email": "sales@loungelizard.com",
  "phone": "888-444-0110",
  "address": "112 West 34th St. 18th Floor, New York City, New York 10120, United States",
  "addressParts": {
    "streetAddress": "112 West 34th St. 18th Floor",
    "locality": "New York City",
    "region": "New York",
    "postalCode": "10120",
    "country": "United States"
  },
  "employees": "50 - 99",
  "minimalBudget": "Inquire",
  "hourlyRate": "Inquire",
  "yearFounded": "1998",
  "rating": 4.8,
  "reviewCount": 10,
  "services": ["Web Development", "Web Design", "Digital Marketing", "Branding", "eCommerce", "SEO", "PPC"],
  "areasOfExpertise": ["Application Platforms", "Branding Expertise", "CMS Platforms"],
  "clients": ["Honeywell", "Disney", "Canon", "NYU", "Reuters"],
  "socials": {
    "facebook": "https://www.facebook.com/Lounge-Lizard-Worldwide-Inc-43528043595",
    "twitter": "https://twitter.com/LoungeLizardWW",
    "linkedin": "https://www.linkedin.com/company/lounge-lizard-worldwide-inc.",
    "instagram": "https://www.instagram.com/loungelizardww/"
  },
  "portfolioCount": 26,
  "portfolioAvailable": true,
  "source": "profile",
  "scrapedAt": "2026-08-19T09:00:00.000Z"
}
```

You can download the dataset in various formats such as **JSON, HTML, CSV, or Excel**.

### Data fields

| Field | Description |
|---|---|
| `name` | Agency name |
| `agencyId` | DesignRush internal agency ID |
| `website` | Agency's real website URL |
| `email` | Contact email (from schema.org JSON-LD) |
| `phone` | Contact phone (from schema.org JSON-LD) |
| `address` / `addressParts` | Full address + structured parts |
| `hourlyRate` | Average hourly rate band (e.g. `$80/hr`, `Inquire`) |
| `minimalBudget` | Project budget band (e.g. `$1,000 - $10,000`) |
| `employees` | Employee count band (e.g. `50 - 99`) |
| `yearFounded` | Founding year |
| `rating` | Average rating (0–5) |
| `reviewCount` | Number of reviews |
| `reviews` | Individual review snippets (optional) |
| `services` | Service categories |
| `areasOfExpertise` | Expertise clusters (SEO, PPC, UI/UX, etc.) |
| `clients` | Client names |
| `socials` | Social profile URLs |
| `portfolioCount` | Number of portfolio/case-study items |
| `url` | DesignRush profile URL |

### How much does it cost to scrape DesignRush?

DesignRush is a server-rendered site, so this Actor uses **HTTP requests only** — no browser compute units. A run of 100 agencies typically costs a fraction of a compute unit. Free Apify users get a capped preview of **10 agencies** per run; paid users can scrape thousands. Proxy usage is included in Apify paid plans.

### Tips

- **Start small**: run with `maxAgencies: 20` first to validate output, then scale up.
- **Target a niche**: use `categories: ["seo", "web-design"]` to focus on a specific buyer segment.
- **Full directory**: leave inputs empty and raise `maxAgencies` and `maxRequestsPerCrawl` for a full crawl (DesignRush has tens of thousands of agencies).
- **Rate limiting**: keep `maxConcurrency` at 5 or below; the Actor already throttles to ~60 requests/minute.

### FAQ, disclaimers and support

- **Is scraping DesignRush legal?** Scraping publicly available business data is generally acceptable, but always respect the site's Terms of Service and robots.txt. This Actor only reads public profile pages.
- **Why is email/phone sometimes missing?** Some agencies hide their contact details behind a click-to-reveal button. The Actor tries the contact endpoint to recover them; if that fails, the fields are simply omitted.
- **Known limitation**: DesignRush is behind Cloudflare and blocks non-browser User-Agents (403). The Actor sends full browser headers on every request. The UNBLOCKER proxy group is designed for Cloudflare-protected sites and is included in your plan (100k units/month). If you see many failures, switch the proxy group to `BUYPROXIES94952` in the Input tab for faster datacenter proxies (but profile pages may still 403 on some IPs).
- Found a bug or want a custom version (e.g. reviews-only, or enriched with LinkedIn data)? Open an issue on the Actor's Issues tab or contact us for a custom solution.

# Actor input Schema

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

Optional. Category listing pages (e.g. https://www.designrush.com/agency/digital-marketing), agency profile pages (https://www.designrush.com/agency/profile/{slug}), or the hub page (https://www.designrush.com/agency). If empty, all categories are discovered automatically.

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

Optional. List of category slugs to scrape, e.g. \["digital-marketing", "web-design", "seo"]. Ignored if startUrls is provided.

## `maxAgencies` (type: `integer`):

Maximum number of agency profiles to scrape. Free users are capped at 10.

## `maxPagesPerCategory` (type: `integer`):

Maximum number of listing pages to crawl per category (each page lists ~30 agencies).

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

When an agency's email/phone is not present in the profile page, fetch the contact endpoint to try to recover it.

## `includeReviews` (type: `boolean`):

Include the array of individual review snippets (author, date, text, rating) in the output.

## `maxRequestsPerCrawl` (type: `integer`):

Hard cap on total HTTP requests (listing pages + profile pages + contact fetches).

## `maxConcurrency` (type: `integer`):

Number of parallel requests. Keep modest to avoid rate limiting.

## `proxyConfiguration` (type: `object`):

Proxy settings. Apify proxy is used by default (UNBLOCKER group, designed for Cloudflare-protected sites) so your IP is never exposed and the risk of being blocked is minimized.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.designrush.com/agency/digital-marketing"
    }
  ],
  "categories": [
    "digital-marketing",
    "web-design"
  ],
  "maxAgencies": 100,
  "maxPagesPerCategory": 5,
  "includeContactDetails": true,
  "includeReviews": false,
  "maxRequestsPerCrawl": 1000,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.designrush.com/agency/digital-marketing"
        }
    ],
    "categories": [
        "digital-marketing",
        "web-design"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/designrush-agency-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": [{ "url": "https://www.designrush.com/agency/digital-marketing" }],
    "categories": [
        "digital-marketing",
        "web-design",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/designrush-agency-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 '{
  "startUrls": [
    {
      "url": "https://www.designrush.com/agency/digital-marketing"
    }
  ],
  "categories": [
    "digital-marketing",
    "web-design"
  ]
}' |
apify call ahmed_jasarevic/designrush-agency-scraper --silent --output-dataset

```

## MCP server setup

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