Similarweb traffic skill
Fetch website traffic estimates (monthly visits, traffic sources, top countries, keywords, engagement, ranks) for any domain from SimilarWeb.
by OpenClaudia·MIT license·★ 705 Stars on the repo·GitHub ↗
npx degit OpenClaudia/openclaudia-skills/skills/similarweb-traffic#main ~/.claude/skills/similarweb-trafficChecked ·commit main
Files of Similarweb traffic
Show the full text81 lines
SimilarWeb Traffic
Fetch traffic-overview estimates for any domain — monthly visits, traffic-source breakdown, top countries, top keywords, engagement metrics, and global/category ranks.
When to Use This Skill
Use this skill when the user:
- Asks how much traffic a domain gets ("what's the traffic for X")
- Wants monthly visit trends for a site
- Needs a traffic-source breakdown (organic vs direct vs paid vs GenAI, etc.)
- Wants to know a site's audience countries
- Wants to compare/benchmark several domains against each other or competitors
Usage
No API key required. Self-contained Node script (uses built-in fetch, no npm install).
node scripts/fetch-similarweb-traffic.js <domain>
Examples:
# Formatted markdown summary (default)
node scripts/fetch-similarweb-traffic.js chatslide.ai
# Raw normalized JSON (for further processing / comparisons)
node scripts/fetch-similarweb-traffic.js stripe.com --json
The domain can be passed bare (example.com) or as a URL (https://www.example.com/pricing) — it gets normalized (strips scheme, www., and path).
Comparing multiple domains
Run the script once per domain with --json and combine the results into a table. Add a short delay between calls to be polite to the endpoint.
Output
Default mode prints a markdown summary: a metrics table (monthly visits, ranks, bounce, pages/visit, time on site), a monthly-visits trend line, traffic-source breakdown, top countries, and top keywords.
--json mode prints a normalized object:
{
"domain": "stripe.com",
"globalRank": 327,
"categoryRank": 21,
"category": "Finance",
"snapshotMonth": "2026-05",
"visits": 122394040,
"bounceRate": 0.55,
"pagesPerVisit": 3.26,
"timeOnSite": 165.9,
"estimatedMonthlyVisits": [{ "date": "2026-03-01", "visits": 118067753 }],
"trafficSources": { "searchOrganic": 0.48, "direct": 0.23, "...": 0 },
"topCountries": [{ "countryCode": "US", "value": 0.087 }],
"topKeywords": ["..."]
}
visits is the most recent complete month. Rates (bounceRate, all trafficSources, topCountries[].value) are 0–1 fractions.
API Details
- Endpoint:
https://data.similarweb.com/api/v1/data?domain=<domain>— SimilarWeb's undocumented public data endpoint (the one their browser extension uses). No auth, no key, free. - Requires a browser
user-agentheader (the script sends one) — defaultcurl/bot agents are blocked. - Synchronous, returns immediately.
Important Notes
- Estimates, not ground truth. SimilarWeb models traffic; numbers can be off, especially for mid/low-traffic sites. For a domain you own, your own Google Analytics / Search Console data is authoritative — prefer those when available.
- Unknown domains return zeros, not an error. SimilarWeb responds HTTP 200 with all-zero/synthetic data when it has no data for a domain. If every visit count is 0, treat it as "no SimilarWeb data."
- Unofficial endpoint. It can be rate-limited, change shape, or require auth without notice; this is a gray-area use of SimilarWeb's data outside their paid API.
- Exit codes:
2network error,3non-200 HTTP response.
| 1 | |
| 2 | name similarweb-traffic |
| 3 | description Fetch website traffic estimates (monthly visits, traffic sources, top countries, keywords, engagement, ranks) for any domain from SimilarWeb. Use when the user asks about a domain's traffic, monthly visits, traffic sources, audience countries, or wants to compare/benchmark sites against competitors. |
| 4 | |
| 5 | |
| 6 | # SimilarWeb Traffic |
| 7 | |
| 8 | Fetch traffic-overview estimates for any domain — monthly visits, traffic-source breakdown, top countries, top keywords, engagement metrics, and global/category ranks. |
| 9 | |
| 10 | ## When to Use This Skill |
| 11 | |
| 12 | Use this skill when the user: |
| 13 | |
| 14 | Asks how much traffic a domain gets ("what's the traffic for X") |
| 15 | Wants monthly visit trends for a site |
| 16 | Needs a traffic-source breakdown (organic vs direct vs paid vs GenAI, etc.) |
| 17 | Wants to know a site's audience countries |
| 18 | Wants to compare/benchmark several domains against each other or competitors |
| 19 | |
| 20 | ## Usage |
| 21 | |
| 22 | No API key required. Self-contained Node script (uses built-in `fetch`, no `npm install`). |
| 23 | |
| 24 | |
| 25 | node scripts/fetch-similarweb-traffic.js <domain> |
| 26 | |
| 27 | |
| 28 | Examples: |
| 29 | |
| 30 | # Formatted markdown summary (default) |
| 31 | node scripts/fetch-similarweb-traffic.js chatslide.ai |
| 32 | |
| 33 | # Raw normalized JSON (for further processing / comparisons) |
| 34 | node scripts/fetch-similarweb-traffic.js stripe.com --json |
| 35 | |
| 36 | |
| 37 | The domain can be passed bare (`example.com`) or as a URL (`https://www.example.com/pricing`) — it gets normalized (strips scheme, `www.`, and path). |
| 38 | |
| 39 | ### Comparing multiple domains |
| 40 | |
| 41 | Run the script once per domain with `--json` and combine the results into a table. Add a short delay between calls to be polite to the endpoint. |
| 42 | |
| 43 | ## Output |
| 44 | |
| 45 | Default mode prints a markdown summary: a metrics table (monthly visits, ranks, bounce, pages/visit, time on site), a monthly-visits trend line, traffic-source breakdown, top countries, and top keywords. |
| 46 | |
| 47 | `--json` mode prints a normalized object: |
| 48 | |
| 49 | |
| 50 | { |
| 51 | "domain": "stripe.com", |
| 52 | "globalRank": 327, |
| 53 | "categoryRank": 21, |
| 54 | "category": "Finance", |
| 55 | "snapshotMonth": "2026-05", |
| 56 | "visits": 122394040, |
| 57 | "bounceRate": 0.55, |
| 58 | "pagesPerVisit": 3.26, |
| 59 | "timeOnSite": 165.9, |
| 60 | "estimatedMonthlyVisits": [{ "date": "2026-03-01", "visits": 118067753 }], |
| 61 | "trafficSources": { "searchOrganic": 0.48, "direct": 0.23, "...": 0 }, |
| 62 | "topCountries": [{ "countryCode": "US", "value": 0.087 }], |
| 63 | "topKeywords": ["..."] |
| 64 | } |
| 65 | |
| 66 | |
| 67 | `visits` is the most recent complete month. Rates (`bounceRate`, all `trafficSources`, `topCountries[].value`) are 0–1 fractions. |
| 68 | |
| 69 | ## API Details |
| 70 | |
| 71 | Endpoint: `https://data.similarweb.com/api/v1/data?domain=<domain>` — SimilarWeb's **undocumented public data endpoint** (the one their browser extension uses). No auth, no key, free. |
| 72 | Requires a browser `user-agent` header (the script sends one) — default `curl`/bot agents are blocked. |
| 73 | Synchronous, returns immediately. |
| 74 | |
| 75 | ## Important Notes |
| 76 | |
| 77 | **Estimates, not ground truth.** SimilarWeb models traffic; numbers can be off, especially for mid/low-traffic sites. For a domain you own, your own Google Analytics / Search Console data is authoritative — prefer those when available. |
| 78 | **Unknown domains return zeros, not an error.** SimilarWeb responds HTTP 200 with all-zero/synthetic data when it has no data for a domain. If every visit count is 0, treat it as "no SimilarWeb data." |
| 79 | **Unofficial endpoint.** It can be rate-limited, change shape, or require auth without notice; this is a gray-area use of SimilarWeb's data outside their paid API. |
| 80 | Exit codes: `2` network error, `3` non-200 HTTP response. |
| 81 |
Discussion
Browse more free Claude skills.