Service Area Page Coverage Auditor avatar

Service Area Page Coverage Auditor

Pricing

from $6.50 / 1,000 service area page scanneds

Go to Apify Store
Service Area Page Coverage Auditor

Service Area Page Coverage Auditor

Map service-area pages against target cities/counties/services and find missing, duplicate, weak, or cannibalized local coverage

Pricing

from $6.50 / 1,000 service area page scanneds

Rating

0.0

(0)

Developer

junipr

junipr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Map service-area pages against target locations and services, then identify missing, thin, duplicate, and cannibalized coverage with URL-level evidence.

What you get

  • Create a cross-product of target service areas and target services, or accept an explicit coverage matrix.
  • Match combinations against URLs, page titles, headings, and visible body text.
  • Classify each pair as covered, missing, thin, duplicate, or source unavailable.
  • Flag cannibalization when multiple reachable pages target the same configured pair.
  • Prioritize build, consolidation, and content-strengthening work in exportable reports.

Input

{
"startUrls": [
"https://example.com/services"
],
"sitemapUrls": [
"https://example.com/sitemap.xml"
],
"allowedDomains": [
"example.com"
],
"maxPages": 10,
"maxDepth": 1,
"maxTargetLocations": 10,
"maxTargetServices": 10,
"targetServiceAreas": [
"Austin",
"Dallas"
],
"targetServices": [
"Roof Repair",
"Gutter Cleaning"
],
"coverageMatrix": [],
"urlPatternRules": [
{
"name": "service pages",
"pattern": "/services/"
}
],
"minimumContentThresholds": 250,
"detectCannibalization": true,
"includeEvidence": true,
"includeRawSnapshots": false,
"requestDelayMs": 250,
"timeoutMs": 15000,
"userAgentMode": "standard",
"maxChargeUsd": 15,
"includeReport": true
}

Use htmlInputs when you already have source HTML or need deterministic recurring analysis. URL runs accept normal public HTTP(S) pages. Private-network and unsupported URL targets are rejected.

Dataset output

Each dataset item is a complete, schema-defined record. Fields that are not present in the source remain null rather than being guessed.

{
"sourceUrl": "https://example.com/services/austin-roof-repair",
"recordType": "service_area_coverage",
"issueCode": "service_area_page_coverage_auditor_covered",
"serviceArea": "Austin",
"serviceName": "Roof Repair",
"matchingUrls": [
"https://example.com/services/austin-roof-repair"
],
"coverageStatus": "covered",
"contentWordCount": 620,
"localModifierFound": true,
"cannibalizationRisk": false,
"coveragePriority": "low"
}

Reports

A successful run can write:

  • service-area-page-coverage-auditor-summary-report.md
  • service-area-page-coverage-auditor-records.csv
  • service-area-page-coverage-auditor-issues.json
  • service-area-page-coverage-auditor-evidence-samples.json
  • service-area-page-coverage-auditor-run-metadata.json

Reports include row counts, issue severities, evidence references, recommendations, and the input fields consumed by the run.

Pricing and cost controls

This actor uses pay-per-event pricing with Apify platform usage pass-through off:

  • actor-start — $0.01000 per run
  • service-area-page-scanned — $0.00650 per page
  • coverage-gap-emitted — $0.00295 per gap
  • record-extracted — $0.00295 per record
  • audit-report-generated — $0.08000 per report

The default maxChargeUsd is $15. The runtime checks the local budget and the Apify charge result before every paid dataset item. If either limit is reached, it stops before emitting unpaid output and writes billing diagnostics to key-value storage.

Safe crawling behavior

  • Public HTTP(S) sources only.
  • Private-network, localhost, and unsupported protocol targets are rejected.
  • allowedDomains, maxPages, actor-specific caps, maxDepth, timeoutMs, and requestDelayMs bound discovery.
  • Supplied HTML is processed without an external request.
  • Protected or authenticated sources are outside the supported public-data scope.

Limitations

  • Coverage is evaluated only against configured area/service names.
  • Word count is based on visible HTML text, not rendered client-side content.
  • Multiple matching URLs are a cannibalization signal for review, not an automatic canonicalization decision.

Common use cases

  • Find missing city/service combinations.
  • Detect thin or competing service-area pages.
  • Prioritize local landing-page buildouts.