# SimilarWeb Scraper (`ecomdate/similarweb-scraper`) Actor

Scrape SimilarWeb website analytics in bulk, including traffic, rankings, categories, top countries, screenshots, tags, and similar sites. Ideal for SEO research, competitor analysis, and lead scoring. Supports pay-per-event pricing and large domain lists.

- **URL**: https://apify.com/ecomdate/similarweb-scraper.md
- **Developed by:** [Ecomdate Tech](https://apify.com/ecomdate) (community)
- **Categories:** SEO tools, Lead generation, Automation
- **Stats:** 225 total users, 43 monthly users, 100.0% runs succeeded, 9 bookmarks
- **User rating**: 4.80 out of 5 stars

## Pricing

from $4.00 / 1,000 performance overview scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SimilarWeb Bulk Analytics & Similar Sites Scraper

Apify Actor for scraping **Similarweb website analytics and similar
sites in bulk**.
Paste a list of domains, choose whether to include similar sites, and
get **clean, structured data** ready for enrichment, lead scoring, and
market research.

No Similarweb API key required - the actor works on publicly available
data and handles concurrency, retries.

***

### What this Actor does

For each domain, the Actor can:

- 🔍 **Scrape website overview** - title, description, category,
  traffic & ranks
- 🌎 **Capture traffic & geography** - total visits, global rank,
  category rank, top country & rank
- 🖼 **Grab visual assets** - favicon + mobile & desktop screenshots
- 🧭 **(Optional) Discover similar sites** - related domains with the
  same rich analytics
- 🧩 **(Optional) Tag each site** - topic/brand tags extracted from Similarweb

You can run it on **a few domains** for quick checks or **thousands of
domains** for bulk analytics pipelines.

***

### Who is it for?

- **Growth & SEO teams** - competitor analysis, content & keyword
  research
- **Sales & RevOps** - lead scoring, ICP matching, prioritizing
  high-traffic domains
- **Investors & analysts** - traffic and category signals for
  portfolio or prospect research
- **Data platforms & SaaS** - enrichment of existing domain lists
  with traffic & ranking metrics

***

### Pricing (Pay-Per-Event)

This Actor uses **Apify Pay-Per-Event (PPE)** pricing:

- **Overview Scraped** - **$4 per 1,000 events**
  - 1 event per successfully scraped domain overview
  - Always charged when a domain is successfully processed
- **Similar Sites Scraped** - **$4 per 1,000 events**
  - 1 event per domain where similar sites data is successfully
    scraped
  - Charged **only if** `scrapeSimilarSites: true` and similar
    sites are fetched successfully

#### Quick cost examples

| Use case | Example size | Approx. PPE cost\* |
|----------|--------------|-------------------|
| Only overviews | 1,000 domains | $4 |
| Overview + similar sites | 1,000 domains | $8 |

\*Compute costs not included. Actual costs may vary based on success rates.

### Features

- 🚀 **Async bulk processing** - domains processed concurrently for
  fast runs
- 🔄 **Automatic retry handling** - simple transient errors are
  retried for you
- 🌐 **Optional similar sites lookup** - enable only when you need
  it
- 📊 **Rich analytics** - visits, ranking, categories, geography,
  tags
- 💾 **Clean dataset output** - one record per domain, optionally
  with an array of similar sites

***

### Input Parameters

#### Actor input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `domains` | Array<String> | Yes | - | List of domains to scrape. |
| `scrapeSimilarSites` | Boolean | No | `false` | If true, also scrape similar sites. |

#### Example input

```json
{
  "domains": [
    "stripe.com",
    "apple.com"
  ],
  "scrapeSimilarSites": true
}
```

***

### Output data

The Actor outputs structured data stored in the default Apify dataset.

***

#### Example output

```json
{
  "domain": "stripe.com",
  "inputDomain": "stripe.com",
  "title": "Stripe Privacy Center",
  "description": "Stripe's suite of modular UI building blocks make it easy to design a secure on-brand checkout and payments experience for your customers.",
  "snapshotDate": "2025-10-01T00:00:00+00:00",
  "category": "Finance",
  "globalRank": 458,
  "topCountry": "US",
  "topCountryRank": 325,
  "categoryRank": 26,
  "totalVisits": 94590134,
  "bounceRate": 0.5424,
  "pagesPerVisit": 3.3,
  "timeOnSite": 175.23,
  "estimatedMonthlyVisits": {
    "2025-08-01": 91752638,
    "2025-09-01": 88593774,
    "2025-10-01": 94590134
  },
  "topCountryShares": {
    "US": 0.3064,
    "GB": 0.0907,
    "FR": 0.0521,
    "IN": 0.0443,
    "CA": 0.0342
  },
  "trafficSources": {
    "Direct": 0.5769,
    "Referrals": 0.2912,
    "Search": 0.12,
    "Social": 0.0065,
    "Paid Referrals": 0.0045,
    "Mail": 0.0009
  },
  "topKeywords": [
    {
      "name": "stripe",
      "volume": 2765510,
      "cpc": 2.74,
      "estimatedMonthlyValue": 2430000
    },
    {
      "name": "stripe login",
      "volume": 199710,
      "cpc": 3.49,
      "estimatedMonthlyValue": 199340
    }
  ],
  "favicon": "https://site-images.similarcdn.com/image?url=stripe.com&t=2&s=1&h=d68993ccefeee1fe61031cd46586b3158ad13585abae80195cc41b500863c253",
  "mobileScreenshot": "https://site-images.similarcdn.com/image?url=stripe.com&t=4&s=1&h=d68993ccefeee1fe61031cd46586b3158ad13585abae80195cc41b500863c253",
  "desktopScreenshot": "https://site-images.similarcdn.com/image?url=stripe.com&t=1&s=1&h=d68993ccefeee1fe61031cd46586b3158ad13585abae80195cc41b500863c253",
  "tags": [],
  "similarSites": [],
  "isSmallSite": false,
  "isDataFromGoogleAnalytics": false,
  "scrapedAt": "2025-12-03T10:30:45.123Z"
}
```

***

#### Additional fields

When `scrapeSimilarSites` is set to `true`, the output items will include the following additional fields:

```json
{
  "similarSites": [
    {
      "domain": "americanexpress.com",
      "title": "American Express Credit Cards, Rewards & Banking",
      "description": "American Express offers world-class Charge and Credit Cards, Gift Cards, Rewards, Travel, Personal Savings, Business Services, Insurance and more.",
      "totalVisits": 101459089,
      "globalRank": 313,
      "categoryRank": 6,
      "topCountry": "US",
      "topCountryRank": 98,
      "favicon": "https://site-images.similarcdn.com/image?url=americanexpress.com&t=2&h=50a8ba5a26c8aecf1fb7963e38401c74f27f0f2abf54799cf579a17af6dbffb3",
      "mobileScreenshot": "https://site-images.similarcdn.com/image?url=americanexpress.com&t=4&h=50a8ba5a26c8aecf1fb7963e38401c74f27f0f2abf54799cf579a17af6dbffb3",
      "desktopScreenshot": "https://site-images.similarcdn.com/image?url=americanexpress.com&t=1&h=50a8ba5a26c8aecf1fb7963e38401c74f27f0f2abf54799cf579a17af6dbffb3"
    },
    {
      "domain": "cigna.com",
      "title": "Cigna Healthcare | Health Insurance, Dental Plans & Medicare",
      "description": "Cigna Healthcare offers health insurance plans such as medical and dental to individuals and employers, international health insurance, and Medicare coverage.",
      "totalVisits": 11020147,
      "globalRank": 3749,
      "categoryRank": 16,
      "topCountry": "US",
      "topCountryRank": 767,
      "favicon": "https://site-images.similarcdn.com/image?url=cigna.com&t=2&h=25143aae11a29782bdf0527072c691744a847f3fefdaa0405627be4de9485ef9",
      "mobileScreenshot": "https://site-images.similarcdn.com/image?url=cigna.com&t=4&h=25143aae11a29782bdf0527072c691744a847f3fefdaa0405627be4de9485ef9",
      "desktopScreenshot": "https://site-images.similarcdn.com/image?url=cigna.com&t=1&h=25143aae11a29782bdf0527072c691744a847f3fefdaa0405627be4de9485ef9"
    }
  ],
  "tags": [
    "stripe",
    "online payments",
    "payments"
  ]
}
```

***

#### Main item fields

| Field | Type | Description |
|-------|------|-------------|
| `domain` | String | Normalized domain name |
| `inputDomain` | String | Original input URL/domain |
| `title` | String | Website title |
| `description` | String | Website description |
| `snapshotDate` | String (ISO date) | Data snapshot date |
| `category` | String | Website category path |
| `globalRank` | Integer | Global traffic rank |
| `categoryRank` | Integer | Category rank |
| `topCountry` | String | Top traffic country code |
| `topCountryRank` | Integer | Rank in that top country |
| `totalVisits` | Integer | Total visits |
| `bounceRate` | Number | Bounce rate (0-1) |
| `pagesPerVisit` | Number | Average pages per visit |
| `timeOnSite` | Number | Average time on site (seconds) |
| `estimatedMonthlyVisits` | Object | Monthly visits history (date → visits) |
| `topCountryShares` | Object | Top country traffic shares (countryCode → share) |
| `trafficSources` | Object | Traffic source breakdown (source → share) |
| `topKeywords` | Array<Object> | Top organic keywords with volume, CPC, value |
| `favicon` | String (URL) | Favicon URL |
| `mobileScreenshot` | String (URL) | Mobile screenshot image URL |
| `desktopScreenshot` | String (URL) | Desktop screenshot image URL |
| `tags` | Array<String> | Extracted descriptive tags |
| `similarSites` | Array<Object> | Similar sites (optional) |
| `isSmallSite` | Boolean | Whether site has low traffic |
| `isDataFromGoogleAnalytics` | Boolean | Whether data is from Google Analytics |
| `scrapedAt` | String (ISO date) | Timestamp of when the data was scraped |

#### Similar sites object

| Field | Type | Description |
|-------|------|-------------|
| `domain` | String | Similar site domain |
| `title` | String | Title of the similar site |
| `description` | String | Description |
| `totalVisits` | Integer | Total visits |
| `globalRank` | Integer | Global rank |
| `categoryRank` | Integer | Category rank |
| `topCountry` | String | Top traffic country |
| `topCountryRank` | Integer | Rank in that country |
| `favicon` | String (URL) | Favicon |
| `mobileScreenshot` | String (URL) | Mobile screenshot |
| `desktopScreenshot` | String (URL) | Desktop screenshot |

***

### How to use

1. Click **"Try for free"**
2. Paste your domains into the `domains` input
3. Set `scrapeSimilarSites` if needed
4. Run the Actor
5. Export results from the Dataset as JSON/CSV/Excel/API

***

### FAQs

**Do I need a Similarweb API key?**
No. This Actor works on publicly available data.

**Will every domain have full data?**
No. Low-traffic domains may have partial or no data.

**Is this an official Similarweb tool?**
No. This Actor is independent and simply automates scraping of publicly
available pages.

***

### Support 📞

If you need help, want to request a feature, or found a bug:

- Open an issue directly on the Actor page
- Or contact us via [Ecomdate Tech](https://apify.com/ecomdate)

***

### Disclaimer ⚖️

This actor is **not affiliated with SimilarWeb**. It retrieves publicly available data from SimilarWeb pages. Users are responsible for compliance with SimilarWeb’s Terms of Service, GDPR, CCPA, and other applicable laws.

# Actor input Schema

## `domains` (type: `array`):

List of domains to scrape data from SimilarWeb API

## `scrapeSimilarSites` (type: `boolean`):

Whether to also scrape similar sites for each domain

## Actor input object example

```json
{
  "domains": [
    "stripe.com"
  ],
  "scrapeSimilarSites": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `technologies` (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 = {
    "domains": [
        "stripe.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("ecomdate/similarweb-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 = { "domains": ["stripe.com"] }

# Run the Actor and wait for it to finish
run = client.actor("ecomdate/similarweb-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 '{
  "domains": [
    "stripe.com"
  ]
}' |
apify call ecomdate/similarweb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ecomdate/similarweb-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/awIMs3tDtZgAig6fW/builds/A5ttR16pJGd5vPgM4/openapi.json
