# Similarweb Scraper | Website Traffic, Rankings and Competitors (`silentflow/similarweb-scraper`) Actor

Scrape Similarweb data for any website: monthly traffic, global and country rank, bounce rate, traffic sources, top keywords, audience demographics, similar sites, technologies, and company details. Search by domain, keyword, or Top Websites ranking. No account needed, fast CSV or JSON export.

- **URL**: https://apify.com/silentflow/similarweb-scraper.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Business, Marketing, SEO tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.47 / 1,000 websites

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Similarweb Scraper

**Turn Similarweb into a table: the traffic, rankings, audience, traffic sources, similar sites, technologies and company of any website, found by domain, by keyword, or from the Top Websites ranking of any country and category.** 10 websites in 2 seconds, the top 50 of a country in 8, no Similarweb account needed.

### How it works

![How it works](https://api.apify.com/v2/key-value-stores/YXm81xySHg6uRkewS/records/similarweb-scraper-how-it-works-v1.png)

1. **You type domains, keywords, or pick a country and a category.** A domain (`apify.com`), a page address or a Similarweb page all work. A keyword (`flight`) finds the 10 websites whose name matches it. A country or a category (`France`, `Finance`, or both) reads Similarweb's Top Websites ranking, with the sites rising, falling, entering and leaving the top 100 this month.
2. **Each website is read in full.** Monthly visits with 3 months of history, global, country and category rank with their history, bounce rate, pages per visit, visit duration, the leading traffic source, organic and paid search share, top countries, top keywords, the 10 most similar websites, referrals, social networks, ads, technologies, age and gender split, and the company behind the site. Switch on similar websites and those 10 sites become rows too.
3. **One row comes back per website.** 76 fields, flat, with `null` where Similarweb has nothing: numbers as numbers, dates in RFC 3339, a stable `id` and `url`, and how the row was found (`foundBy`, `keyword`, `rank`, `trend`, `competitorOf`). Ready for a spreadsheet, a database or an AI pipeline.

### ✨ Why teams choose this over other Similarweb scrapers

Checking 50 competitors on similarweb.com one page at a time? Paying for a scraper that drives a browser per site and gives back 20 fields? Wondering which sites are growing in your market this month, with no way to export the ranking?

- 🔢 **68 fields filled per row, not 21.** Measured on the default run of 10 domains: 68 of the 76 fields carry a value on every row, against about 21 top-level fields on the fast Similarweb scraper and 20 on the most used one. Rank history, estimated monthly visits, leading traffic source, organic and paid search share, top countries, keywords, similar sites with affinity, referrals, social networks, ads, technologies, age and gender split, company name, year founded, headquarters, employees and revenue range are on the row.
- 🔀 **Four ways in, one run.** Domains, keywords, the Top Websites ranking of 67 countries and 211 categories with its movers, and the 10 similar websites of every row read as rows. The three most used Similarweb scrapers take one list of domains only; none reads a ranking or finds a website you did not already know.
- ⚡ **10 websites in 2 seconds, 68 in 8.** No browser loads a page: the run reads the data Similarweb's own pages load and moves on. The most used scraper opens one Similarweb page in a browser per domain, several seconds each.
- 🏆 **The ranking as a dataset, with its movers.** Pick France and Finance, or Worldwide and E-commerce, and every ranked site comes back as a full row with its position in `rank`. The sites rising, falling, entering and leaving the top 100 are added and flagged in `trend`, so the market map shows who is moving, not only who is on top.
- 🏢 **The company behind every site.** Name, year founded, headquarters city and country, employee range and revenue range, next to the traffic. Score a lead list or a portfolio from the same run that measured its audience.
- 🧹 **Clean rows an integrator can trust.** `visits` is a number, not `"4.2M"`; `bounceRate` is a share between 0 and 1; `snapshotDate` and `scrapedAt` are RFC 3339 in UTC; `id` is the domain and `url` the permanent Similarweb page; a field Similarweb does not have is `null`, never an empty string. Field names follow the ones the market already uses: `globalRank`, `countryRank`, `bounceRate`, `pagesPerVisit`, `estimatedMonthlyVisits`, `topKeywords`, `topCountries`, `competitors`.
- 🔓 **No account, no API key.** Type a domain and run. A domain Similarweb does not track gives no row, and the run says how many were unknown.

### 🎯 What you can do with Similarweb data

| Team | What they build |
|---|---|
| SEO | A monthly benchmark of 50 competitors on visits, global rank, bounce rate, pages per visit, leading traffic source and organic versus paid search share, refreshed by a scheduled run |
| Market research | A map of a market from the Top Websites ranking of a country and category, with the sites rising and falling this month and the company behind each |
| Growth | The 10 sites most similar to each of your competitors, read as full rows, to find the players you did not know and where their audience comes from |
| Sales and lead generation | A lead list scored on monthly visits, top countries, employee range and revenue range, from a list of domains and nothing else |
| Investors | Traffic history and rank history of portfolio companies and targets, refreshed every month, with the audience's age, gender and geography |
| Media buying | Where a publisher's audience comes from, which social networks send it, how many ad partners it has, and which countries it reaches, before a campaign |
| Product and strategy | The technologies a competitor runs, its top keywords and the sites its visitors also visit, to read its go-to-market from the outside |
| Data and AI | One row per website with 76 fields for an LLM to compare, cluster and explain a market, without a browser or a subscription |

### 📥 Input parameters

Add domains and run. Each website is one row of the dataset. Search by keyword, or pick a country and a category to read a whole Top Websites ranking.

#### What to read

| Field | Type | Default | Description |
|---|---|---|---|
| `domains` | array | 10 well-known domains | Websites to read, one per line: a domain (`apify.com`), a page address (`https://www.notion.so/product`) or a Similarweb page (`similarweb.com/website/stripe.com/`). Each becomes one row. A domain Similarweb does not track gives no row. |
| `keywords` | array | none | Find websites by name, one term per line: `flight` gives the 10 domains whose name matches best (flightradar24.com, flightaware.com, flights.google.com). Each match becomes a full row. |

#### 🏆 Top websites ranking

| Field | Type | Default | Description |
|---|---|---|---|
| `country` | select | none | The country whose most visited websites to read, `worldwide` for the global ranking. 67 countries, as on Similarweb's Top Websites page. |
| `category` | select | none | The category of the ranking: one of 26 main categories (`finance`) or 185 sub-categories (`travel-and-tourism/air-travel`). A country or a category alone gives the top 50, both together the top 5, plus the movers of the top 100 in every case. |

#### 🔢 Limits

| Field | Type | Default | Description |
|---|---|---|---|
| `maxItems` | integer | 100 | How many rows to save for the whole run. Domains, keyword matches, ranked sites and similar sites count together, and a website found twice is saved once. |

#### 🔗 Similar websites

| Field | Type | Default | Description |
|---|---|---|---|
| `includeCompetitors` | boolean | false | On: the 10 websites most similar to each row are read as rows of their own, with `competitorOf` naming the site they came from. One level only, so 5 domains give up to 55 rows. Off: the similar sites stay listed in the `competitors` column of each row. |

#### ⚙️ Advanced

| Field | Type | Default | Description |
|---|---|---|---|
| `debugMode` | boolean | false | Adds detailed lines to the run log. |

### 📊 Output data

One row per website. A row read from a list of domains, shortened to the first entry of each list:

```json
{
  "id": "apify.com",
  "url": "https://www.similarweb.com/website/apify.com/",
  "domain": "apify.com",
  "websiteUrl": "https://apify.com/",
  "description": "Cloud platform for web scraping, browser automation, AI agents, and data for AI.",
  "category": "computers_electronics_and_technology/computers_electronics_and_technology",
  "categoryName": "Computers Electronics and Technology > Computers Electronics and Technology",
  "globalRank": 9646,
  "globalRankChange": -541,
  "countryCode": "US",
  "countryRank": 9313,
  "countryRankChange": -44,
  "categoryRank": 259,
  "categoryRankChange": 11,
  "rankHistory": [
    { "month": "2026-06-01", "globalRank": 8801, "countryRank": 8256, "categoryRank": 247 },
    { "month": "2026-07-01", "globalRank": 9105, "countryRank": 9269, "categoryRank": 270 },
    { "month": "2026-08-01", "globalRank": 9646, "countryRank": 9313, "categoryRank": 259 }
  ],
  "visits": 4201537,
  "visitsChange": -0.0643,
  "estimatedMonthlyVisits": { "2026-06-01": 4414475, "2026-07-01": 4490242, "2026-08-01": 4201537 },
  "bounceRate": 0.3700,
  "pagesPerVisit": 7.43,
  "timeOnSite": 299,
  "avgVisitDuration": "00:04:59",
  "topTrafficSource": "direct",
  "topTrafficSourceShare": 0.4357,
  "trafficSourcesByRank": ["direct", "organic", "referrals"],
  "organicSearchShare": 0.7581,
  "paidSearchShare": 0.2419,
  "topCountries": [
    { "countryCode": "US", "country": "united-states", "visitsShare": 0.2113, "visitsShareChange": -0.0635 }
  ],
  "countriesCount": 107,
  "ageDistribution": { "18-24": 0.1846, "25-34": 0.3425, "35-44": 0.1894, "45-54": 0.1377, "55-64": 0.0924, "65+": 0.0534 },
  "maleShare": 0.6583,
  "femaleShare": 0.3417,
  "interestedWebsites": ["claude.com", "firecrawl.dev", "app.apollo.io", "vercel.com", "supabase.com"],
  "interestedTopics": ["business", "google", "news", "search", "internet tools"],
  "interestedCategories": ["computers_electronics_and_technology/computers_electronics_and_technology"],
  "topKeywords": [
    { "name": "apify", "cpc": 1.0, "volume": null, "estimatedValue": null }
  ],
  "keywordsCount": 37772,
  "topReferrals": [
    { "domain": "composio.dev", "visitsShare": 0.0259 }
  ],
  "referralsCount": 129,
  "topIncomingCategories": [
    { "category": "Computers_Electronics_and_Technology/Programming_and_Developer_Software", "visitsShare": 0.5194 }
  ],
  "topOutgoingSites": [
    { "domain": "chatgpt.com", "visitsShare": 0.0660 }
  ],
  "outgoingSitesCount": 189,
  "topOutgoingCategories": [
    { "category": "Computers_Electronics_and_Technology/Search_Engines", "visitsShare": 0.2320 }
  ],
  "socialNetworks": [
    { "name": "Youtube", "visitsShare": 0.4844 }
  ],
  "socialNetworksCount": 13,
  "topAdsSites": [
    { "domain": "hubspot.com", "visitsShare": 0.0171 }
  ],
  "adsSitesCount": 900,
  "adsNetworksCount": 3,
  "competitors": [
    { "domain": "brightdata.com", "category": "computers_electronics_and_technology/programming_and_developer_software", "categoryRank": 61, "affinity": 1.0 }
  ],
  "technologies": [
    { "category": "advertising", "topTechnology": "Google Adsense", "count": 16 }
  ],
  "technologiesCount": 78,
  "technologyCategoriesCount": 19,
  "companyName": "Apify",
  "companyYearFounded": 2016,
  "companyHeadquartersCity": "Vancouver",
  "companyHeadquartersState": null,
  "companyHeadquartersCountryCode": "CA",
  "companyEmployeesMin": 51,
  "companyEmployeesMax": 200,
  "companyRevenueMin": 10000000,
  "companyRevenueMax": 15000000,
  "companyParentDomain": "apify.com",
  "icon": "https://site-images.similarcdn.com/image?url=apify.com&t=2&s=1&h=...",
  "previewDesktop": "https://site-images.similarcdn.com/image?url=apify.com&t=1&s=1&h=...",
  "previewMobile": "https://site-images.similarcdn.com/image?url=apify.com&t=4&s=1&h=...",
  "isDataFromGa": false,
  "snapshotDate": "2026-08-01T00:00:00Z",
  "foundBy": "domain",
  "keyword": null,
  "rankingCountry": null,
  "rankingCategory": null,
  "rank": null,
  "rankChange": null,
  "trend": null,
  "competitorOf": null,
  "scrapedAt": "2026-09-23T02:52:12Z"
}
```

A row read from the Top Websites ranking of France in e-commerce and shopping carries the same 76 fields plus its place in the ranking; a mover of the top 100 carries its `trend`:

```json
{
  "id": "amazon.fr",
  "url": "https://www.similarweb.com/website/amazon.fr/",
  "domain": "amazon.fr",
  "globalRank": 120,
  "countryCode": "FR",
  "countryRank": 5,
  "categoryRank": 1,
  "visits": 203862811,
  "estimatedMonthlyVisits": { "2026-06-01": 190463989, "2026-07-01": 195926174, "2026-08-01": 203862811 },
  "bounceRate": 0.2326,
  "pagesPerVisit": 8.63,
  "avgVisitDuration": "00:05:11",
  "topTrafficSource": "direct",
  "companyName": "Amazon.com, Inc.",
  "companyYearFounded": 1994,
  "companyHeadquartersCity": "Seattle",
  "foundBy": "ranking",
  "rankingCountry": "france",
  "rankingCategory": "e-commerce-and-shopping",
  "rank": 1,
  "rankChange": 0,
  "trend": null
}
```

```json
{
  "domain": "amazon.it",
  "globalRank": 107,
  "visits": 222140650,
  "foundBy": "ranking",
  "rankingCountry": "france",
  "rankingCategory": "e-commerce-and-shopping",
  "rank": 62,
  "rankChange": 38,
  "trend": "rising"
}
```

### 🗂️ Data fields

76 top-level fields per website. The lists hold 3 to 10 entries each: `topCountries` 5 entries of 4 fields, `topKeywords` 5 of 4, `competitors` 10 of 4, `rankHistory` 3 of 4, `technologies` 4 of 3, `topReferrals`, `topOutgoingSites` and `topAdsSites` up to 6 of 2, `socialNetworks` 5 of 2, `topIncomingCategories` and `topOutgoingCategories` 5 of 2.

| Group | Fields |
|---|---|
| Identity | `id` (the domain, stable), `url` (the permanent Similarweb page), `domain`, `websiteUrl`, `description`, `category`, `categoryName` |
| Ranking | `globalRank`, `globalRankChange`, `countryCode` (the main country of the audience), `countryRank`, `countryRankChange`, `categoryRank`, `categoryRankChange`, `rankHistory[]` (`month`, `globalRank`, `countryRank`, `categoryRank`, 3 months) |
| Traffic and engagement | `visits` (monthly), `visitsChange` (month over month, as a share), `estimatedMonthlyVisits` (3 months, keyed by month), `bounceRate`, `pagesPerVisit`, `timeOnSite` (seconds), `avgVisitDuration` (`HH:MM:SS`), `topTrafficSource`, `topTrafficSourceShare`, `trafficSourcesByRank[]`, `organicSearchShare`, `paidSearchShare` |
| Audience | `topCountries[]` (`countryCode`, `country`, `visitsShare`, `visitsShareChange`), `countriesCount`, `ageDistribution` (6 age bands, shares), `maleShare`, `femaleShare`, `interestedWebsites[]`, `interestedTopics[]`, `interestedCategories[]` |
| Sources | `topKeywords[]` (`name`, `cpc`, `volume`, `estimatedValue`), `keywordsCount`, `topReferrals[]` (`domain`, `visitsShare`), `referralsCount`, `topIncomingCategories[]`, `topOutgoingSites[]`, `outgoingSitesCount`, `topOutgoingCategories[]`, `socialNetworks[]` (`name`, `visitsShare`), `socialNetworksCount`, `topAdsSites[]`, `adsSitesCount`, `adsNetworksCount` |
| Similar sites and technology | `competitors[]` (`domain`, `category`, `categoryRank`, `affinity` from 0 to 1), `technologies[]` (`category`, `topTechnology`, `count`), `technologiesCount`, `technologyCategoriesCount` |
| Company | `companyName`, `companyYearFounded`, `companyHeadquartersCity`, `companyHeadquartersState`, `companyHeadquartersCountryCode`, `companyEmployeesMin`, `companyEmployeesMax`, `companyRevenueMin`, `companyRevenueMax` (USD), `companyParentDomain` |
| Media | `icon`, `previewDesktop`, `previewMobile` (image links served by Similarweb's image service) |
| Meta | `isDataFromGa` (the site shares its own analytics with Similarweb), `snapshotDate` (the month of data, RFC 3339), `foundBy` (`domain`, `keyword`, `ranking` or `competitor`), `keyword`, `rankingCountry`, `rankingCategory`, `rank`, `rankChange`, `trend` (`rising`, `falling`, `entered`, `left` or `null`), `competitorOf`, `scrapedAt` (RFC 3339) |

Shares (`bounceRate`, `visitsShare`, `maleShare`, `organicSearchShare`, the age bands) are numbers between 0 and 1. Similarweb publishes the share of the leading traffic source only; the other sources come in order in `trafficSourcesByRank`. Referring, outgoing and advertising sites that Similarweb keeps for its paying users are left out of the lists; the counts (`referralsCount`, `outgoingSitesCount`, `adsSitesCount`) stay complete.

### 🚀 Examples

#### Benchmark a list of competitors

```json
{
  "domains": ["notion.so", "evernote.com", "clickup.com", "asana.com", "monday.com"]
}
```

#### Read the top 50 websites of the United States

```json
{
  "country": "united-states",
  "maxItems": 100
}
```

#### Map the finance websites of France, movers included

```json
{
  "country": "france",
  "category": "finance",
  "maxItems": 100
}
```

#### Find the competitor set of two products

```json
{
  "domains": ["figma.com", "canva.com"],
  "includeCompetitors": true,
  "maxItems": 30
}
```

#### Discover the crypto and VPN sites by name

```json
{
  "keywords": ["crypto", "vpn"],
  "maxItems": 50
}
```

#### Read the worldwide top 50 of air travel with the sites most similar to each

```json
{
  "category": "travel-and-tourism/air-travel",
  "includeCompetitors": true,
  "maxItems": 300
}
```

### 🤖 Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

```
You have access to the Similarweb Scraper on Apify: silentflow/similarweb-scraper

Input schema:
- domains (array of strings): domains, page addresses or Similarweb pages, one website per entry
- keywords (array of strings): terms; each returns the 10 websites whose name matches
- country (string): a country url code such as united-states, france, worldwide; reads the Top Websites ranking
- category (string): a category url code such as finance or e-commerce-and-shopping/marketplace; alone gives the worldwide ranking of the category, with a country the country's top 5
- maxItems (integer, default 100): rows to save for the whole run
- includeCompetitors (boolean, default false): also read the 10 most similar websites of each row as rows
- debugMode (boolean, default false)

Output per website (76 fields): id, url, domain, websiteUrl, description, category, categoryName, globalRank, globalRankChange, countryCode, countryRank, countryRankChange, categoryRank, categoryRankChange, rankHistory[], visits, visitsChange, estimatedMonthlyVisits{}, bounceRate, pagesPerVisit, timeOnSite, avgVisitDuration, topTrafficSource, topTrafficSourceShare, trafficSourcesByRank[], organicSearchShare, paidSearchShare, topCountries[], countriesCount, ageDistribution{}, maleShare, femaleShare, interestedWebsites[], interestedTopics[], interestedCategories[], topKeywords[], keywordsCount, topReferrals[], referralsCount, topIncomingCategories[], topOutgoingSites[], outgoingSitesCount, topOutgoingCategories[], socialNetworks[], socialNetworksCount, topAdsSites[], adsSitesCount, adsNetworksCount, competitors[], technologies[], technologiesCount, technologyCategoriesCount, companyName, companyYearFounded, companyHeadquartersCity, companyHeadquartersState, companyHeadquartersCountryCode, companyEmployeesMin, companyEmployeesMax, companyRevenueMin, companyRevenueMax, companyParentDomain, icon, previewDesktop, previewMobile, isDataFromGa, snapshotDate, foundBy, keyword, rankingCountry, rankingCategory, rank, rankChange, trend, competitorOf, scrapedAt

One website = one row. Numbers are numbers, shares are between 0 and 1, dates are RFC 3339 UTC, unknown values are null. No account or API key needed. Use apify-client for Python or JavaScript.
```

### 💻 Integrations

#### Build a monthly competitor benchmark in Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("silentflow/similarweb-scraper").call(run_input={
    "domains": ["notion.so", "evernote.com", "clickup.com", "asana.com", "monday.com"],
})
rows = client.dataset(run["defaultDatasetId"]).list_items().items
rows.sort(key=lambda r: r["visits"] or 0, reverse=True)
for r in rows:
    print(f'{r["domain"]:<16} {r["visits"]:>12,} visits  rank {r["globalRank"]:>7}  bounce {r["bounceRate"]:.0%}  top source {r["topTrafficSource"]}')
