Hreflang & Sitemap Auditor
Pricing
from $2.00 / 1,000 audited pages
Hreflang & Sitemap Auditor
Audit multilingual sites for missing hreflang return links, invalid locale codes, canonical conflicts and noindex. Export page evidence as JSON, CSV and HTML.
Pricing
from $2.00 / 1,000 audited pages
Rating
0.0
(0)
Developer
Emilio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Find missing hreflang return links, invalid locale codes, canonical conflicts and noindex warnings across multilingual pages. Get page-level evidence in an Apify dataset, a spreadsheet-safe CSV and an HTML report.
Use it to review a translated site before launch, check language variants after a migration, or run recurring QA for clients in Spain, Portugal, Italy, France and Germany. It works with other supported languages too. No AI, browser, proxy, CAPTCHA solver or paid data API is used.
Why use it
A page can list its French version while the French page omits the return link. This Actor reports that exact relationship when both pages are in the audited sample. If a target is outside the sample, it clearly reports unchecked, so a limited crawl is not presented as a complete audit.
The output is designed for agency QA and integration workflows: one row per requested page, stable issue codes, the affected URL and explicit coverage limits. No SEO rank or revenue improvement is promised.
Input
Audit only public sites you own or have permission to audit. Add every exact hostname that may be fetched, including www and separate language domains. The permission checkbox must be true. Add direct page URLs, direct sitemap URLs, or both.
The Store form starts with a one-page example.com demo, limited to 3 requests and 10 seconds. Its prefilled permission confirmation covers only that demo. Before replacing the host or URLs, confirm that you have permission to audit every target site, then choose your sample limits.
{"permissionConfirmed": true,"allowedHosts": ["your-authorized-site.com"],"pageUrls": ["https://your-authorized-site.com/es/product","https://your-authorized-site.com/fr/product"],"maxPages": 100,"maxResults": 100,"maxDurationSecs": 120,"requestDelayMs": 500}
For sitemap input, use "sitemapUrls": ["https://your-authorized-site.com/sitemap.xml"]. Standard XML indexes and bounded .xml.gz files are supported. There is no automatic site-wide link crawl or sitemap discovery.
The runtime default, when no page limit is supplied, is a sample of 100 pages. Each execution allows at most 1,000 pages/results, 20 sitemaps, 3,000 source HTTP requests, 5 concurrent requests and 300 seconds of audit time. The process has a separate 330-second safety deadline. The source may permit fewer requests. Slow sites can finish with partial results.
Output
This shortened example is synthetic; it illustrates a missing reciprocal link, not a customer result.
{"schemaVersion": "1.0","url": "https://shop.example.com/es","finalUrl": "https://shop.example.com/es","statusCode": 200,"outcome": "ok","errorCode": null,"title": "Zapatos · España","htmlLang": "es","canonical": "https://shop.example.com/es","noindex": false,"checkedAlternates": 2,"uncheckedAlternates": 1,"findings": [{"code": "HREFLANG_MISSING_RETURN","severity": "error","evidence": "html: https://shop.example.com/fr"}]}
The full row also includes a stable ID, description, alternate annotations and truncation status. Outputs:
- Default dataset: page audit rows; export JSON or other formats from Console/API.
RESULTS.csv: flattened, formula-safe spreadsheet export.REPORT.html: readable page findings.SUMMARY: requests, response bytes, retries, errors, stop reason, sample coverage and next page offset when known.
Rows record the requested URL. Distinct URLs that redirect to the same final URL remain distinct diagnostic checks. Exact normalized duplicate inputs do not create extra rows.
Pricing
$2 per 1,000 page rows, plus Apify platform usage. Verify the effective price displayed in Console before running.
One audited-page event is associated with each saved page row, including an error diagnostic such as HTTP404, robots denial or a timeout. Sitemap errors appear in the summary and are not separate billable events. If no page row is saved, there is no page event charge; platform usage can still accrue. There is no separate start fee.
100 rows cost $0.20 in event fees; 1,000 cost $2; 10,000 across multiple runs cost $20. Platform compute, traffic, storage operations, retention and downloads are additional. Your event spending limit is not a guarantee of the total cost when usage is charged separately. Start with a small batch and review the usage breakdown.
Free-plan users receive the same features within their platform credits and the same technical limits. No paid plan is required by this Actor itself. The developer does not earn revenue from Free-plan usage under the documented Apify model.
Rules and limits
- Checks server-returned UTF-8 HTML and XML sitemap annotations. JavaScript-rendered tags and HTTP
Linkhreflang annotations are not evaluated; headers containing hreflang are flagged for manual review. - HTML and sitemap methods are checked separately. A site using only sitemaps is not required to duplicate its annotations in HTML.
- Reciprocity is evaluated only when both pages were successfully fetched within the sample. A target outside the sample or an ambiguous redirect alias remains unchecked.
- Locale validation supports ISO639-1 languages, ISO3166-1 alpha2 regions,
x-defaultand common scripts. Full BCP47 and every search-engine-specific locale are not supported.en-UKis invalid;ukis Ukrainian. - Up to 20 combined annotations per page and 16KiB per exported row. Truncation is flagged; absence of a finding in a truncated row is not proof of correctness.
- Noindex warnings include meta robots/googlebot and X-Robots-Tag. Inspect user-agent scope manually before treating them as a Google indexing decision. Only HTML canonical tags are evaluated.
- Public HTTP(S), exact declared hosts and standard ports only. Private networks, credentials, local IPs and unsafe redirects are blocked. Robots rules are respected. No bypass of login, antibot or rate limits.
- A timeout, transfer/request cap or source error can produce a partial report. No guarantee of crawling an entire site or of 1,000 pages finishing in one run.
- No persistent baseline, automatic change alerts, rich-result certification or search ranking prediction.
FAQ
Why is an alternate unchecked? Its page was not in the successful audited sample, or a final-URL alias was ambiguous. Include it explicitly, allow its hostname and choose a sufficient sample. The Actor does not automatically expand the scope to alternate domains.
Can I audit multiple language domains? Yes. Add each exact hostname to allowedHosts and include its pages or sitemaps. Cross-domain redirects also require the destination host to be declared.
How do I continue a large sitemap? SUMMARY.nextPageOffset indicates the next offset when more discovered pages exist. Set pageOffset on a new run. Sources must remain stable; this is offset pagination, not a persisted snapshot. discoveryComplete: false means discovery was limited or failed; a null next offset then does not prove there are no more URLs. Split sitemap roots or provide explicit URL batches.
Why was robots.txt unavailable? The Actor fails closed on denied, malformed or failed robots responses. 404/410 means no file. Increase delay for a larger crawl-delay requirement; never use this Actor to bypass restrictions.
Do errors cost money? Saved page diagnostics cost the same as successful rows because they are completed checks. Even with zero saved rows, the platform can charge usage. No synthetic start or default dataset item event should be added on top of audited-page.
Can I resume or resurrect a billed run? Start a new audit. A cloud run with saved results, existing charges, restarts or resurrection is rejected to avoid accidental duplicate billing. A fresh execution is a new audit and can be billed again.
Where are data stored? In the run's Dataset and key-value store. No HTML bodies, cookies or contact databases are retained by this product. URLs may contain sensitive query parameters: do not supply them. Manage access and delete stored outputs through Apify.
Support
Report a reproducible issue through this Actor's Issues tab, including an example input with secrets removed, the run ID, expected result and issue code. Do not include private URLs, access tokens or credentials.
Version0.1.0: first local review candidate. No testimonials, sales or customer outcomes are claimed.