Service Area Page Coverage Auditor
Pricing
from $6.50 / 1,000 service area page scanneds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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.mdservice-area-page-coverage-auditor-records.csvservice-area-page-coverage-auditor-issues.jsonservice-area-page-coverage-auditor-evidence-samples.jsonservice-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, andrequestDelayMsbound 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.