Location Page Consistency Checker
Pricing
from $4.90 / 1,000 page auditeds
Location Page Consistency Checker
Audit multi-location pages for consistent addresses, hours, schema, titles, and location content.
Pricing
from $4.90 / 1,000 page auditeds
Rating
0.0
(0)
Developer
junipr
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Compare location page fields across a supplied multi-location set and expose missing or inconsistent values.
Location Page Consistency Checker is designed for local SEO teams, multi-location operators, agencies, franchise systems, and developers maintaining location pages. It processes only the bounded inputs you provide, produces deterministic dataset rows, and writes optional JSON and Markdown reports. Empty, blocked, or malformed sources are represented as diagnostics rather than successful invented data.
Common Uses
- Find location pages missing addresses, hours, phones, local titles, or LocalBusiness schema.
- Compare hours against an explicit business-wide expectation.
- Normalize phone formatting for a consistent comparison.
- Extract basic location fields from supplied or fetched JSON-LD.
How The Analysis Works
- Each location receives five field comparisons: address, phone, hours, title, and schema type.
- Addresses must be present. Phones must have a valid digit length. Titles should include the supplied city or locality.
- Expected hours and phone values can be supplied explicitly; otherwise the actor uses a deterministic common-value baseline where appropriate.
- Missing, invalid, inconsistent, and missing-location-term outcomes remain distinct so remediation can be targeted.
The actor processes source groups in order. It stops before another paid row when the run's event charge limit is reached. Rows already charged and written remain available, and the summary marks the run as truncated. Source-access diagnostics do not pretend that an audit or analysis succeeded.
Input
records: location ID, city, address, phone, hours, title, schemaType, and pageUrl.html: one location page containing a title and optional LocalBusiness JSON-LD.urls or sourceUrl: public pages fetched only when fetchUrls is true.expectedHours, expectedPhone, and expectedSchemaType override inferred expectations.fetchUrlsdefaults tofalse. Set it totrueonly for public HTTP(S) sources.fetchTimeoutMsis bounded between 1,000 and 30,000 milliseconds.maxTextByteslimits each fetched response to at most 1,000,000 bytes.includeReportcontrols the charged JSON and Markdown report artifacts.dryRunvalidates the input shape without paid dataset output.
Direct top-level source fields are useful for one source group. Use targets for multiple independent groups. Public URL retrieval rejects embedded credentials, redirects, localhost, private and reserved network ranges, DNS answers that resolve privately, oversized responses, and requests that exceed the timeout.
Example Input
{"targets": [{"sourceId": "fixture-location-pages","records": [{"id": "nashville","city": "Nashville","address": "101 Main St, Nashville, TN","phone": "(615) 555-0199","hours": "Mon-Fri 8-5","title": "Roof Repair Nashville","schemaType": "LocalBusiness","pageUrl": "https://example.com/nashville"},{"id": "franklin","city": "Franklin","address": "202 Main St, Franklin, TN","phone": "(615) 555-0199","hours": "Mon-Fri 8-5","title": "Roof Repair Franklin","schemaType": "LocalBusiness","pageUrl": "https://example.com/franklin"},{"id": "murfreesboro","city": "Murfreesboro","address": "","phone": "(629) 555-0100","hours": "","title": "Services","schemaType": "","pageUrl": "https://example.com/murfreesboro"}]}],"maxTargets": 1,"maxItems": 25,"includeReport": true,"fetchUrls": false}
Dataset Output
- locationId and pageUrl tie every comparison to the source location.
- fieldName, expectedValue, and observedValue preserve the comparison.
- mismatchType identifies match, missing, invalid, inconsistent, or missing-location-term.
- The report totals audited locations, compared fields, mismatches, and blocked locations.
Every row also includes a stable rowId, sourceId, optional sourceUrl, sourceType, status, severity, score, summary, recommendation, timestamp, pricing tier, and the event name associated with that row. The dataset schema is strict, so examples and runtime rows use the same field set.
Example Output
[{"rowId": "location-page-consistency-checker_c400a5ac2c753887","sourceId": "fixture-location-pages","sourceUrl": null,"sourceType": "inline-records","status": "ok","severity": "info","score": 100,"summary": "nashville address: match.","recommendation": "Add a complete street address unique to this location.","checkedAt": "2026-07-02T00:00:00.000Z","pricingTemplate": "W1 — Web/domain audit","pricingEventName": "record-extracted","locationId": "nashville","fieldName": "address","expectedValue": "present","observedValue": "101 Main St, Nashville, TN","pageUrl": "https://example.com/nashville","mismatchType": "match"},{"rowId": "location-page-consistency-checker_e81a1a56709a816f","sourceId": "fixture-location-pages","sourceUrl": null,"sourceType": "inline-records","status": "ok","severity": "info","score": 100,"summary": "nashville phone: match.","recommendation": "Add a valid phone number and keep intentional shared numbers documented.","checkedAt": "2026-07-02T00:00:00.000Z","pricingTemplate": "W1 — Web/domain audit","pricingEventName": "record-extracted","locationId": "nashville","fieldName": "phone","expectedValue": "valid phone","observedValue": "(615) 555-0199","pageUrl": "https://example.com/nashville","mismatchType": "match"}]
Report Artifacts
When includeReport is enabled and report charges succeed, the default key-value store receives:
LOCATION_PAGE_CONSISTENCY_CHECKER_RESULTS.jsonwith the charged dataset rows.LOCATION_PAGE_CONSISTENCY_CHECKER_SUMMARY.jsonwith counts, truncation state, and the run recommendation.LOCATION_PAGE_CONSISTENCY_CHECKER_REPORT.mdwith a buyer-readable report.
The dataset remains the row-level source of truth. The summary and Markdown report are derived from rows that were actually emitted; they do not include rows stopped by a charge limit.
Pay Per Event
This actor uses pay-per-event pricing. The configured event prices include platform usage, and the default maximum charge is $10.00. The actor charges before paid output and rejects partial charges.
actor-start: $0.00500 per event. Charged before paid dataset output or the corresponding paid unit is emitted.page-audited: $0.00490 per event. Charged before paid dataset output or the corresponding paid unit is emitted.record-extracted: $0.00372 per event. Charged before paid dataset output or the corresponding paid unit is emitted.finding-emitted: $0.00372 per event. Charged before paid dataset output or the corresponding paid unit is emitted.audit-report-generated: $0.05000 per event. Charged before writing the buyer-ready report artifacts to key-value storage.
Discounted Store tiers are represented in the pricing metadata. Review the run's cost estimate and caps before increasing source counts. URL retrieval, proxy use, or external services are not silently enabled by the actor.
Public Tasks
- Audit public URLs for Location Page Consistency Checker issues: Audit one public location page for address, phone, hours, title, and LocalBusiness schema fields.
- Find Location Page Consistency Checker problems across a website: Compare a capped multi-location record set and flag missing or inconsistent fields.
- Generate a technical Location Page Consistency Checker report: Create a field-level mismatch report for a supplied location page table.
- Compare location hours and phone formatting: Check shared hours and phone expectations while retaining intentional local differences.
- Extract and validate LocalBusiness fields from page HTML: Extract title, address, phone, hours, and schema type from one inline page.
Each task uses a small explicit input and sets a maximum item count. URL-based tasks enable fetching only where fetching is necessary to demonstrate the actor's purpose; inline tasks remain deterministic and network-free.
Reading Results
Start with blocked or high-severity rows, then review attention or warning rows. Confirm the evidence and recommendation against your operating policy before making bulk changes. A pass means the supplied source satisfied the configured check; it is not a guarantee about data or behavior outside the source and rules evaluated in that run.
For repeated workflows, keep source IDs stable. Stable IDs make it easier to compare exports, trace a report row to the original input, and identify whether a change came from source data or configuration. Keep caps low while testing a new data shape, then increase them only after confirming row counts and expected event costs.
Data Handling And Safety
Use public or authorized source material. Do not provide credentials in URLs. The actor does not attempt to bypass authentication, anti-bot controls, access restrictions, or private networks. Fetched bodies are held only for the run's bounded analysis. Dataset and report outputs may contain excerpts or field values from the supplied source, so avoid submitting secrets or personal data that should not appear in Apify storage.
Limitations
- The actor does not query Google Business Profile or external directory listings.
- Shared phones or different hours may be intentional; use explicit expectations to represent those policies.
- JSON-LD extraction targets common LocalBusiness and Organization objects and does not execute JavaScript.
- Consistency findings should be reviewed against real business operations before bulk edits.
FAQ
Does the actor invent missing values?
No. Missing values and unavailable sources become explicit gaps, mismatches, failures, or diagnostics.
Can I run it without network access?
Yes. Supply inline records, CSV, text, or HTML and leave fetchUrls disabled.
What happens at the charge limit?
The actor stops before the next paid output, preserves rows already written, and marks the summary as truncated. Optional report artifacts are written only when their report events are fully charged.
Should I treat every finding as an automatic change?
No. Findings are deterministic QA or analysis results based on supplied evidence. Review business context, source quality, and intentional exceptions before acting.