# SiteSonar (`logical_vivacity/sitesonar`) Actor

Turn any website URL into a clean, structured company profile: name, description, industry, emails, phones, socials, locations, team, products, and more. Fast and low-cost with no per-page AI fees. Tested on 3,000+ real business sites

- **URL**: https://apify.com/logical\_vivacity/sitesonar.md
- **Developed by:** [Logical Vivacity](https://apify.com/logical_vivacity) (community)
- **Categories:** Lead generation, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.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/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.

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

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## SiteSonar - Company Data & Contact Extractor 🛰️

**Turn any website URL into a clean, structured company profile in seconds.**
Feed SiteSonar a list of domains and get back ready-to-use JSON: company name,
description, industry, emails, phone numbers, social links, office locations,
team members, products, and more - no manual copy-pasting, no AI tokens billed
per page, no cleanup afterward.

Perfect for **lead enrichment, sales prospecting, CRM hydration, market
research, competitor mapping, and building B2B datasets** at scale.

---

### Why SiteSonar?

- ⚡ **Fast & cheap.** Built to process thousands of domains without burning
  through per-page AI costs. Predictable pricing, high throughput.
- 🎯 **Structured, not scraped.** You get typed fields (emails, phones,
  socials, locations, people…), not a wall of raw text to parse yourself.
- 🧹 **Clean by default.** Aggressive noise-filtering removes cookie banners,
  nav junk, boilerplate, and duplicate contacts - so what lands in your CRM is
  usable on day one.
- 🌍 **Tested at scale.** Validated across **3,000+ real business websites**
  spanning dozens of industries and countries.
- 🔌 **Drop-in ready.** Standard Apify dataset output - export to CSV, Excel,
  JSON, or push straight into your database, Google Sheets, or CRM via the
  Apify API and integrations (Make, Zapier, n8n).

---

### What you get for every website

| Field | Description |
|---|---|
| `company_name`, `legal_name` | Business identity |
| `description`, `tagline` | What the company does |
| `industry`, `category` | Classification for segmentation |
| `emails`, `phones` | De-duplicated contact points |
| `socials` | LinkedIn, X/Twitter, Facebook, Instagram, YouTube, GitHub, TikTok… |
| `locations` | Parsed addresses (street, city, region, postal, country) |
| `people` | Team members with role, email, and LinkedIn where available |
| `products_services` | Structured product/service list with pricing when shown |
| `booking_url` | Scheduling / appointment link (Calendly, Acuity, and more) |
| `related_domains` | Other domains the site links out to, de-duplicated |
| `logo_url`, `favicon_url` | Brand assets |
| `founded_year`, `copyright_year` | Company age signals |
| `hours`, `geo`, `ratings` | Opening hours, coordinates, review scores |
| `faqs`, `testimonials` | On-page FAQs and customer quotes |

*(Field availability depends on what each website actually publishes.)*

#### Typical coverage across real websites

Measured on a 3,000-site benchmark:

- **Company name & socials:** ~100%
- **Category & description:** ~90%
- **Industry & products:** ~85%
- **Phone numbers:** ~63% · **Locations:** ~55% · **Emails:** ~54%
- **Team members, FAQs, booking links, ratings** and more where present

---

### How to use it

1. Click **Try for free**.
2. Paste one or more website URLs into **Start URLs** (or upload a list).
3. (Optional) Tune crawl depth and page limits.
4. Run it, then **export the results** as JSON / CSV / Excel - or connect it to
   your CRM, spreadsheet, or workflow tool.

#### Example input

```json
{
  "startUrls": [
    { "url": "https://www.stripe.com" },
    { "url": "https://www.notion.so" }
  ],
  "maxCrawlDepth": 2,
  "maxPagesPerSite": 20
}
````

#### Example output (one row per website)

```json
{
  "company_name": "Stripe",
  "website": "stripe.com",
  "industry": "Financial Services",
  "category": "Software & IT",
  "description": "Online payment processing for internet businesses.",
  "emails": ["support@stripe.com"],
  "phones": ["+1 888-926-2289"],
  "socials": {
    "linkedin": "https://www.linkedin.com/company/stripe",
    "twitter": "https://twitter.com/stripe"
  },
  "locations": [
    { "raw": "354 Oyster Point Blvd, South San Francisco, CA 94080", "city": "South San Francisco", "region": "CA", "country": "US" }
  ],
  "products_services": [
    { "name": "Payments" },
    { "name": "Billing" }
  ],
  "related_domains": [{ "domain": "github.com", "links": 4 }]
}
```

***

### Input options

| Option | What it does |
|---|---|
| **Start URLs** | The websites to profile. One row is produced per site. |
| **Max crawl depth** | How many link-hops from the start page to explore. Higher = more coverage, slower. |
| **Max pages per site** | Hard cap on pages per website so large sites stay fast. |
| **Stay on the same domain** | Keep the crawl on the company's own site (recommended). |
| **Prioritize about/contact/team pages** | Visit the pages richest in company info first. |
| **Render mode** | `Cheerio` (fastest), `Auto` (render only when a page needs it), or `Browser` (always render JS-heavy pages). |

***

### Common use cases

- **Sales & lead enrichment** - turn a list of domains into contactable leads.
- **CRM hydration** - fill missing company fields automatically.
- **Market & competitor research** - profile an entire industry in one run.
- **Recruiting & partnerships** - surface team members and their roles.
- **Data & directory building** - assemble structured B2B datasets.

***

### Integrations & export

Results are stored in a standard Apify dataset, so you can:

- Download as **JSON, CSV, Excel, or HTML**.
- Pull them via the **Apify API**.
- Automate delivery to **Google Sheets, Make, Zapier, n8n, Slack**, or your own
  database using Apify integrations.

***

### FAQ

**Does it work on any website?**
It works best on standard business websites. Pages that publish clear company
information return the richest profiles; sparse or heavily locked-down sites
return fewer fields.

**Will it get blocked?**
SiteSonar runs on Apify's infrastructure with proxy support. For tougher sites,
enable a browser render mode and/or proxies from the run options.

**How much does it cost?**
Because it does not spend AI tokens per page, SiteSonar is built to be one of
the most cost-efficient ways to enrich company data at volume. See the pricing
on this Actor's page.

**Is my usage compliant?**
You are responsible for using extracted data in line with the target sites'
terms and applicable law (including GDPR/CCPA where relevant). SiteSonar only
collects information that websites publish publicly.

***

*Built for teams that need clean company data fast - without the per-page AI
bill. Start with the free trial and see your first profiles in under a minute.*

# Actor input Schema

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

One or more website URLs to profile. Each is treated as a separate company; you get one structured profile per site. Paste URLs or upload a list.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ]
}
```

# 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://apify.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("logical_vivacity/sitesonar").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://apify.com" }] }

# Run the Actor and wait for it to finish
run = client.actor("logical_vivacity/sitesonar").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 '{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ]
}' |
apify call logical_vivacity/sitesonar --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SiteSonar",
        "description": "Turn any website URL into a clean, structured company profile: name, description, industry, emails, phones, socials, locations, team, products, and more. Fast and low-cost with no per-page AI fees. Tested on 3,000+ real business sites",
        "version": "0.0",
        "x-build-id": "3aiuPgHHTJK1MLaeT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/logical_vivacity~sitesonar/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-logical_vivacity-sitesonar",
                "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/logical_vivacity~sitesonar/runs": {
            "post": {
                "operationId": "runs-sync-logical_vivacity-sitesonar",
                "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/logical_vivacity~sitesonar/run-sync": {
            "post": {
                "operationId": "run-sync-logical_vivacity-sitesonar",
                "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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Website URLs",
                        "type": "array",
                        "description": "One or more website URLs to profile. Each is treated as a separate company; you get one structured profile per site. Paste URLs or upload a list.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
