XooCode(){

Question

Question is the node for a user-authored or editorial question, sitting under Comment. It's how Stack Overflow marks up a question-and-answer thread, how Google's Q&A rich result identifies the question, and how a quiz LearningResource marks up its items.

Full example of schema.org/Question json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/Question
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "How do I nest OfferShippingDetails inside an AggregateOffer?",
    "text": "I have an AggregateOffer covering 12 seller offers across US and EU. Does shippingDetails live on the AggregateOffer, each child Offer, or both?",
    "author": { "@type": "Person", "name": "Adelaide Voss" },
    "dateCreated": "2026-02-18",
    "upvoteCount": 14,
    "answerCount": 3,
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Put shippingDetails on each child Offer. AggregateOffer is a price-range summary; per-seller shipping rates differ, so they belong on the specific Offer a consumer would redirect to.",
      "author": { "@type": "Person", "name": "Sean Dunmore" },
      "dateCreated": "2026-02-18",
      "upvoteCount": 22,
      "url": "https://xooforum.example/q/1042#accepted"
    },
    "suggestedAnswer": [
      {
        "@type": "Answer",
        "text": "You can also put a fallback shippingDetails on AggregateOffer if every child offer ships under the same terms — consumers will fall back when the child is missing.",
        "author": { "@type": "Person", "name": "Roman Halliwell" },
        "upvoteCount": 3
      },
      {
        "@type": "Answer",
        "text": "Shop merchant feeds usually duplicate both — agent-based consumers read each independently.",
        "upvoteCount": 1
      }
    ]
  }
}
</script>

Direct properties (5)

  • acceptedAnswer: one Answer (or ItemList of Answers when multiple are canonical). This is the green-check answer on SO, the top-voted answer on community Q&A, or the editorially-approved answer on a FAQ.
  • suggestedAnswer: zero or more Answer nodes that are proposed but not accepted. Google shows acceptedAnswer; suggestedAnswer is informational.
  • answerCount: total Answer count (may exceed suggestedAnswer.length if some are truncated from markup).
  • eduQuestionType: free text for learning-resource typing (Multiple choice, Flashcard, True/False, Short answer).
  • parentItem: the Comment or CreativeWork the question belongs to (for threading).

Inherited from Comment: text, author, upvoteCount / downvoteCount, dateCreated. Always populate name (the question itself) plus text (the body text if different).

Q&A rich result requirements

Google's Q&A rich result requires a QAPage with exactly one Question as mainEntity. The Question must have at least one acceptedAnswer or suggestedAnswer. FAQPage uses the same Question shape but allows any number of Questions and no single mainEntity.

Minimal valid version

The smallest markup that still produces a valid Question entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/Question (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Question",
  "name": "How do I nest OfferShippingDetails inside an AggregateOffer?",
  "acceptedAnswer": {
    "@type": "Answer",
    "text": "Put shippingDetails on each child Offer."
  }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common Question mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Question with no acceptedAnswer or suggestedAnswer

    Wrong
    Question node with just name + text
    Right
    Include at least one Answer (acceptedAnswer or suggestedAnswer)

    Google suppresses the Q&A rich result entirely when no answer is attached.

  2. 02

    Multiple acceptedAnswer entries

    Wrong
    "acceptedAnswer": [answer1, answer2]
    Right
    Exactly one Answer (or wrap multiple as a single ItemList)

    A Question has at most one accepted answer by design. Arrays are rejected.

  3. 03

    Question used for FAQ item

    Wrong
    Question + QAPage for every FAQ entry
    Right
    Multiple Questions under FAQPage.mainEntity for FAQs

    QAPage is user Q&A (one canonical question); FAQPage is editorial and carries many Questions. The shapes and eligibility rules differ.

Also mentioned in 3 other examples

Question also appears in AskAction, FAQPage, and QAPage. See the full Question schema page for every reference.

About the example data

A Stack Overflow-style Q&A thread on the Xoo Developer Forum: "How do I nest OfferShippingDetails inside an AggregateOffer?" with the accepted answer from Sean Dunmore plus two suggested alternates.

Comments

Loading comments...

Leave a comment