```

#### Watch who is rising in a market from Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('silentflow/similarweb-scraper').call({
    country: 'france',
    category: 'finance',
    maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const movers = items.filter((r) => r.trend === 'rising' || r.trend === 'entered');
for (const r of movers) {
    console.log(`${r.domain}: rank ${r.rank} (${r.rankChange > 0 ? '+' : ''}${r.rankChange}), ${r.visits.toLocaleString()} visits, ${r.companyName ?? 'company unknown'}`);
}
```

#### Score a lead list and export it as CSV with the Apify CLI

```bash
apify call silentflow/similarweb-scraper --input '{"domains": ["stripe.com", "shopify.com", "hubspot.com", "zapier.com"]}'
## Then download the company view of the last run's dataset as CSV
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&view=company&token=YOUR_APIFY_TOKEN" -o leads.csv
```

### 📈 Performance

| Run | Rows | Time |
|---|---|---|
| 10 domains (the default input) | 10 | 2 seconds |
| A keyword and the France e-commerce ranking with its movers | 35 | 6 seconds |
| 2 domains with their similar websites | 22 | 3 seconds |
| The worldwide top 50 with its movers | 68 | 8 seconds |

Measured on 23 September 2026. Rows are read four at a time, so a run of a few hundred domains finishes in well under a minute. There is no fixed limit on the number of domains per run; `maxItems` is the only cap.

