💰

Pricing

SEO Auditor

Detects pricing and subscription plan pages on websites

SEO
50 credits
Per check
~30 seconds
Average runtime
Active
Status

Run this auditor

3 of 3 free audits left today

See what Pricing finds on your site. No sign-up needed.

How it works

  1. Validate — normalizes the monitored URL (adds https:// when the scheme is missing). A URL that does not parse or has no host ends the audit with 501.

  2. Fetch the start page — sends a GET request to the monitored URL as 37AuditsBot. A blocked request ends the audit with 590; a timeout, DNS or TLS failure, an HTTP status of 400 or more, or a body that is not text/html ends it with 500.

  3. Detect — on every page read, three detectors run in order: Offer structured data in JSON-LD (Offer, AggregateOffer, PriceSpecification, or a Product, Service, SoftwareApplication, Organization or LocalBusiness with offers, price, priceCurrency or priceRange), Offer structured data in Microdata (itemtype of Offer, AggregateOffer or PriceSpecification, or an itemprop of offers, price, priceCurrency or priceRange), and a pricing heading (an h1–h4, link or button whose text matches labels such as Pricing, Plans, Subscription, Billing, Packages, Preços, Planos, Assinatura or Valores).

  4. Crawl — when no detector matches, every http(s) link to the same host is queued and the crawl continues breadth first, at most 500 pages. A page that cannot be fetched, answers HTTP 400 or more (including 403) or is not HTML is skipped silently; only the start page can block or fail the audit.

  5. Rules — a crawl that ran out of pages or reached the 500-page limit without a match fails (400); the first match succeeds (200) and names the page, the detector and the number of pages crawled.

What this auditor validates

Every row maps to one checkRule* method and one CheckCode, in the order the auditor runs them. CheckCode suffixes use status ranges: 200 success, 400–499 fail, 500–599 error.

CheckCodeStatusWhen it firesRecommendationWhy it matters
37A-PricingAuditor-400FAILThe crawl ran out of same-host pages, or reached the 500-page limit, without any detector matching a page.Publish a pricing or plans page on {host}, link it from the main navigation of {startUrl} so it is reached within the first 500 pages, and mark it with Offer structured data or a heading such as "Pricing" or "Plans".Buyers who cannot find what you charge leave to compare a competitor instead of asking, and AI assistants that answer pricing questions leave your product out of the comparison.
37A-PricingAuditor-200SUCCESSA detector matched a crawled page. Message names the page, the detector (JSON-LD, Microdata or a pricing heading) and the number of pages crawled.——
37A-PricingAuditor-500ERRORThe start page could not be fetched (timeout, DNS, TLS, HTTP 400 or more other than a block) or is not an HTML page.Make sure {startUrl} answers with HTTP 2xx and an HTML body, then run the audit again. Last error: {error}.—
37A-PricingAuditor-501ERRORThe start URL does not parse or has no host, so there is nothing to crawl.Monitor an absolute URL with a scheme and a host, such as https://example.com/, instead of "{startUrl}".—
37A-PricingAuditor-590ERRORThe audited page answered HTTP 403, HTTP 429 or a Cloudflare challenge, so 37AuditsBot was blocked before it could read the page.Allow 37AuditsBot in your firewall or bot protection: allowlist its user agent, or verify its Web Bot Auth signature. See https://www.37audits.com/bot.While 37AuditsBot is blocked this audit cannot look at the site, so problems on it go unreported.

Output Documentation

StatusDescriptionTest logic
SUCCESSA pricing or plans page was foundA crawled page matched the JSON-LD, Microdata or heading detector (200).
FAILNo pricing or plans page was foundThe crawl exhausted the same-host pages or reached the 500-page limit without a match (400).
ERRORThe auditor could not crawl the siteStart page fetch failure, HTTP 400 or more, or non-HTML body (500); invalid start URL or no host (501); site blocked 37AuditsBot (590).

Every check carries the same data fields: startUrl, host, pagesCrawled, maxPages, pricingUrl, detector (json-ld, microdata or heading), schemaDetected and headingDetected.

Risks and Considerations

Why a findable pricing page matters

  • Procurement teams, founders and AI assistants all look for a price before they contact sales; a site without a reachable pricing or plans page loses the comparison by default.

  • Offer structured data (Offer, AggregateOffer, priceSpecification) lets search engines show prices in rich results and lets answer engines quote them accurately.

How the crawl can miss or mislabel a page

  • The crawl follows only http(s) links to the same host, breadth first, and stops after 500 pages. A pricing page reachable only through another host (a billing subdomain, an app store), through JavaScript navigation or deeper than 500 pages is reported as missing.

  • The heading detector is a word match on h1–h4, links and buttons (English and Portuguese labels). A page that mentions "plans" in another sense, or a navigation link to a pricing page, counts as a match; the message names the page and the detector so you can confirm it.

  • Only the first matching page is reported; the auditor does not judge whether the prices on it are complete or current.

Changes from the previous version

  • An invalid start URL, or one without a host, is now an ERROR (501) instead of a FAIL: the auditor could not run, so the result is not charged.

  • A start page that cannot be fetched (timeout, DNS, TLS, HTTP 400 or more, non-HTML body) is now an ERROR (500) instead of the "no pricing page found" FAIL.

  • The "no pricing page found" verdict now carries a check (400) with the pages crawled, the host and the limit, so it can be referenced and filtered like every other finding.

This documentation is built and hosted on Mintlify, a developer documentation platform.

Source: docs.37audits.com

Ready to start auditing?

Add this auditor to your monitoring setup and start identifying issues on your websites today.

© 2026 37 Audits. All rights reserved. Audit your websites with confidence.

Supported by

Made with ❤️ in Floripa