# Website Traffic Estimator: Similarweb Visits and Rank

> Website traffic estimator: check a list of domains and get public Similarweb estimates. Monthly visits, rank, traffic sources, top countries and keywords.

URL: https://cliqtomedia.com/actors/website-traffic-estimator/

Category: Search, SEO & ads · Status: live on Apify Store · Apify page: https://apify.com/cliqtomedia/website-traffic-estimator?fpr=cliqto

Add a list of websites and get public Similarweb estimates for each domain. Each row has monthly visits, global and country rank, engagement and traffic sources. You also get top countries and keywords.

## How to use it: 3 steps

1. **Make a free Apify account.** Apify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `apify.com` in Websites. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does

Website Traffic Estimator checks a list of websites and returns public Similarweb traffic estimates for each domain: monthly visits, global and country rank, engagement, traffic sources, top countries and keywords.

- Traffic: monthly visits, change from the previous month and up to 3 months of visit history.
- Ranks: global rank, rank in the main country and rank in the site category.
- Engagement: bounce rate, pages per visit and average visit time.
- Traffic sources: shares of direct, search, paid, referral, social, email, display ads and AI chatbot traffic.
- Audience: top countries, top keywords with search volume, similar sites and public company facts.

### Good for

- Compare the traffic of competitors or partners in one table.
- Score a lead list by monthly visits or global rank, and drop small sites with a filter.
- Watch a list of domains every week or month and see which sites grew or fell.

## Price

Pay per event. Apify bills you, not us.

| What you pay for | Price | When |
|---|---|---|
| Domain checked | $0.002 (from $0.0014 on paid Apify plans) | One domain check with public traffic, channels and keywords, including unavailable, filtered, unchanged and failed profiles. Run start is charged separately. |
| AI referral check | $0.0078 (from $0.00546 on paid Apify plans) | Additional public AI referral report check when enabled, including unavailable reports. |
| Start fee | $0.002 | Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more. |

- One domain: about $0.004.
- 1,000 domains: about $2.00.
- Every day 100 domains, for 30 days: about $6.06 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Prices checked on 8 November 2026. Current price: https://apify.com/cliqtomedia/website-traffic-estimator?fpr=cliqto

## Questions

### Do I need a Similarweb account?

No. The tool reads public website profiles. No login, cookies or API key.

### How exact are the visits?

They are estimates for one month. Use them to compare sites, not as exact counts.

### Why does a domain return not_found?

Small sites often have no estimate. Every checked domain is charged, also not_found.

### How accurate are the visits?

They are Similarweb estimates for one month. Use them to compare sites with each other, not as exact counts. For big sites they are usually close; for small sites they are rough or missing.

### Why do the shares not add up to 100%?

Shares are fractions from 0 to 1, and the source can hide some channels. Hidden shares are `null`. If `channelDataStatus` is `unavailable`, all shares are `null` for that row.

### Do I pay for domains with no data?

Yes. Every checked domain is charged the same, also `not_found` and filtered rows. Skipped broken entries and domains left after a charge limit stop are free.

### How fresh is the data?

Each row has `snapshotDate`, the month of the estimate. The source updates it about once a month.

## Data fields