### 💾 Data export

Every run's dataset is available on the run page and through the API in JSON, JSONL, CSV, Excel, XML, HTML table and RSS. Two views are prepared: `overview` (domain, global rank, visits, bounce rate, category, main country, Similarweb page) and `company` (domain, company, year founded, headquarters, employees, revenue, website).

```
https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN
https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&view=company&token=YOUR_TOKEN
```

### 💡 Tips for best results

1. **Use the main domain.** `notion.so` and `notion.com` are two profiles with two audiences; Similarweb keys everything on the domain you give, so check `companyParentDomain` when a brand moved.
2. **A country or a category alone gives 50 rows, both together 5.** For a full market map, run the worldwide ranking of the category, then the country alone, and join on `domain`; use the movers (`trend`) of the country and category pair for the month's changes.
3. **Read similar websites when you are mapping, not when you are enriching.** `includeCompetitors` turns 5 domains into up to 55 rows; leave it off for a lead list of 500 domains, where the `competitors` column already names the 10 similar sites of each.
4. **Schedule a monthly run.** Similarweb refreshes its data once a month (`snapshotDate`); a run on the 5th of each month gives you a clean time series from `estimatedMonthlyVisits` and `rankHistory`.
5. **Filter on `foundBy` and `trend`.** A mixed run (domains plus a ranking) keeps the origin of every row; `foundBy`, `keyword`, `rankingCountry`, `rank` and `trend` let you split the dataset back into its parts in a spreadsheet.

