What Is QAPage Schema? The Complete Guide (2026)

Saar Twito8 min read
Saar Twito
Saar TwitoFounder & SEO Engineer

Hi, I'm Saar - a software engineer, SEO specialist, and lecturer who loves building tools and teaching tech.

View author profile →

What Is QAPage Schema?

QAPage schema is a type of structured data — defined in the Schema.org QAPage vocabulary — that marks up pages where a single question is asked and users can submit their own answers. It is specifically designed for platforms like StackOverflow, Quora, Reddit's "Ask Me Anything" threads, and similar community Q&A formats. When correctly implemented, QAPage schema enables Google to display the question and top answer(s) as rich results directly in search.

TL;DR
  • QAPage is for user-submitted Q&A only — one question per page, answers submitted by users
  • Required: mainEntity (Question) with name, answerCount, and at least one acceptedAnswer or suggestedAnswer (each with text)
  • Unlike FAQPage: both acceptedAnswer and suggestedAnswer are valid
  • Answer.url (anchor link to the answer) is strongly recommended
  • Do NOT use QAPage for FAQ pages, blog posts, how-to guides, or editorial content

QAPage vs. FAQPage: Which Should You Use?

These two schema types are commonly confused. The distinction is critical — using the wrong one will either prevent rich results or result in a guideline violation.

FeatureQAPageFAQPage
Questions per pageOneMultiple
Who writes answersCommunity usersThe site owner/publisher
Answer typesacceptedAnswer and/or suggestedAnsweracceptedAnswer only (not suggestedAnswer)
Users can submit answersYes — requiredNo
Google rich result status (2026)ActiveDeprecated May 2026
Use for blog posts / how-to guidesNoNo

When Not to Use QAPage Schema

Google's documentation specifies that QAPage is only intended for pages where a single question is asked and the community can submit their own answers. Do not use it for:

  • FAQ pages where a publisher provides all answers (use FAQPage schema instead)
  • Blog posts or articles written in Q&A format by the author
  • How-to guides structured as questions and steps
  • Essay or opinion pages written as a single question with an authored answer
  • Pages where users cannot submit their own answers

Greadme always issues a content-guideline warning reminding you that QAPage must be used only for genuine user-submitted Q&A formats.

Required Properties

PropertyGreadme rule
mainEntityError if missing. Must be a Question object
mainEntity.nameError if missing. The full text of the question. Greadme warns if under 10 characters or not phrased as a question
mainEntity.answerCountError if missing or not a number. Can be 0 for unanswered questions (not eligible for rich results)
mainEntity.acceptedAnswer or mainEntity.suggestedAnswerError if both are missing. At least one answer required for rich result eligibility
Answer.textError if missing in any Answer object. Must be at least 20 characters

acceptedAnswer vs. suggestedAnswer

QAPage supports two answer types — a key difference from FAQPage:

TypeMeaningWhen to use
acceptedAnswerAn answer explicitly marked as correct by the question author or moderatorStackOverflow-style platforms with an accepted answer checkmark
suggestedAnswerA community-contributed answer that may be helpful but is not verifiedPlatforms where any upvoted answer qualifies, or where no accepted answer exists

You can include both types simultaneously. A page might have one acceptedAnswer and multiple suggestedAnswer objects representing top community responses. Google may display any of them in search results.

Recommended Properties

PropertyNotes
mainEntity.textThe long form of the question (full body text, as opposed to the short title in name)
mainEntity.authorPerson or Organization who asked the question. Include name and url (profile page)
mainEntity.datePublishedISO 8601 datetime when the question was posted
mainEntity.upvoteCountTotal vote count (upvotes minus downvotes) as a number
Answer.urlStrongly recommended. An anchor URL pointing directly to this answer (e.g., https://example.com/q/123#answer-456)
Answer.authorPerson or Organization who wrote the answer, with name and url
Answer.datePublishedISO 8601 datetime when the answer was submitted
Answer.upvoteCountTotal vote count for this answer as a number

QAPage Schema Code Example

A complete QAPage with one accepted answer and one suggested answer:

{
  "@context": "https://schema.org",
  "@type": "QAPage",
  "mainEntity": {
    "@type": "Question",
    "name": "How do I center a div in CSS?",
    "text": "I've tried margin: auto but it doesn't always work. What's the modern approach?",
    "answerCount": 14,
    "upvoteCount": 382,
    "datePublished": "2026-03-01T08:00:00+00:00",
    "author": {
      "@type": "Person",
      "name": "css_newbie",
      "url": "https://example.com/user/css_newbie"
    },
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Use flexbox: set the parent to display:flex, justify-content:center, align-items:center.",
      "url": "https://example.com/q/123#answer-1",
      "upvoteCount": 215,
      "datePublished": "2026-03-01T09:15:00+00:00",
      "author": {
        "@type": "Person",
        "name": "css_expert",
        "url": "https://example.com/user/css_expert"
      }
    },
    "suggestedAnswer": {
      "@type": "Answer",
      "text": "CSS Grid also works: place-items:center on the parent container.",
      "url": "https://example.com/q/123#answer-2",
      "upvoteCount": 87,
      "datePublished": "2026-03-01T10:00:00+00:00",
      "author": {
        "@type": "Person",
        "name": "grid_fan",
        "url": "https://example.com/user/grid_fan"
      }
    }
  }
}

Common Mistakes to Avoid

  • Using QAPage for FAQ content: If you wrote the questions and answers yourself, use FAQPage schema (or no schema if Google has deprecated the rich result for your content type). QAPage requires genuine user-submitted answers.
  • Missing answerCount: This is a required field. For unanswered questions, set "answerCount": 0 — but be aware that unanswered questions are not eligible for rich results.
  • Answer.text under 20 characters: Greadme warns on very short answer text. Answers must be complete and useful to be eligible for rich result display.
  • Missing Answer.url: Google recommends providing an anchor URL for each answer so users can navigate directly to it. Greadme warns and deducts 8 points per answer when this is missing.
  • Non-question format in mainEntity.name: The name should be phrased as a question (starting with how, what, why, when, where, who, or ending with "?"). Greadme warns when the format does not match.

How Greadme Validates QAPage Schema

Greadme validates QAPage schema with the following key deductions from a starting score of 100:

IssuePoints lost
Missing mainEntity−30 (score goes to 0)
Missing mainEntity.name−20
Missing mainEntity.answerCount−15
Missing both acceptedAnswer and suggestedAnswer−25
Missing Answer.text−20 per answer
Missing Answer.url−8 per answer
Missing mainEntity.author−8
Missing mainEntity.text−5
Missing mainEntity.datePublished−5

Frequently Asked Questions

Can a QAPage have multiple questions?

No. QAPage schema supports exactly one question per page via mainEntity. If your page contains multiple questions with user-submitted answers, either use separate pages for each question or use DiscussionForumPosting schema for the thread as a whole.

Does the question author need to be a registered user?

No. The author can be an anonymous user — just include the name they used when posting. If the platform allows anonymous posting, you can use a generic name like "Anonymous" or omit the author object (Greadme will warn but not error).

How many suggestedAnswer objects can I include?

There is no hard limit. Include all meaningful answers. Google selects which answer(s) to display based on its own relevance signals — marking up more high-quality answers gives Google more options to choose from.