# Agency Lead Intelligence (`lissome_dancer/agency-lead-intelligence`) Actor

Production-ready Agency Vista scraper for extracting high-quality B2B agency leads, contact details, websites, services, ratings, and CRM-ready business data for sales, recruiting, and outreach workflows.

- **URL**: https://apify.com/lissome\_dancer/agency-lead-intelligence.md
- **Developed by:** [Rohith S](https://apify.com/lissome_dancer) (community)
- **Categories:** Lead generation, Automation, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Lead Intelligence 🚀

> **Production-ready B2B lead-generation Apify Actor** that extracts agency leads from public directories and exports CRM-ready datasets for sales teams, recruiters, outreach agencies, and lead-generation businesses.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-brightgreen)](https://apify.com/store)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.5-blue)](https://www.typescriptlang.org/)
[![Crawlee](https://img.shields.io/badge/Crawlee-3.9-orange)](https://crawlee.dev/)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)

---

### 🎯 What This Actor Does

**Agency Lead Intelligence** crawls agency directories and extracts structured B2B lead data at scale. It supports:

- `agencyvista`

Other directories are planned for future releases.

The actor:

- 🔎 discovers agencies from listing and search pages
- 🏢 opens agency profile pages and extracts structured data
- 🌐 optionally visits agency websites for lightweight enrichment
- 📤 exports results for spreadsheets and CRM workflows

#### Perfect For

- 🏢 **Sales Teams**: Find and contact agencies in target markets
- 🤝 **Recruiters**: Build agency outreach and partnership pipelines
- 📧 **Outreach Agencies**: Scale prospecting with cleaner contact data
- 💼 **Lead-Gen Businesses**: Build curated agency datasets
- 🔍 **Prospecting Workflows**: Move structured results into CRMs quickly

---

### ✨ Key Features

| Feature | Details |
| --- | --- |
| 🔎 **Directory Support** | Agency Vista only for now |
| ⚙️ **Smart Search Inputs** | Keywords, categories, locations, services, ratings |
| 🌐 **Website Enrichment** | Extract additional emails, phones, socials, contact page links |
| 📤 **CRM-Ready Exports** | JSON, CSV, HubSpot, Salesforce, Apollo-style CSV outputs |
| 🧹 **Deduplication** | Domain/profile/name-based deduplication logic |
| 🛡️ **Anti-Blocking Basics** | Proxy support, randomized delays, browser-like headers |
| 📈 **Scalable Runs** | Configurable concurrency, retries, graceful failure handling |
| 💸 **Low Overhead** | Lightweight HTTP-first crawl flow using Crawlee + `gotScraping` |

---

### 📊 Extracted Data Fields

Each lead can include fields such as:

- `company_name`
- `agency_profile_url`
- `website`
- `domain`
- `emails`
- `phone_numbers`
- `location`
- `categories`
- `services`
- `rating`
- `review_count`
- `description`
- `employee_range`
- `founded_year`
- `linkedin_url`
- `twitter_url`
- `facebook_url`
- `instagram_url`
- `contact_page_url`
- `quality_score`
- `source_directory`
- `scraped_at`
- `enriched`
- `enriched_at`

Example dataset item:

```json
{
  "company_name": "Rocket Digital Agency",
  "agency_profile_url": "https://agencyvista.com/agency/rocket-digital/summary",
  "website": "https://rocketdigital.com",
  "domain": "rocketdigital.com",
  "emails": ["hello@rocketdigital.com", "contact@rocketdigital.com"],
  "phone_numbers": ["+1-555-123-4567"],
  "location": {
    "city": "New York",
    "state": "NY",
    "country": "United States",
    "full_address": "123 Broadway, New York, NY 10001"
  },
  "categories": ["Digital Marketing", "SEO", "PPC"],
  "services": ["Google Ads", "SEO Audits", "Content Marketing", "Social Media"],
  "rating": 4.8,
  "review_count": 47,
  "description": "Full-service digital marketing agency specializing in ROI-driven campaigns.",
  "employee_range": "10-50",
  "founded_year": 2015,
  "linkedin_url": "https://linkedin.com/company/rocket-digital",
  "twitter_url": "https://twitter.com/rocketdigital",
  "facebook_url": "https://facebook.com/rocketdigital",
  "instagram_url": "https://instagram.com/rocketdigital",
  "contact_page_url": "https://rocketdigital.com/contact",
  "source_directory": "agencyvista",
  "quality_score": 88,
  "enriched": true,
  "scraped_at": "2026-05-12T14:22:45.000Z",
  "enriched_at": "2026-05-12T14:23:00.000Z"
}
````

***

### 🏗️ How It Works

```text
Agency Lead Intelligence
├── Search discovery
│   ├── Build search URLs from filters
│   └── Crawl directory listing/search pages
├── Profile extraction
│   ├── Discover profile URLs
│   └── Extract structured agency data
├── Website enrichment
│   ├── Visit agency websites when enabled
│   └── Try to find emails, phones, socials, contact pages
└── Output
    ├── Save dataset items
    └── Generate optional export files
```

Current runtime characteristics:

- Uses `BasicCrawler` with `gotScraping`
- Uses Agency Vista-specific parsing
- Enrichment is lightweight and HTTP-first
- Other directory adapters are planned, but not active yet

***

### ⚙️ Input Configuration

#### Basic Search

```json
{
  "keywords": ["digital marketing", "SEO agency"],
  "locations": ["New York", "California"],
  "maxResults": 200,
  "exportFormat": "hubspot"
}
```

#### Full Configuration

```json
{
  "keywords": ["digital marketing"],
  "categories": ["SEO", "PPC", "Social Media"],
  "locations": ["United States"],
  "services": ["Google Ads", "content marketing"],
  "minRating": 4,
  "maxResults": 500,
  "maxConcurrency": 5,
  "enableEnrichment": true,
  "deepEnrichment": false,
  "exportFormat": "salesforce",
  "targetDirectory": "agencyvista",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

#### Input Parameters

| Parameter | Type | Default | Description |
| --- | --- | --- | --- |
| `keywords` | `string[]` | `[]` | Search keywords |
| `categories` | `string[]` | `[]` | Agency category filters |
| `locations` | `string[]` | `[]` | City, state, country filters |
| `services` | `string[]` | `[]` | Service offering filters |
| `minRating` | `number` | `0` | Minimum rating from `0-5` |
| `maxResults` | `number` | `100` | Max leads to extract. `0` means no explicit limit |
| `maxConcurrency` | `number` | `5` | Concurrent requests. Current implementation clamps to `1-5` |
| `enableEnrichment` | `boolean` | `true` | Visit agency websites for more data |
| `deepEnrichment` | `boolean` | `false` | Present in input schema, but not actively used in the current runtime flow |
| `exportFormat` | `string` | `json` | `json`, `csv`, `hubspot`, `salesforce`, `apollo` |
| `startUrls` | `array` | `[]` | Optional custom search URLs. Overrides generated search URLs |
| `targetDirectory` | `string` | `agencyvista` | Directory to scrape. Currently only `agencyvista` is active |
| `proxyConfiguration` | `object` | Apify proxy prefill | Proxy settings for larger production runs |
| `requestTimeoutSecs` | `number` | `30` | Request timeout, normalized to `10-120` |
| `maxRetries` | `number` | `3` | Max retries, normalized to `0-10` |

***

### 📤 Export Formats

#### JSON (Default)

Full structured data in the default dataset. Best for custom pipelines, APIs, and downstream processing.

#### Generic CSV

Universal CSV format compatible with spreadsheets and generic CRM imports.

#### HubSpot CSV

Pre-mapped for HubSpot-style imports, including fields such as:

- `Company Name`
- `Website URL`
- `Phone Number`
- `Email`
- `City`
- `State/Region`
- `Country/Region`

#### Salesforce CSV

Pre-mapped for Salesforce-style account imports, including:

- `Account Name`
- `Website`
- `Phone`
- `BillingCity`
- `BillingState`
- `BillingCountry`
- `Industry`

#### Apollo CSV

Pre-mapped for Apollo-style company imports.

When `exportFormat` is not `json`, the actor also writes a file to the default key-value store:

- `leads.csv`
- `leads.hubspot`
- `leads.salesforce`
- `leads.apollo`

***

### 🛡️ Anti-Blocking Strategy

- 🔁 **Rotating Proxies**: Supports Apify proxy configuration
- 🕒 **Adaptive Delays**: Randomized delays between requests
- 🧾 **Realistic Headers**: Browser-like request headers
- ♻️ **Retry Logic**: Failed core requests are retried through the crawl flow
- ⚠️ **Graceful Enrichment Failure**: If a website is unreachable, the base profile lead is still preserved

***

### 📋 Use Cases

#### Sales Prospecting

> "Find digital marketing agencies in New York with strong ratings and export them for outreach."

#### Recruiter Pipeline

> "Build a list of web design agencies in California for partnership or recruiting outreach."

#### Competitive Intelligence

> "Map SEO agencies in the UK with employee counts, founding years, and social profiles."

#### Lead Operations

> "Generate structured agency lead datasets for CRM import and internal prospecting workflows."

***

### 🚀 Quick Start

#### Prerequisites

- [Node.js 18+](https://nodejs.org/)
- [Apify CLI](https://docs.apify.com/cli) for local Actor runs

#### Install

```bash
npm install
```

#### Run locally

```bash
npm run build
npm start
```

#### Development scripts

```bash
npm run start:dev
npm run dev
npm run type-check
npm run lint
```

#### Apify CLI

```bash
apify run
```

***

### 🔧 Technical Details

- **Runtime**: Node.js 18+ with TypeScript
- **Crawler Core**: Crawlee `BasicCrawler`
- **HTTP Layer**: `gotScraping`
- **SDK**: Apify SDK v3
- **Directory Parsing**: Adapter-based extraction per supported directory
- **Deduplication**: Domain, normalized profile URL, then company-name hash fallback
- **Exports**: `csv-stringify` with custom field mappers

***

### ⚠️ Current Notes

- `deepEnrichment` is visible in the input schema, but the current runtime does not use a separate live Playwright enrichment flow.
- Website enrichment is lightweight and does not guarantee JavaScript-rendered contact data.
- Dataset output can contain both a base profile item and a later enriched item for the same agency. If you need one final row per company, deduplicate by `dedup_key`, `domain`, or `agency_profile_url`.
- Directory markup changes over time, so selector updates may occasionally be required.

***

### 📝 License

Apache 2.0. See [LICENSE](LICENSE) for details.

***

### 🤝 Support

- 📧 Found a bug? Open an issue or leave a detailed review note.
- 📖 Check the [Apify Documentation](https://docs.apify.com)
- 💬 Join the [Apify Discord Community](https://discord.gg/jyEM2PRvMU)

***

*Built with Crawlee and Apify SDK v3* ✨

# Actor input Schema

## `keywords` (type: `array`):

Search terms to find agencies (e.g. 'digital marketing', 'SEO agency', 'web design'). Leave empty to use category/location filters only.

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

Filter by specific agency categories or service types.

## `locations` (type: `array`):

Filter agencies by city, state, or country (e.g. 'New York', 'California', 'United Kingdom').

## `services` (type: `array`):

Filter by specific services offered by agencies (e.g. 'Google Ads', 'content marketing', 'email marketing').

## `minRating` (type: `number`):

Minimum agency rating filter (1.0 – 5.0). Set to 0 to disable.

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

Maximum number of agency leads to extract. Set to 0 for unlimited.

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

Maximum number of concurrent browser/HTTP requests. Higher values increase speed but may trigger rate limiting.

## `enableEnrichment` (type: `boolean`):

Visit agency websites to extract additional contact info, social links, and metadata. Increases runtime and cost but significantly improves lead quality.

## `deepEnrichment` (type: `boolean`):

Enable deep enrichment to detect contact pages, extract all social profiles, and gather SEO metadata. Requires enableEnrichment to be true. Uses Playwright for JS-rendered sites.

## `exportFormat` (type: `string`):

Primary export format for the output dataset.

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

Optional: provide custom Agency Vista or similar directory URLs to start crawling from. Overrides keyword/category search if provided.

## `targetDirectory` (type: `string`):

The agency directory to scrape. Agency Vista is the primary target.

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

Configure proxy rotation for anti-blocking. Recommended: Apify Residential Proxy for production.

## `requestTimeoutSecs` (type: `integer`):

Maximum time to wait for a page to load before timing out.

## `maxRetries` (type: `integer`):

Maximum number of times to retry a failed request before giving up.

## Actor input object example

```json
{
  "keywords": [
    "digital marketing",
    "SEO agency",
    "PPC management"
  ],
  "categories": [
    "Digital Marketing",
    "SEO",
    "PPC",
    "Web Design",
    "Social Media"
  ],
  "locations": [
    "New York",
    "London",
    "California"
  ],
  "services": [
    "Google Ads",
    "content marketing",
    "email marketing"
  ],
  "minRating": 0,
  "maxResults": 100,
  "maxConcurrency": 5,
  "enableEnrichment": true,
  "deepEnrichment": false,
  "exportFormat": "json",
  "startUrls": [],
  "targetDirectory": "agencyvista",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "requestTimeoutSecs": 30,
  "maxRetries": 3
}
```

# 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 = {
    "keywords": [
        "digital marketing"
    ],
    "categories": [],
    "locations": [],
    "services": [],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lissome_dancer/agency-lead-intelligence").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 = {
    "keywords": ["digital marketing"],
    "categories": [],
    "locations": [],
    "services": [],
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("lissome_dancer/agency-lead-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "digital marketing"
  ],
  "categories": [],
  "locations": [],
  "services": [],
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call lissome_dancer/agency-lead-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lissome_dancer/agency-lead-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Agency Lead Intelligence",
        "description": "Production-ready Agency Vista scraper for extracting high-quality B2B agency leads, contact details, websites, services, ratings, and CRM-ready business data for sales, recruiting, and outreach workflows.",
        "version": "0.0",
        "x-build-id": "1sXVjA6FaDyrBfMiO"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lissome_dancer~agency-lead-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lissome_dancer-agency-lead-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lissome_dancer~agency-lead-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-lissome_dancer-agency-lead-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lissome_dancer~agency-lead-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-lissome_dancer-agency-lead-intelligence",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Search terms to find agencies (e.g. 'digital marketing', 'SEO agency', 'web design'). Leave empty to use category/location filters only.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "categories": {
                        "title": "Agency Categories",
                        "type": "array",
                        "description": "Filter by specific agency categories or service types.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Filter agencies by city, state, or country (e.g. 'New York', 'California', 'United Kingdom').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "services": {
                        "title": "Services Filter",
                        "type": "array",
                        "description": "Filter by specific services offered by agencies (e.g. 'Google Ads', 'content marketing', 'email marketing').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minRating": {
                        "title": "Minimum Rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum agency rating filter (1.0 – 5.0). Set to 0 to disable.",
                        "default": 0
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of agency leads to extract. Set to 0 for unlimited.",
                        "default": 100
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Maximum number of concurrent browser/HTTP requests. Higher values increase speed but may trigger rate limiting.",
                        "default": 5
                    },
                    "enableEnrichment": {
                        "title": "Enable Website Enrichment",
                        "type": "boolean",
                        "description": "Visit agency websites to extract additional contact info, social links, and metadata. Increases runtime and cost but significantly improves lead quality.",
                        "default": true
                    },
                    "deepEnrichment": {
                        "title": "Deep Enrichment Mode",
                        "type": "boolean",
                        "description": "Enable deep enrichment to detect contact pages, extract all social profiles, and gather SEO metadata. Requires enableEnrichment to be true. Uses Playwright for JS-rendered sites.",
                        "default": false
                    },
                    "exportFormat": {
                        "title": "Export Format",
                        "enum": [
                            "json",
                            "csv",
                            "hubspot",
                            "salesforce",
                            "apollo"
                        ],
                        "type": "string",
                        "description": "Primary export format for the output dataset.",
                        "default": "json"
                    },
                    "startUrls": {
                        "title": "Custom Start URLs",
                        "type": "array",
                        "description": "Optional: provide custom Agency Vista or similar directory URLs to start crawling from. Overrides keyword/category search if provided.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "targetDirectory": {
                        "title": "Target Directory",
                        "enum": [
                            "agencyvista",
                            "clutch",
                            "goodfirms",
                            "sortlist"
                        ],
                        "type": "string",
                        "description": "The agency directory to scrape. Agency Vista is the primary target.",
                        "default": "agencyvista"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Configure proxy rotation for anti-blocking. Recommended: Apify Residential Proxy for production."
                    },
                    "requestTimeoutSecs": {
                        "title": "Request Timeout (seconds)",
                        "minimum": 10,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Maximum time to wait for a page to load before timing out.",
                        "default": 30
                    },
                    "maxRetries": {
                        "title": "Max Retries Per Request",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum number of times to retry a failed request before giving up.",
                        "default": 3
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
