Competitor SERP Domain Share Analyzer avatar

Competitor SERP Domain Share Analyzer

Pricing

from $11.50 / 1,000 query snapshot analyzeds

Go to Apify Store
Competitor SERP Domain Share Analyzer

Competitor SERP Domain Share Analyzer

Aggregate SERP result snapshots into competitor domain share, rank distribution, result-type ownership, and query coverage reports

Pricing

from $11.50 / 1,000 query snapshot analyzeds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 days ago

Last modified

Share

Turn query-linked search result evidence into a domain visibility table. The actor groups accepted results by domain, measures query coverage and rank distribution, distinguishes owned and named competitor domains, and writes evidence-backed reports for SEO and competitive research.

What you get

Each dataset row represents one observed domain and includes:

  • number of distinct queries where the domain appeared;
  • number of ranking URLs accepted for that domain;
  • average position plus top-three and top-ten counts;
  • count of non-organic result features owned by the domain;
  • owned, competitor, or other classification;
  • optional intent grouping derived from supplied query labels;
  • share of all accepted result records;
  • source URL, scan time, issue code, evidence, and a recommended next step.

The actor also writes a Markdown summary, CSV export, issue JSON, evidence JSON, and run metadata to the default key-value store when includeReport is enabled.

Input choices

Use serpResults for structured evidence. Each item may be a result record or a snapshot object with a query and results array. Result records can contain position, url, domain, resultType, and sourceUrl.

Use serpHtmlInputs or htmlInputs for captured HTML. Associate each object with a query; the parser accepts explicitly marked result cards and visible result links. You may also supply explicit public startUrls. Network requests are limited to the URLs you provide, validated against allowedDomains, and never expanded by following discovered links.

Important controls:

  • queries: restrict analysis to selected queries.
  • ownedDomains: classify domains you control.
  • competitorDomains: classify named competitors separately from other domains.
  • groupByIntent: enable grouping from supplied query context.
  • minOccurrences: omit domains below a stated evidence count.
  • maxQueries, maxSnapshots, maxResultsPerQuery, maxDomains: bound accepted evidence and output.
  • includeEvidence: include or suppress evidence excerpts.
  • includeRawSnapshots: opt in to capped raw HTML storage.
  • maxChargeUsd: stop before a paid event would exceed your run budget.

Example input

{
"serpResults": [
{
"query": "workflow software",
"sourceUrl": "https://example.com/serp/workflow-software",
"results": [
{ "position": 1, "url": "https://competitor.example/workflows", "resultType": "organic" },
{ "position": 2, "url": "https://junipr.io/workflows", "resultType": "featured_snippet" }
]
},
{
"query": "workflow automation",
"sourceUrl": "https://example.com/serp/workflow-automation",
"results": [
{ "position": 1, "url": "https://competitor.example/automation", "resultType": "organic" }
]
}
],
"queries": ["workflow software", "workflow automation"],
"ownedDomains": ["junipr.io"],
"competitorDomains": ["competitor.example"],
"groupByIntent": true,
"minOccurrences": 1,
"maxQueries": 10,
"maxSnapshots": 10,
"maxResultsPerQuery": 20,
"maxDomains": 50,
"includeReport": true,
"maxChargeUsd": 35
}

Example output

{
"recordType": "competitor_serp_domain_share_analyzer",
"recordName": "competitor.example",
"issueCode": "competitor_serp_domain_share_analyzer_competitor_share",
"severity": "medium",
"domain": "competitor.example",
"queryCount": 2,
"rankingUrlCount": 2,
"avgPosition": 1,
"topThreeCount": 2,
"topTenCount": 2,
"featureOwnershipCount": 0,
"ownedVsCompetitor": "competitor",
"intentGroup": "mixed",
"visibilityShare": 66.667,
"sourceUrl": "https://example.com/serp/workflow-software",
"scannedAt": "2026-07-10T12:00:00.000Z"
}

Evidence rules

The actor reports only accepted structured records or visible result cards. It does not invent rankings, domains, query volume, or market share from query text. Missing evidence produces a nonempty diagnostic row instead of a fabricated competitor table. Access-denied or challenge content is identified as blocked evidence and is not treated as a SERP.

For reproducible comparisons, capture the same query set, result depth, locale, device, and collection method on every run. The actor measures share within the supplied evidence; it is not a population-level traffic estimate.

Pay-per-event pricing

Platform usage pass-through is off. Charges occur before paid output is written, and maxChargeUsd is enforced as a hard ceiling.

EventPrice
actor-start$0.0350
query-snapshot-analyzed$0.0115
domain-result-analyzed$0.0115
competitor-share-signal-emitted$0.0115
executive-report-generated$0.4000

The default maximum charge is $35. Set a lower value for tightly bounded runs. Setting it to zero prevents paid processing and output.

Practical uses

  • compare owned visibility with named competitors across a stable keyword set;
  • identify domains repeatedly occupying top-three positions;
  • inventory URLs and result features associated with each competitor;
  • segment competitor visibility by supplied intent group;
  • export a dated domain-share table for recurring SEO reporting.

Limits

HTML layouts vary, so structured serpResults are the most stable input. The actor does not perform broad web discovery, estimate search demand, or infer results that are absent from the evidence. Raw HTML is stored only when requested, and source fetching rejects non-public or non-HTTP targets.