### ❓ FAQ

**What does this scraper extract exactly?**
The public Similarweb profile of a website: monthly visits with 3 months of history, global, country and category rank with their history, bounce rate, pages per visit, visit duration, the leading traffic source and the order of the others, organic and paid search share, top countries, top keywords, the 10 most similar websites, referrals, outgoing sites, social networks, advertising partners, technologies, age and gender split, the sites its visitors also visit, and the company behind the site.

**How can I find websites?**
Four ways: a list of domains, a keyword that matches website names, the Top Websites ranking of a country and category with the movers of its top 100, and the 10 similar websites of every row.

**Do I need a Similarweb account?**
No. No account, no API key, no login of any kind.

**How fresh is the data?**
Read live from Similarweb at run time. Similarweb publishes monthly data; `snapshotDate` names the month of every row and `estimatedMonthlyVisits` and `rankHistory` carry the last 3 months.

**What happens when a domain has no Similarweb profile?**
No row is written for it and the run log says so. Very small sites may have a profile with `visits` and a global rank but no audience data; those fields are `null`.

**How many websites can I read in one run?**
As many as you list. `maxItems` is the only cap and it counts domains, keyword matches, ranked sites and similar websites together.

**Can I combine domains, keywords and a ranking in one run?**
Yes. Every row keeps its origin in `foundBy`, `keyword`, `rankingCountry`, `rankingCategory`, `rank` and `trend`, and a website found twice is saved once.