- `domain` (string): Normalized input domain.
- `status` (string): complete, partial, not_found or error.
- `source` (string): Data provider. SimilarSites fallback has no known measurement month.
- `sourceUrl` (string): Public page for this profile.
- `fetchedAt` (string): UTC time this profile was collected.
- `changeStatus` (string): Monitor result: new, unchanged, increased, decreased, changed or not_monitored.
- `reason` (string): Reason for partial, missing or failed data.
- `snapshotDate` (string): Measurement month published by Similarweb. Null for undated fallback.
- `sourceDomain` (string): Domain reported by the source. It may be a parent domain.
- `countryCode` (string): Main audience country, as a two-letter code.
- `category` (string): Source category path.
- `title` (string): Public company name, when available.
- `trancoDate` (string): Date of the Tranco rank.
- `visits` (number): Estimated visits in the snapshot month. Fallback visits have no known month.
- `globalRank` (number): Similarweb global rank. 1 is the highest rank.
- `countryRank` (number): Similarweb rank in the main audience country.
- `categoryRank` (number): Source category rank. Check source before comparing.
- `bounceRate` (number): Bounce rate as a fraction from 0 to 1.
- `pagesPerVisit` (number): Average pages per visit.
- `avgVisitSec` (number): Average visit duration in seconds.
- `changePercent` (number): Monthly visit change in percent.
- `visitsChangePercent` (number): Visit change since the previous monitor observation, in percent.
- `trancoRank` (number): Tranco popularity rank, separate from Similarweb rank.
- `organicSearchShare` (number): Organic share of search traffic only, from 0 to 1.
- `paidSearchShare` (number): Paid share of search traffic only, from 0 to 1.
- `directShare` (number): Available direct share of traffic, from 0 to 1. Hidden shares are null.
- `organicShare` (number): Available organic share of traffic, from 0 to 1. Hidden shares are null.
- `paidShare` (number): Available paid share of traffic, from 0 to 1. Hidden shares are null.
- `referralsShare` (number): Available referrals share of traffic, from 0 to 1. Hidden shares are null.
- `social_organicShare` (number): Available social organic share of traffic, from 0 to 1. Hidden shares are null.
- `social_paidShare` (number): Available social paid share of traffic, from 0 to 1. Hidden shares are null.
- `mailShare` (number): Available mail share of traffic, from 0 to 1. Hidden shares are null.
- `adsShare` (number): Available ads share of traffic, from 0 to 1. Hidden shares are null.
- `gen_aiShare` (number): Available gen ai share of traffic, from 0 to 1. Hidden shares are null.
- `affiliateShare` (number): Available affiliate share of traffic, from 0 to 1. Hidden shares are null.
- `isEstimate` (boolean): True: traffic metrics are estimates, not private analytics.
- `monthlyVisits` (array): Monthly estimates. Older visits are calculated from the latest count and published month changes. Each item states its method.
- `monthlyVisitsJson` (string): Monthly estimates. Older visits are calculated from the latest count and published month changes. Each item states its method. JSON text in flat mode.
- `trafficSources` (array): Channel names, available shares and channel ranks. Hidden shares stay null.
- `trafficSourcesJson` (string): Channel names, available shares and channel ranks. Hidden shares stay null. JSON text in flat mode.

## Input settings

- `domains` (array): Add domains or full URLs. Duplicate entries and www are removed. Other subdomains stay separate. Broken entries are skipped and counted in RUN_SUMMARY. The run checks as many domains as its timeout and charge limit allow.
- `domainsText` (string): Add domains or URLs separated by commas, spaces or new lines. These are added to Websites.
- `mode` (string): Choose lookup for one report. Choose monitor to compare this run with your saved state.
- `stateName` (string): Required in monitor mode. Use your own store name, 3–63 letters, digits or hyphens. Reuse it for the same list and options.
- `includeSources` (boolean): Include the available channel shares. Shares are fractions from 0 to 1. Hidden shares stay null.
- `includeCountries` (boolean): Include countries and their available traffic shares.
- `includeDetails` (boolean): Include public company data, audience, similar sites, keywords, referrals, social networks, advertising, interests and rank history. Locked names are left out.
- `onlyChanges` (boolean): In monitor mode, write only new or changed profiles. Every checked domain is charged, including unchanged domains.
- `fallbackToOpenData` (boolean): If Similarweb fails, try SimilarSites and Tranco. SimilarSites visits have no known month. Tranco is a separate popularity rank. Fallback rows are partial.
- `outputFormat` (string): Full keeps lists as JSON arrays. Flat writes lists as JSON text in columns ending in Json, for spreadsheets.
- `minMonthlyVisits` (integer): Write successful profiles only when visits meet this minimum. 0 means no filter. All checked domains are charged.
- `maxGlobalRank` (integer): Keep ranks at or above this position: 100 means ranks 1–100. 0 means no filter. All checked domains are charged.
- `countries` (array): Keep profiles whose main audience country is in this list. Use uppercase two-letter codes such as US or GB. Empty means no country filter.
- `categoryFilter` (string): Keep profiles whose category contains this text. Empty means no category filter. All checked domains are charged.
- `includeAiTraffic` (boolean): Optional AI chatbot referrals, history and prompts. Off by default. Enabling this adds one AI check charge per checked domain, including unavailable reports.
- `proxyMode` (string): Auto tries direct, datacenter and residential routes in that order and stops at the first one that works. Choose one route to use only that route.
- `maxConcurrency` (integer): Check 1–15 domains at once. Lower this if the source asks you to slow down.
- `websites` (array): Alternative website list for API integrations. Added to Websites.
- `deliveryConnector` (string): Your Slack, Notion or other MCP connector. After the run the Actor posts a short summary there. Connect services once in Apify Console → MCP connectors.
- `deliveryTarget` (string): Where to post the summary: a Notion page link (each run is added on top of that page) or a Slack channel ID. Leave empty to let the connector decide.

## Step by step on Apify

