# Websites by Traffic Volume 2026 | $5/1K | Filter 40M by Visits (`apivault_labs/website-traffic-database`) Actor

The reverse of SimilarWeb: instead of one domain's stats, get every website in a traffic range. Filter 40M+ sites by monthly visits, category, country, rank, traffic channel, engagement, growth, or the keywords they rank for. A cheaper SimilarWeb/Semrush alternative for bulk site discovery. $5/1K.

- **URL**: https://apify.com/apivault\_labs/website-traffic-database.md
- **Developed by:** [Apivault Labs](https://apify.com/apivault_labs) (community)
- **Categories:** Lead generation, Marketing, Business
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 website records

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

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

## 🌐 Websites by Traffic Volume 2026 | $5/1K | Filter 40M by Visits

![Websites](https://img.shields.io/badge/Websites-40M%2B-2ea44f)
![Price](https://img.shields.io/badge/Price-%245%20per%201K%20results-blue)
![API key](https://img.shields.io/badge/API%20key-not%20required-success)
![Billing](https://img.shields.io/badge/Billing-pay%20per%20result-orange)
![Output](https://img.shields.io/badge/Output-up%20to%201M%20rows%2Frun-informational)
![Format](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-lightgrey)

**Filter and discover 40 million+ websites** by monthly traffic, category, country, rank, traffic channel, engagement, growth, or the keywords they rank for. For every matching site you get monthly visits, bounce rate, pages per visit, time on site, a full traffic-source breakdown, top keywords, top countries, and a growth trend — ready to export as JSON, CSV, or Excel.

This is a **discovery / filter tool over a 40M-site dataset** — not a per-URL live checker. You can also look up specific domains, but only domains already tracked in the database return data.

### 🆚 How it's different from SimilarWeb / Semrush

Traditional traffic tools go **domain → numbers**: you type in one website and read its stats. This actor works in **reverse — numbers → domains**: you set the criteria (a traffic range, a category, a keyword they rank for, a growth threshold…) and get back **every website that matches**, in bulk.

| | SimilarWeb / Semrush / Ahrefs | This actor |
|---|---|---|
| Direction | One domain → its metrics | Criteria → list of domains |
| Best for | Analyzing a site you already know | **Discovering sites you don't** |
| Bulk output | Limited / expensive | Up to 1,000,000 rows per run |
| Reverse keyword lookup | Rare / pricey | Built in |
| Price | $100–500+/mo subscription | $5 per 1,000 results, no subscription |

Think of it as a cheap, bulk **SimilarWeb/Semrush alternative for discovery** — use it *alongside* those tools: find the sites here, then deep-dive individual ones there.

> ⚠️ **About the data:** traffic figures, keywords, and channel shares are **third-party estimates** — not the site owners' own analytics — so treat them as directional, exactly like any traffic-intelligence tool. Every record includes a `dataDate` field so you can see how fresh each data point is.

### ⚙️ What this actor does

You use it in one of **three modes** — pick whichever fits your goal:

#### 1️⃣ Filter the database (main mode)

Pick **one** way to choose sites, then add any optional filters:

- 📊 **① By traffic volume** — a min/max monthly-visits range (e.g. "sites doing 10K–50K visits/month").
- 🏆 **② By top global rank** — enter `100` (or `1000`, etc.) to return exactly the sites ranked 1–N worldwide, automatically ordered from rank 1. **Just fill this one field and run** — you don't need to empty the min/max visits fields; when a rank is set, the traffic range and all optional filters are ignored automatically.
- 🏷️ **Category** — health, finance, games, e-commerce, and more (known for a subset of sites).
- 🌍 **Country** — filter by the site's #1 visitor country (US, DE, GB…).
- 🏆 **Global rank** — a rank range, e.g. only the top 10,000 sites worldwide.
- 📡 **Traffic channel** — pick a channel (search, direct, social, referral, email, paid ads, AI/LLM) and a minimum share, e.g. "sites where social is 40%+ of traffic".
- 🧲 **Search-dependent sites** — minimum organic-search share to find SEO-reliant sites.
- 🤖 **AI/LLM traffic** — only sites already getting visits from ChatGPT, Perplexity, etc.
- 💡 **Engagement** — max bounce rate, min pages per visit, min time on site (find sticky, high-quality sites).
- 📈 **Growth** — only growing sites, or a minimum month-over-month growth % to surface trending sites.
- 🔑 **Keyword** — reverse lookup: every site that ranks for a keyword you specify.

#### 2️⃣ Look up specific domains

Already have a list? Pass domains and get their full traffic profile back (only domains tracked in the dataset return data).

#### 3️⃣ Find competitors

Give **one** domain and get its rivals — other sites in the same category with comparable monthly traffic. Great for competitive research and prospecting look-alikes.

### 📦 What you get for every website

| Field | What it is |
|-------|------------|
| `domain` | The website's domain |
| `latestMonthVisits` | Visits in the most recent tracked month |
| `totalVisits` | Sum of the tracked months |
| `monthlyVisits` | Month-by-month visits history |
| `monthlyGrowthPercent` | Growth % from the earliest to latest tracked month |
| `globalRank` | Worldwide traffic rank (1 = most visited) |
| `category` / `categoryRank` | Category and rank within it |
| `country` / `countryRank` | #1 visitor country and rank within it |
| `bounceRate` | % of single-page visits |
| `pagesPerVisit` | Average pages viewed per visit |
| `avgTimeOnSite` | Average visit duration (seconds) |
| `trafficSources` | Share of visits by channel: search, direct, social, referral, mail, ads, AI |
| `aiVisits` | Visits attributed to AI/LLM referrers |
| `topKeywords` | Top search keywords the site ranks for, with volume |
| `topCountries` | Visitor breakdown by country, with share |
| `dataDate` | When this record's data was captured |

### 🚀 Examples

**Discover mid-traffic sites in a niche (lead lists):**

```json
{ "minVisits": 10000, "maxVisits": 50000, "category": "health", "country": "US", "maxResults": 2000 }
```

**Get the world's top 1000 sites (rank 1–1000) — just this one field:**

```json
{ "topGlobalRank": 1000 }
```

**Find every site ranking for a keyword (reverse keyword lookup):**

```json
{ "keyword": "crypto wallet", "maxResults": 500 }
```

**Trending / fast-growing sites:**

```json
{ "minGrowthPercent": 50, "minVisits": 100000, "sortBy": "visits" }
```

**High-engagement, social-driven sites:**

```json
{ "trafficSource": "social", "minSourceShare": 40, "maxBounce": 35, "minPagesPerVisit": 4 }
```

**Competitor list for one domain:**

```json
{ "similarTo": "stripe.com", "maxResults": 50 }
```

**Look up specific domains:**

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

### ✨ Features

- 🔍 **40M+ websites** with traffic data
- 📊 Filter by **monthly visits range** (e.g. 10K–100K)
- 🏷️ Filter by **category** (health, games, business, …)
- 🌍 Filter by **country** (US, DE, GB, …)
- 🏆 Filter by **global rank range** (e.g. top 10K sites)
- 📡 Filter by **any traffic channel + minimum share** (social, direct, referral, paid ads, email, AI)
- 🧲 Filter by **search-traffic share** (SEO-dependent sites)
- 🤖 Filter for sites with **AI/LLM traffic**
- 📈 Filter for **growing sites**, or a **minimum growth %** (trending)
- 💡 **Engagement** filters: max bounce, min pages/visit, min time on site
- 🔑 **Reverse keyword lookup** — every site that ranks for a keyword
- 🥊 **Find competitors** of any domain
- 🔎 **Domain lookup** for tracked domains
- 📤 Export as **JSON, CSV, or Excel**
- 📤 **Bulk export** up to 1,000,000 rows per run (streaming for large pulls)
- ⚡ Fast even for large result sets

### 🎯 Use Cases

- **Lead Generation** — build lists of sites in your niche at a target traffic level
- **Competitor Analysis** — discover rivals by category and traffic volume
- **Market Research** — analyze traffic patterns across industries
- **Media Buying / Outreach** — shortlist sites for partnerships, ads, or guest posts
- **SEO Research** — find sites in your niche sorted by organic search traffic
- **Keyword Research** — find every website that ranks for a given keyword (reverse lookup)
- **Trend Spotting** — surface fast-growing sites before they peak

### 🧭 Parameters

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `domains` | array | — | Look up specific domains. When set, all filters below are ignored. |
| `similarTo` | string | — | Find competitors of one domain (same category, comparable traffic). Overrides filters. |
| `topGlobalRank` | int | — | Fill to switch to rank mode. `100` returns global ranks 1–100, ordered by rank. When set, `minVisits`/`maxVisits` are ignored. |
| `minVisits` | int | 1000 | Minimum monthly visits (default selection mode). Ignored when `topGlobalRank` is set. |
| `maxVisits` | int | — | Maximum monthly visits. Ignored when `topGlobalRank` is set. |
| `category` | string | — | Category, partial match (e.g. "health"). Known for a subset of sites. |
| `country` | string | — | Top-country code (US, DE, GB, …) |
| `minSearchShare` | int | — | Min % of traffic from organic search |
| `trafficSource` | string | search | Channel to filter by: search, direct, social, referral, mail, ads, ai (with `minSourceShare`) |
| `minSourceShare` | int | — | Min % of traffic from the chosen `trafficSource` |
| `keyword` | string | — | Only sites that rank for this keyword (reverse lookup). Best combined with other filters. |
| `maxBounce` | int | — | Max bounce rate % (lower = more engaged) |
| `minPagesPerVisit` | int | — | Min pages viewed per visit |
| `minTimeOnSite` | int | — | Min average visit duration, seconds |
| `minGrowthPercent` | int | — | Min month-over-month growth % (trending sites) |
| `hasAiTraffic` | bool | false | Only sites receiving AI/LLM traffic |
| `onlyGrowing` | bool | false | Only sites with a positive traffic trend |
| `maxResults` | int | 10000 | Max results. Up to 50,000 = accurate global top-N; up to 1,000,000 = streaming bulk export |
| `sortBy` | string | visits | visits, global\_rank, bounce, pages, time\_on\_site, category\_rank, country\_rank, ai\_visits |
| `sortOrder` | string | desc | desc or asc |

### 💵 Pricing

- **$0.005 per result** ($5 per 1,000 results) — you only pay for results returned.
- No monthly subscription, no API key.

### ❓ FAQ

**Is this a live SimilarWeb scraper?**
No — it's a searchable database of pre-collected traffic estimates. That's what makes bulk reverse lookups (traffic range → list of sites) possible and cheap.

**Can I get the traffic of a specific domain?**
Yes, via the `domains` mode — but only for domains already tracked in the dataset.

**How accurate are the numbers?**
They're third-party estimates, directional like any traffic-intelligence tool. Use them for discovery and ranking, then verify individual sites elsewhere. Each record has a `dataDate`.

**Why did a filter return fewer results than expected?**
`category` and `country` are known for a subset of sites, so filtering by them narrows results. Combine fewer filters for broader lists.

**Can I export to CSV / Excel?**
Yes — use the dataset's export options (JSON, CSV, Excel, etc.).

### 📌 Notes

- Optimized for large result sets — results come back fast even for big queries.
- Results are deduplicated by domain and sorted globally across the whole dataset.
- `category` and `country` are known for a subset of sites; keyword and country breakdowns are available for most high-traffic sites.

# Actor input Schema

## `minVisits` (type: `integer`):

Return sites with at least this many visits in the most recent month (e.g. 1000 = 1K+ visits/month). Used only in traffic mode. If you use ‘Top sites by Global Rank’ in section ②, this field is ignored automatically — you don't need to clear it.

## `maxVisits` (type: `integer`):

Return sites with at most this many visits in the most recent month. Leave empty for no upper limit.

## `topGlobalRank` (type: `integer`):

Enter 1000 to get the world's top 1000 sites — global ranks 1 through 1000, ordered from rank 1 (rank 1 = the most visited site in the world). Just fill this one field: the monthly-visits fields in ① and every optional filter in ③ (category, country, etc.) are ignored automatically, so you don't have to clear anything. Leave this empty to select by traffic instead.

## `category` (type: `string`):

Keep only sites whose category contains this text (e.g. 'finance', 'health', 'games'). Category is known for a subset of sites, so this narrows results. Leave empty for all.

## `country` (type: `string`):

Keep only sites whose #1 visitor country matches this code (e.g. 'US', 'DE', 'GB'). Leave empty for all countries.

## `minSearchShare` (type: `integer`):

Keep only sites where organic search is at least this % of traffic (e.g. 50 = SEO-dependent sites). Leave empty to ignore.

## `hasAiTraffic` (type: `boolean`):

Keep only sites that get visits from AI assistants (ChatGPT, Perplexity, etc.).

## `onlyGrowing` (type: `boolean`):

Keep only sites whose most recent month is higher than their earliest tracked month (positive trend).

## `minGrowthPercent` (type: `integer`):

Keep only sites growing at least this % from their earliest to most recent tracked month (e.g. 20 = fast-growing / trending sites). Leave empty to ignore.

## `keyword` (type: `string`):

Keep only sites that have this keyword among their top search keywords (reverse keyword lookup, e.g. 'crypto wallet'). Best combined with other filters. Leave empty to ignore.

## `trafficSource` (type: `string`):

Which traffic channel to filter by (used together with 'Minimum channel share' below). E.g. pick 'social' + 40 to find sites where social is 40%+ of traffic.

## `minSourceShare` (type: `integer`):

Keep only sites where the chosen 'Traffic channel' is at least this % of total traffic (e.g. 40). Leave empty to ignore this filter.

## `maxBounce` (type: `integer`):

Keep only sites with a bounce rate at or below this % (lower = more engaged visitors, e.g. 40). Leave empty to ignore.

## `minPagesPerVisit` (type: `integer`):

Keep only sites where visitors view at least this many pages per visit (engagement, e.g. 3). Leave empty to ignore.

## `minTimeOnSite` (type: `integer`):

Keep only sites with an average visit duration of at least this many seconds (e.g. 120 = 2 min). Leave empty to ignore.

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

Maximum number of websites to return. Up to 50,000 are returned as an accurate global top-N; larger values (up to 1,000,000) switch to a streaming bulk export for full-list pulls.

## `sortBy` (type: `string`):

Which field to sort results by.

## `sortOrder` (type: `string`):

Highest first (descending) or lowest first (ascending).

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

Enter one or more domains (e.g. 'stripe.com', 'https://www.nike.com/') to get their traffic data directly. Only domains already tracked in the database return a row. When you fill this, the filter fields above are ignored.

## `similarTo` (type: `string`):

Enter ONE domain (e.g. 'stripe.com') to get its competitors: other sites in the same category with comparable monthly traffic. The domain must be in the database and have a known category. When you fill this, everything above is ignored.

## Actor input object example

```json
{
  "minVisits": 1000,
  "hasAiTraffic": false,
  "onlyGrowing": false,
  "trafficSource": "search",
  "maxResults": 10000,
  "sortBy": "visits",
  "sortOrder": "desc",
  "domains": []
}
```

# 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": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("apivault_labs/website-traffic-database").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": [] }

# Run the Actor and wait for it to finish
run = client.actor("apivault_labs/website-traffic-database").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 '{
  "domains": []
}' |
apify call apivault_labs/website-traffic-database --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2ahDVr2hK6unhydIJ/builds/WcOyiwRFsNnWUrcRF/openapi.json