**Why does a ranking give 50 rows for a country but 5 for a country and a category?**
That is what Similarweb publishes: the top 50 of a country, the top 50 of a category worldwide, and the top 5 of a category in a country. The movers of the top 100 (rising, falling, entering, leaving) are added in every case, which brings a country and category pair to about 25 rows.

**Why are some traffic source shares missing?**
Similarweb shows the share of the leading source only; the other sources are published in order without a value. You get `topTrafficSource`, `topTrafficSourceShare` and `trafficSourcesByRank`, plus `organicSearchShare` and `paidSearchShare` for search.

**Are the image links permanent?**
`url` is the permanent Similarweb page of the website and `websiteUrl` its home page. `icon`, `previewDesktop` and `previewMobile` are served by Similarweb's image service and can be regenerated from the domain at any time.

**Is the data estimated?**
Yes, like every Similarweb figure, unless `isDataFromGa` is true, in which case the site shares its own analytics with Similarweb.

**Is it legal to collect this data?**
The scraper reads publicly available pages and does not bypass any login or paywall. Check the Legal section and your own obligations before using the data.

### ⚖️ Legal

This Actor extracts publicly available data from similarweb.com. It does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with Similarweb's terms of service and applicable data protection laws (GDPR and CCPA where relevant). The output describes websites and companies, not individuals; audience demographics are aggregate shares. The data returned is Similarweb's estimate; verify accuracy for regulated use cases.