1. Open the Input tab. The Websites list already has `apify.com` (box 1; the picture shows only this field).
2. Add your own domains or URLs, one per line. You can keep the other settings as they are.
3. Click Start at the bottom of the page (below the picture's frame).
4. When the run finishes, open the Output tab and choose the Traffic comparison view (box 4).
5. Check `status`, `visits` and `globalRank` for each domain (box 5).

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Compare competitors | `domains` | One row per domain | `visits`, `globalRank`, `organicShare`, `paidShare` | Export CSV or Excel; `COMPARISON` record |
| Score or filter a lead list | `domains`, `minMonthlyVisits`, `maxGlobalRank`, `countries` | Rows that match the filters | `visits`, `globalRank`, `countryCode`, `category` | API or Make / Zapier into your CRM |
| Track traffic over time | `mode: monitor`, `stateName`, `onlyChanges` | New or changed profiles | `changeStatus`, `visitsChangePercent`, `monthlyVisits` | Apify schedule + Slack or Notion summary |
| Research SEO and channels | `domains`, `includeSources`, `includeDetails` | Full traffic profile | `topKeywords`, `organicShare`, `topReferrers`, `similarSites` | Spreadsheet with `outputFormat: flat` |

## Tips

- Start with one domain such as apify.com to see the columns.
- For more than about 50 domains, set the timeout to 600 seconds or split the list.
- Set a minimum of monthly visits to drop small sites.

## Limits



- All numbers are public Similarweb estimates. They are not exact and can differ from the site's own analytics.
- The source publishes one month at a time and up to 3 months of history. The Actor does not make older history.
- Small sites often have no estimate. They return `not_found`.
- Some shares and names are hidden by the source. They stay `null`.
- Channel shares come from a second public source. If it does not answer, the row keeps visits and rank, `channelDataStatus` is `unavailable`, and `RUN_SUMMARY.channelDataUnavailable` counts these rows. The domain check is charged the same.
- Fallback rows from SimilarSites have no known month. Tranco gives a popularity rank, not visits.
- The source can block or slow requests. The Actor then retries on other connection routes. 100% coverage is not promised.
- The default timeout is 300 seconds. That fits about 50 domains with a safe margin. With 100 domains, five of seven test runs finished in 151 to 226 seconds and two stopped at the timeout after 88 and 96 domains. For lists above about 50 domains, set the timeout to 600 seconds in the run options or split the list into batches.

## Sample result

```json
{
  "domain": "apify.com",
  "status": "complete",
  "source": "similarweb",
  "snapshotDate": "2026-09-01",
  "visits": 3990936,
  "changePercent": -5.01,
  "globalRank": 9800,
  "countryRank": 9730,
  "countryCode": "US",
  "categoryRank": 272,
  "bounceRate": 0.3595,
  "pagesPerVisit": 7.61,
  "avgVisitSec": 317,
  "directShare": 0.44,
  "organicShare": 0.34,
  "paidShare": 0.056,
  "referralsShare": 0.058,
  "social_organicShare": 0.048,
  "gen_aiShare": 0.034,
  "channelDataStatus": "available",
  "topCountries": [{ "countryCode": "US", "share": 0.2211 }],
  "topKeywords": [{ "keyword": "apify", "volume": 798490, "cpc": 1.56 }],
  "similarSites": [{ "domain": "brightdata.com" }],
  "company": { "name": "Apify", "yearFounded": 2016, "city": "Vancouver" },
  "changeStatus": "not_monitored",
  "reason": null
}
```

## Use it from code

Actor ID: `cliqtomedia/website-traffic-estimator`

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/website-traffic-estimator").call(run_input={
    "domains": [
        "apify.com"
    ],
    "mode": "lookup"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

```bash
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~website-traffic-estimator/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["apify.com"], "mode": "lookup"}'
```

```python
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/website-traffic-estimator")
result = tool.invoke({"run_input": {"domains": ["apify.com"], "mode": "lookup"}})
print(result)
```

run-sync waits up to 300 seconds; for longer runs start a run and use a webhook. LlamaIndex and MCP: https://cliqtomedia.com/actors/ai-agents/

## Similar tools

- [Domain WHOIS (RDAP) & DNS Lookup, No Login](https://cliqtomedia.com/actors/domain-whois-dns-lookup/)
- [Website Tech Stack Detector: CMS, Versions & CDN, No Login](https://cliqtomedia.com/actors/tech-stack-detector/)
- [SEO Site Audit: Broken Links, Meta Tags & Speed](https://cliqtomedia.com/actors/seo-site-audit/)
- [Website Contact Scraper](https://cliqtomedia.com/actors/website-contacts-scraper/)
- [Google Autocomplete Scraper: Keyword Suggestions](https://cliqtomedia.com/actors/google-autocomplete-scraper/)
- [Website JSON-LD Structured Data Scraper](https://cliqtomedia.com/actors/website-jsonld-structured-data-scraper/)
