# Similarweb Scraper - Website Traffic, Rank & AI Traffic (`santhej/similarweb-traffic-scraper`) Actor

Any website's traffic and engagement: monthly visits, bounce rate, pages per visit, rank, traffic sources, top countries and keywords - plus AI traffic share and the real prompts sending visitors from ChatGPT, Grok and Perplexity. Bulk domains, no API key.

- **URL**: https://apify.com/santhej/similarweb-traffic-scraper.md
- **Developed by:** [Santhej Kallada](https://apify.com/santhej) (community)
- **Categories:** SEO tools, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

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

## Similarweb Scraper — Website Traffic, Rank & AI Traffic

**Look up any website's monthly visits, engagement, rank and traffic sources — plus the share of its traffic now arriving from AI assistants and the actual prompts people asked before they landed. Bulk domains, clean JSON/CSV, no API key.**

Traffic estimates tell you how big a site is. This Actor also tells you something almost nobody is measuring yet: **how much of that traffic comes from ChatGPT, Grok, Perplexity and friends, and what people were asking when they arrived.**

### What you get per domain

| Field | What it tells you |
|---|---|
| `visits` | Estimated visits in the latest full month |
| `monthly_visits_history` | The last few months, so you can see direction, not just size |
| `global_rank` / `country_rank` / `category_rank` | Where the site sits globally, in its country, and in its category |
| `category` | The category it is ranked in |
| `bounce_rate` | Share of visits that leave without a second page |
| `pages_per_visit` | Depth of the average visit |
| `avg_visit_duration_seconds` | Time on site, in seconds |
| `traffic_sources` | Direct, referrals, organic and paid search, organic and paid social, mail, display ads, affiliate — **and `generative_ai`** |
| `top_countries` | Country split with each country's share |
| `top_keywords` | Keywords driving traffic, with volume, CPC and estimated value |
| **`ai_traffic_share`** | **Fraction of all traffic arriving from AI assistants** |
| **`ai_traffic_visits`** | **How many visits that actually is** |
| **`ai_sources`** | **Which assistants send it, ranked (chatgpt.com, grok.com, perplexity.ai …)** |
| **`ai_top_prompts`** | **Real prompts people asked before landing on the site** |
| `screenshot_url` | Current homepage screenshot |
| `snapshot_date` | The month this data describes |
| `data_status` | `ok` or `no_data` — see below |

A run summary is written to the key-value store with counts, retries and the billing breakdown.

### Why the AI fields matter

Assistants have quietly become a referral channel. For a payments company we measured **5.5% of all traffic** arriving from AI, and the top prompts read like: *"How can I integrate an online payment processing system into my website to accept credit cards?"*

That is demand, phrased by the buyer, attached to a site that is already capturing it. Use it to find which competitors AI recommends, which questions send real traffic, and whether your own AI share is growing or flat.

### Use cases

- **Competitor sizing** — visits, engagement and direction for a whole competitor set in one run.
- **AI visibility** — who is winning AI-referred traffic in your category, and for which questions.
- **Lead qualification** — filter a prospect list by real traffic before anyone spends time on it.
- **Content strategy** — the top prompts are keyword research written in the customer's own words.
- **M\&A and investment screening** — traffic trend and engagement quality on any target.
- **Media planning** — country split and traffic mix before you buy placements.

### Pricing

Pay per event. No monthly fee, no setup fee, no minimum.

| Event | Price |
|---|---|
| Actor start | $0.001 per run |
| Domain | **$0.002 per domain — $2.00 per 1,000** |

**You are only charged for domains that return real traffic data.** Unknown domains, sites too small to have measurable traffic (`data_status: "no_data"`) and outright failures are never billed. 100 domains costs **$0.201**.

### Input example

```json
{
  "domains": ["stripe.com", "notion.so", "figma.com"],
  "maxConcurrency": 8
}
```

### Output example

```json
{
  "record_type": "domain_traffic",
  "domain": "stripe.com",
  "site_name": "stripe.com",
  "category": "finance",
  "global_rank": 319,
  "country_rank": 231,
  "country_code": "US",
  "visits": 129949921,
  "bounce_rate": 0.5562,
  "pages_per_visit": 3.23,
  "avg_visit_duration_seconds": 166.53,
  "monthly_visits_history": [
    { "month": "2026-05-01", "visits": 122394040 },
    { "month": "2026-06-01", "visits": 120792625 },
    { "month": "2026-07-01", "visits": 129949921 }
  ],
  "traffic_sources": {
    "direct": 0.395, "referrals": 0.387, "search_organic": 0.062,
    "generative_ai": 0.0555
  },
  "ai_traffic_share": 0.0555,
  "ai_traffic_visits": 2586277,
  "ai_sources": [{ "name": "grok.com", "rank": 1 }, { "name": "chatgpt.com", "rank": 2 }],
  "ai_top_prompts": [
    "How can I integrate an online payment processing system into my website to accept credit cards?"
  ],
  "snapshot_date": "2026-07-01T00:00:00+00:00",
  "data_status": "ok"
}
```

### FAQ

**Do I need an API key?** No. Add domains and run.

**Why must I leave the residential proxy on?** The upstream refuses datacenter and direct traffic after a handful of requests. The Actor rotates residential addresses automatically to keep a bulk run at full success — changing the proxy setting will cause most lookups to fail, and the run logs a warning if you do.

**What does `no_data` mean?** The domain is unknown or too small to have measurable traffic. You still get the row so you can see it was checked, and you are not charged for it.

**How fresh is it?** Monthly. `snapshot_date` tells you exactly which month each row describes.

**Are the AI prompts real?** Yes — they are the prompts associated with AI-referred visits to that site. Some domains have none, in which case `ai_top_prompts` is an empty array.

**How many domains per run?** Up to 500. A 150-domain run takes about 90 seconds.

**Can I export it?** JSON, CSV, Excel, or straight into n8n, Make or Zapier via the Apify API.

### Related actors

- [Website Traffic Intel](https://apify.com/santhej/website-traffic-intel) — organic-search traffic estimates with the full ranking-keyword list and competitor set.
- [Google AI Overview Tracker](https://apify.com/santhej/google-ai-overview-tracker) — does Google's AI Overview cite you for your keywords?
- [ChatGPT Brand Tracker](https://apify.com/santhej/chatgpt-brand-tracker) — does ChatGPT recommend you or a competitor?

***

*Tags: similarweb, similarweb scraper, website traffic checker, traffic estimator, web analytics, competitor analysis, domain rank, bounce rate, engagement metrics, traffic sources, ai traffic, chatgpt traffic, generative ai referral, ai visibility, market research, lead qualification, seo tools*

# Actor input Schema

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

Websites to look up. Enter bare domains (stripe.com) or full URLs — the scheme, path and www are stripped for you. Duplicates are removed. Up to 500 per run.

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

How many domains to look up in parallel. 8 is the tested sweet spot — higher is not faster because the upstream throttles per address.

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

Residential proxy is REQUIRED. This source refuses datacenter and direct traffic after a handful of requests, so changing this will cause most lookups to fail.

## Actor input object example

```json
{
  "domains": [
    "stripe.com"
  ],
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

One row per domain with traffic, engagement, rank, sources and AI traffic.

## `summary` (type: `string`):

Domains looked up, no-data count, errors, retries and billing breakdown for the run.

# 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"
    ],
    "maxConcurrency": 8,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("santhej/similarweb-traffic-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"],
    "maxConcurrency": 8,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("santhej/similarweb-traffic-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"
  ],
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call santhej/similarweb-traffic-scraper --silent --output-dataset

```

## MCP server setup

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