### 🔗 Related scrapers

- [BuiltWith Scraper](https://apify.com/silentflow/builtwith-scraper): the full technology stack of any website and BuiltWith's own top sites lists.
- [Website Tech Stack Scraper](https://apify.com/silentflow/website-tech-stack-scraper): the technologies a list of domains runs, detected on the sites themselves.
- [Company Data Scraper](https://apify.com/silentflow/company-data-scraper): emails, phones, social profiles and tech stack for a list of company domains.

### 📬 Support

Need something this scraper doesn't do yet? We ship features fast.

- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

Check out our other scrapers: [silentflow on Apify](https://apify.com/silentflow)

# Actor input Schema

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

Websites to read, one per line: a domain (<code>apify.com</code>), a page address (<code>https://www.notion.so/product</code>) or a Similarweb page (<code>similarweb.com/website/stripe.com/</code>). Each becomes one row with monthly visits, global, country and category rank, bounce rate, pages per visit, visit duration, traffic sources, top countries, top keywords, similar sites, technologies, demographics and the company behind the site. A domain Similarweb does not track gives no row.

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

Find websites by name, one term per line: <code>flight</code> gives the 10 domains whose name matches best (flightradar24.com, flightaware.com, flights.google.com...), <code>crypto</code> the crypto sites. Each match becomes a full row, the same as a domain you typed.

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

The country whose most visited websites to read, <code>Worldwide</code> for the global ranking. Every ranked site becomes a full row with its position in <code>rank</code>.

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

The category of the ranking: a main category (<code>Finance</code>) or a sub-category (<code>Travel and Tourism › Air Travel</code>). Combined with a country it gives that country's top 5 of the category; alone, the worldwide top 50.

## `maxItems` (type: `integer`):

How many rows to save for the whole run. A domain gives 1 row, a keyword up to 10, a ranking up to 68, and similar websites add up to 10 per row, so <code>100</code> covers a ranking or a list of a hundred domains in full.

## `includeCompetitors` (type: `boolean`):

On: the 10 most similar websites of each row are read as full rows, with <code>competitorOf</code> naming the site they came from. One level only, so 5 domains give up to 55 rows. Off: the similar sites stay listed in the <code>competitors</code> column of each row, with their category, category rank and affinity.

## `debugMode` (type: `boolean`):

Adds detailed lines to the run log. Leave it off for normal runs.

## Actor input object example

```json
{
  "domains": [
    "apify.com",
    "notion.so",
    "stripe.com",
    "figma.com",
    "canva.com",
    "openai.com",
    "github.com",
    "shopify.com",
    "hubspot.com",
    "zapier.com"
  ],
  "maxItems": 100,
  "includeCompetitors": false,
  "debugMode": false
}
```

# Actor output Schema

## `websites` (type: `string`):

Every website with id, url, domain, description, category, globalRank, countryRank, categoryRank, rankHistory, visits, estimatedMonthlyVisits, bounceRate, pagesPerVisit, timeOnSite, traffic sources, topCountries, topKeywords, competitors, referrals, social networks, technologies, demographics, company and how it was found.

## `companies` (type: `string`):

The company columns of each row: company name, year founded, headquarters, employees and revenue range.

# 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": [
        "apify.com",
        "notion.so",
        "stripe.com",
        "figma.com",
        "canva.com",
        "openai.com",
        "github.com",
        "shopify.com",
        "hubspot.com",
        "zapier.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/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": [
        "apify.com",
        "notion.so",
        "stripe.com",
        "figma.com",
        "canva.com",
        "openai.com",
        "github.com",
        "shopify.com",
        "hubspot.com",
        "zapier.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("silentflow/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": [
    "apify.com",
    "notion.so",
    "stripe.com",
    "figma.com",
    "canva.com",
    "openai.com",
    "github.com",
    "shopify.com",
    "hubspot.com",
    "zapier.com"
  ]
}' |
apify call silentflow/similarweb-scraper --silent --output-dataset

```

## MCP server setup

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