SEO & Website Traffic (New)
Monitor traffic trends and engagement metrics to identify companies experiencing growth or decline in their digital presence.
SEO & Website Traffic v2 signals reveal which companies are growing or struggling digitally — surfacing both opportunities and pain points across millions of domains.
We pull monthly traffic data, compute month-over-month and 3-month change percentages, and enrich every record with traffic source breakdown, engagement metrics, AI-platform referrals, top organic keywords, and a composite Digital Health Score.
Signals fire when traffic crosses significance thresholds (surges ≥25% MoM, declines ≤−30% MoM, or 3+ consecutive months of directional change). A baseline snapshot is also delivered for every domain so you have a current state record even when no significant change occurred.
| Signal | Subtype | Description |
|---|---|---|
| Traffic Surge | trafficSurge | Significant month-over-month traffic increase (≥25% MoM) |
| Traffic Decline | trafficDecline | Significant month-over-month traffic decrease (≤−30% MoM) |
| Sustained Growth | sustainedGrowth | 3 consecutive months of traffic increases |
| Sustained Decline | sustainedDecline | 3 consecutive months of traffic decreases |
| Baseline | baseline | Monthly snapshot — no significant change detected |
A single domain may produce multiple rows per batch when it qualifies for more than one subtype (e.g. a domain that grew 3 consecutive months and spiked +50% MoM will produce both sustainedGrowth and trafficSurge). Dedupe by company.domain if you want one row per company.
{
"signal_id": "e54ecce5-1b22-4866-a426-564411126d56",
"batch_id": "cf11373a-8c2f-4f10-b9be-756d51bb51a6",
"signal_type": "website-traffic",
"signal_subtype": "trafficDecline",
"signal_name": "Traffic Decline",
"detected_at": "2026-04-27T14:01:36.584Z",
"association": "company",
"company": {
"name": "eToro Group",
"domain": "etoro.com",
"linkedin_url": "linkedin.com/company/liabilitylimited",
"industries": ["finance/investing"],
"employee_count_low": 51,
"employee_count_high": 200,
"description": "eToro is a social investing platform..."
},
"data": {
"summary": "etoro.com traffic declined 17% to 21M monthly visits.",
"relevance": 58.9,
"traffic": {
"2026-01-01": 24985794,
"2026-02-01": 24828714,
"2026-03-01": 20531003
},
"snapshot_date": "2026-03-01T00:00:00+00:00",
"search_visits": 2053100,
"direct_visits": 17204981,
"referral_visits": 656992,
"social_visits": 41062,
"mail_visits": 20531,
"change_mom_pct": -17.3,
"change_3mo_pct": -17.8,
"consecutive_months": 3,
"trend": "consecutive_decline",
"traffic_band": "major",
"small_website": false,
"global_rank": 2429,
"country_rank": 580,
"country_rank_country": "GB",
"category": "finance/investing",
"category_rank": 3,
"website_title": "eToro — Social Trading & Investing",
"website_description": "eToro is a social investing platform...",
"traffic_sources": {
"direct": 0.838, "search": 0.100, "referral": 0.032,
"social": 0.002, "paid": 0.027, "mail": 0.001
},
"engagement": {
"bounce_rate": 0.502,
"pages_per_visit": 4.752,
"avg_visit_duration_seconds": 250
},
"top_countries": {
"GB": 0.168, "DE": 0.098, "FR": 0.083, "ES": 0.070, "IT": 0.066
},
"top_keywords": [
{ "name": "etoro", "volume": 337690, "cpc": 3.61, "estimated_value": 465410 },
{ "name": "bitcoin", "volume": 3983770, "cpc": null, "estimated_value": 47930 }
],
"ai_traffic": {
"total_visits": 16624,
"traffic_share": 0.001,
"top_platforms": [
{ "name": "chatgpt.com", "rank": 1, "share": 92.4 },
{ "name": "gemini.google.com", "rank": 2, "share": 5.5 },
{ "name": "perplexity.ai", "rank": 3, "share": 1.1 }
],
"top_prompts": [
"What is eToro and how does it work?",
"Can I trade cryptocurrencies on eToro?"
]
},
"search_dependency": "low",
"search_dependency_detail": "Low search dependency at 10% of total traffic.",
"brand_strength": "strong",
"brand_keyword_ratio": "2/5",
"brand_strength_detail": "Strong brand recognition with 84% direct traffic. Brand keyword ratio: 2/5.",
"engagement_quality": "high",
"engagement_quality_score": 76,
"engagement_quality_detail": "High engagement (76/100) with 50% bounce rate, 4.8 pages per visit, and 250-second average duration.",
"social_traffic_level": "low",
"social_traffic_detail": "Low social traffic at 0% of total visits (~41,062 visits).",
"referral_strength": "weak",
"referral_strength_detail": "Weak referral strength at 3% of traffic (~656,992 visits).",
"ai_traffic_level": "minimal",
"ai_traffic_detail": "Minimal AI traffic at 0.1% (~16,624 visits). Top: chatgpt.com (92%), gemini.google.com (6%), perplexity.ai (1%).",
"geo_concentration": "diversified",
"geo_concentration_detail": "Diversified traffic: GB (17%), DE (10%), FR (8%).",
"digital_health_score": 75,
"digital_health_label": "excellent",
"digital_health_detail": "Score 75: Engagement 76/100 (25%), Volume 100/100 (20%), Brand 100/100 (15%), Diversification 40/100 (15%), Rank 100/100 (15%), AI Readiness 1/100 (10%)."
}
}| Field | Type | Description |
|---|---|---|
| signal_id | string (UUID) | Unique identifier for this signal |
| batch_id | string (UUID) | Batch this signal was delivered in |
| signal_type | string | Always "website-traffic" |
| signal_subtype | enum | trafficSurge, trafficDecline, sustainedGrowth, sustainedDecline, baseline |
| signal_name | string | Human-readable name matching the subtype: "Traffic Surge", "Traffic Decline", "Sustained Growth", "Sustained Decline", or "Website Traffic" (baseline) |
| detected_at | string (ISO 8601) | When the signal was detected |
| association | string | Always "company" |
| Field | Type | Description |
|---|---|---|
| company.name | string or null | Company name (firmographic when available, otherwise page title) |
| company.domain | string | Company website domain |
| company.linkedin_url | string or null | LinkedIn company URL |
| company.industries | array[string] or null | Industry classifications |
| company.employee_count_low | integer or null | Lower bound of employee count |
| company.employee_count_high | integer or null | Upper bound of employee count |
| company.description | string or null | Company description |
| Field | Type | Description |
|---|---|---|
| data.summary | string | Human-readable summary of the signal |
| data.relevance | float | Relevance score (0–100) |
| data.traffic | object | Monthly visit counts keyed by date (YYYY-MM-DD, always the 1st of the month). Always 3 months. Example: {"2026-01-01": 6234155, "2026-02-01": 5510887, "2026-03-01": 8094470} |
| data.snapshot_date | string (ISO 8601) | Reference month — first day of the latest month in traffic |
| data.change_mom_pct | float | Latest month-over-month change percentage |
| data.change_3mo_pct | float | 3-month change percentage (newest vs oldest in traffic) |
| data.trend | enum | consecutive_growth, consecutive_decline, or fluctuating |
| data.consecutive_months | integer | Number of consecutive months in the same direction (1–3) |
| data.traffic_band | enum | Traffic size category: emerging, developing, established, major, dominant |
| data.small_website | boolean | Convenience flag — true for low-traffic / emerging-band domains |
Absolute visits attributed to each source for the snapshot month. Sum equals total monthly visits.
| Field | Type | Description |
|---|---|---|
| data.search_visits | integer | Monthly visits from search (organic + paid) |
| data.direct_visits | integer | Monthly visits from direct |
| data.referral_visits | integer | Monthly visits from referrals |
| data.social_visits | integer | Monthly visits from social |
| data.mail_visits | integer | Monthly visits from email |
| Field | Type | Description |
|---|---|---|
| data.global_rank | integer or null | Lower numbers indicate higher traffic |
| data.country_rank | integer or null | Rank within country_rank_country |
| data.country_rank_country | string or null | ISO 3166-1 alpha-2 country code for the country rank |
| data.category | string or null | Industry category slug (e.g. finance/investing) |
| data.category_rank | integer or null | Rank within category |
| data.website_title | string or null | <title> tag of the homepage |
| data.website_description | string or null | Meta description of the homepage |
Breakdown of where a company's website visitors originate. Values are proportions (0–1) summing to approximately 1.0.
| Field | Type | Description |
|---|---|---|
| data.traffic_sources.direct | float (0–1) | Visitors who typed the URL directly, used a bookmark, or clicked a saved link — no external referring source. High direct traffic typically indicates strong brand awareness |
| data.traffic_sources.search | float (0–1) | Visitors arriving via search engines. Includes both organic and paid search ads |
| data.traffic_sources.referral | float (0–1) | Visitors who clicked a link on another website to reach this domain — affiliate links, content partners, news coverage, directory listings |
| data.traffic_sources.social | float (0–1) | Visitors arriving from social platforms (LinkedIn, X/Twitter, Facebook, Reddit, etc.), organic and paid |
| data.traffic_sources.paid | float (0–1) | Visitors from display advertising and paid referral channels — banner ads, ad networks, programmatic display. Does not include paid search (under search) or paid social (under social) |
| data.traffic_sources.mail | float (0–1) | Visitors who clicked a link in an email, attributed via webmail clients (Gmail, Yahoo Mail, Outlook.com). Desktop email app clicks are typically attributed to direct |
Metrics describing how visitors interact with the website once they arrive.
| Field | Type | Description |
|---|---|---|
| data.engagement.bounce_rate | float (0–1) | Proportion of visitors who view only one page without interaction. 0.62 = 62% bounce. Typical B2B websites range 0.25–0.70 |
| data.engagement.pages_per_visit | float | Average number of pages viewed per session |
| data.engagement.avg_visit_duration_seconds | integer | Average time on site per session in seconds. 0 indicates data unavailable from upstream |
Geographic distribution of website visitors. Keys are ISO 3166-1 alpha-2 country codes, values are proportions (0–1). Up to 5 entries. May be empty when geographic data is unavailable.
| Field | Type | Description |
|---|---|---|
| data.top_countries | object | Country-level traffic distribution. Example: {"US": 0.65, "GB": 0.15, "DE": 0.10}. Only countries with meaningful traffic share are included |
Top organic search keywords driving traffic to the domain. Up to 5 entries. May be empty.
| Field | Type | Description |
|---|---|---|
| data.top_keywords[].name | string | The keyword phrase |
| data.top_keywords[].volume | integer | Monthly search volume |
| data.top_keywords[].cpc | float or null | Average cost-per-click for this keyword in paid search (USD). Null for non-commercial keywords |
| data.top_keywords[].estimated_value | integer | Organic traffic value (USD) — what equivalent paid traffic would cost |
Visits arriving from AI assistants (ChatGPT, Perplexity, Gemini, Claude, etc.) — increasingly important as AI-mediated discovery grows.
| Field | Type | Description |
|---|---|---|
| data.ai_traffic.total_visits | integer | Visits from AI platforms in the snapshot month |
| data.ai_traffic.traffic_share | float (0–1) | AI traffic as a share of total traffic |
| data.ai_traffic.top_platforms | array[object] | AI platforms driving referrals. Each entry: name (string, full domain e.g. "chatgpt.com"), rank (integer, 1-based position), share (float, percentage 0–100 of AI traffic from this platform). May be empty |
| data.ai_traffic.top_prompts | array[string] | Top user prompts that referred traffic. May be empty |
A composite 0–100 score measuring overall digital presence quality. Computed from 6 weighted components: Engagement (25%), Volume (20%), Brand (15%), Diversification (15%), Rank (15%), AI Readiness (10%).
| Field | Type | Description |
|---|---|---|
| data.digital_health_score | integer (0–100) | Composite score |
| data.digital_health_label | enum | poor (≤29), fair (30–54), good (55–74), excellent (75+) |
| data.digital_health_detail | string | Human-readable component breakdown showing each sub-score and its weight |
Categorical insight bands derived from the raw metrics above. Each exposes a level, a numeric score where applicable, and a human-readable detail string suitable for direct use in outbound messaging or dashboards.
| Field | Type | Description |
|---|---|---|
| data.engagement_quality | enum | low, moderate, high — overall visitor engagement tier based on bounce rate, pages per visit, and session duration |
| data.engagement_quality_score | integer (0–100) | Numeric engagement composite (average of bounce, pages, and duration sub-scores) |
| data.engagement_quality_detail | string | Breakdown of engagement metrics with the computed score |
| data.brand_strength | enum | weak, moderate, strong — how well-recognized the brand is, based on direct traffic share (≥40% = strong, ≥20% = moderate) |
| data.brand_keyword_ratio | string | How many of the top 5 organic keywords are brand terms (e.g. "2/5" means 2 of 5 keywords contain the company name or domain) |
| data.brand_strength_detail | string | Direct traffic percentage and brand keyword ratio in context |
| data.search_dependency | enum | low, moderate, high — what share of traffic relies on search engines (≥50% = high, ≥35% = moderate) |
| data.search_dependency_detail | string | Search traffic percentage with dependency classification |
| data.social_traffic_level | enum | low, moderate, high — social platform contribution to total traffic (≥15% = high, ≥5% = moderate) |
| data.social_traffic_detail | string | Social traffic percentage and estimated visit count |
| data.referral_strength | enum | weak, moderate, strong — third-party referral contribution (≥15% = strong, ≥5% = moderate) |
| data.referral_strength_detail | string | Referral traffic percentage and estimated visit count |
| data.ai_traffic_level | enum | none, minimal, emerging, significant — AI assistant referral volume (≥5% = significant, ≥1% = emerging, >0 = minimal) |
| data.ai_traffic_detail | string | AI traffic share, visit count, and top referring platforms with their percentages |
| data.geo_concentration | enum or null | highly_concentrated, moderately_concentrated, diversified — how geographically spread the audience is (top country ≥50% = highly concentrated, ≥25% = moderate). Null when country data unavailable |
| data.geo_concentration_detail | string or null | Top countries with their traffic share percentages |
"Noticed eToro's traffic declined 17% MoM with 3 consecutive months of decline — and their Digital Health Score still sits at 75 with strong brand strength. That sustained drop paired with high direct traffic suggests they may be pulling back on paid acquisition. Worth reaching out about retention-focused solutions."
- Refresh: Monthly
- Coverage: 4M+ companies
- Best for: Marketing agencies, sales intelligence platforms, SEO tools, advertising platforms, analytics vendors, M&A diligence
Contact [email protected] to get started.
Updated about 1 hour ago
