Organizations Local Business LodgingBusiness

Pricing Page Blueprint — Lodging Business

Room rates are one of the most common questions AI receives about lodging properties. This blueprint structures your nightly rates, seasonal pricing, and package deals so AI can give travelers accurate, direct answers instead of guessing from paragraph text.

What this page needs

When someone asks "how much is a room at this hotel" or "find lodging under $200 per night near the lake," AI needs structured pricing data to answer. Most properties bury this information behind booking engines. Structured data on a pricing page gives your property an advantage over competitors who leave AI guessing.

Why these fields matter to AI

Each field in the template below serves a specific role in how AI systems discover, classify, and recommend your business.

Researched and tested by Minnesota AI

LodgingBusiness

name
Non-negotiable. AI cannot cite or recommend an unnamed entity.
url
AI needs a stable URL to route users and attribute recommendations.
priceRange
AI filters local recommendations by budget. One of the most common qualifiers in location-based queries.

Use This Prompt to Implement Your Schema

Copy this prompt and paste it into Claude, ChatGPT, Cursor, or any AI coding tool. It will ask for your business details and generate ready-to-use JSON-LD schema for your page.

Implementation Prompt · Pricing
You are implementing AIFDS-compliant JSON-LD structured data for a Lodging Business Pricing page.

AIFDS (AI-Friendly Data Structure) is a schema framework built on research into which
structured data fields AI systems actually read, parse, and use when deciding whether
to cite a page. Documentation at aifds.org.

Before generating any code, ask me for the following information in a single numbered list.
Do not generate schema until I have answered every required field.

REQUIRED — do not proceed without these:
1. Domain
2. Faq answer
3. Faq question
4. Nightly rate
5. Package description
6. Package name
7. Package price
8. Price range
9. Pricing page description
10. Pricing page title
11. Property name
12. Room rate description
13. Room type
14. Season end date
15. Season start date

OPTIONAL — ask for these but proceed if I skip them:
1. Any additional details not covered above

Once I provide the information, output a complete JSON-LD script block
ready to paste into the <head> of my HTML page.

Output requirements:
- Valid JSON-LD wrapped in <script type="application/ld+json"> tags
- schema.org vocabulary only
- Every AIFDS-required field for this industry and page type included
- Include this data attribute on the script tag: data-aifds="aifds.org Lodging Business Pricing"
- No placeholder text — omit missing optional fields rather than fill with examples
- After the code block, list any optional fields skipped that would strengthen AI citation

Generated schema follows the AIFDS framework. Fields were selected based on research into AI crawler behavior. View the research at minnesota.ai

Template — fill in your values

Copy the template below and replace every YOUR_* value with your own data. Add or remove Offer nodes to match your actual rate structure and packages.

JSON-LD · Pricing Page
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://YOUR_DOMAIN.com/pricing/",
      "name": "YOUR_PRICING_PAGE_TITLE",
      "description": "YOUR_PRICING_PAGE_DESCRIPTION",
      "url": "https://YOUR_DOMAIN.com/pricing/",
      "isPartOf": {
        "@id": "https://YOUR_DOMAIN.com/#website"
      },
      "breadcrumb": {
        "@id": "https://YOUR_DOMAIN.com/pricing/#breadcrumb"
      }
    },
    {
      "@type": "LodgingBusiness",
      "@id": "https://YOUR_DOMAIN.com/#property",
      "name": "YOUR_PROPERTY_NAME",
      "url": "https://YOUR_DOMAIN.com",
      "priceRange": "YOUR_PRICE_RANGE",
      "hasOfferCatalog": {
        "@type": "OfferCatalog",
        "name": "Room Rates and Packages",
        "itemListElement": [
          {
            "@type": "Offer",
            "name": "YOUR_ROOM_TYPE_1",
            "description": "YOUR_ROOM_RATE_DESCRIPTION_1",
            "price": "YOUR_NIGHTLY_RATE_1",
            "priceCurrency": "USD",
            "unitCode": "DAY",
            "validFrom": "YOUR_SEASON_START_DATE",
            "validThrough": "YOUR_SEASON_END_DATE"
          },
          {
            "@type": "Offer",
            "name": "YOUR_ROOM_TYPE_2",
            "description": "YOUR_ROOM_RATE_DESCRIPTION_2",
            "price": "YOUR_NIGHTLY_RATE_2",
            "priceCurrency": "USD",
            "unitCode": "DAY"
          },
          {
            "@type": "Offer",
            "name": "YOUR_PACKAGE_NAME",
            "description": "YOUR_PACKAGE_DESCRIPTION (e.g., includes breakfast, spa credit, late checkout)",
            "price": "YOUR_PACKAGE_PRICE",
            "priceCurrency": "USD",
            "unitCode": "DAY"
          }
        ]
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://YOUR_DOMAIN.com/pricing/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://YOUR_DOMAIN.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Pricing",
          "item": "https://YOUR_DOMAIN.com/pricing/"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "YOUR_FAQ_QUESTION_1",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_FAQ_ANSWER_1"
          }
        },
        {
          "@type": "Question",
          "name": "YOUR_FAQ_QUESTION_2",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_FAQ_ANSWER_2"
          }
        },
        {
          "@type": "Question",
          "name": "YOUR_FAQ_QUESTION_3",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_FAQ_ANSWER_3"
          }
        }
      ]
    }
  ]
}

Frequently asked questions

How do I represent seasonal pricing in structured data?

Create separate Offer nodes for each season with validFrom and validThrough dates. For example, a "Summer King Room" offer valid from June 1 to August 31 at $249/night, and a "Winter King Room" offer from November 1 to March 31 at $169/night. This gives AI precise data for time-specific rate queries.

Should I publish exact rates or use a range?

Either works. If you publish a specific rate, use "price": "199" with priceCurrency. If you prefer a range, use "priceRange": "$149-$399/night" on the property node. Specific numbers give AI more precise data, but a range is better than nothing. The key is giving AI something structured rather than burying rates behind a booking widget.

How do I structure package deals that include extras?

Create an Offer with a descriptive name like "Romantic Getaway Package" and use the description field to list everything included: "Two nights in a king suite, daily breakfast for two, one spa credit, and late checkout." AI can then match this package to queries like "hotel packages with spa" or "romantic weekend deals."

Test your structured data

Paste your URL and see exactly what AI systems can read from your site.

Open Validator →