QAPage schema marks up a page where a single question is asked and the community submits multiple answers — a forum thread, a support page, or a product Q&A section. It is not the same as FAQ schema, and using the wrong one is a common mistake. Use QAPage when users vote on competing answers to one question; use FAQPage when you, the site owner, publish a list of questions with your own single authoritative answer. Getting this distinction right helps both search engines and AI assistants understand and cite your content correctly.

QAPage vs FAQPage: the critical difference

These two schema types look similar but describe opposite situations, and search engines enforce the difference.

If your page has a comment-style Q&A where visitors answer each other, QAPage is correct. If it is your own polished list of questions and answers, FAQPage is correct. Marking a community thread as FAQPage, or a self-authored FAQ as QAPage, misrepresents the content and can trigger manual actions. For the mechanics of writing valid markup, see our guide to FAQ and How-To schema.

What a QAPage needs to include

A valid QAPage centers on a Question entity that carries the question text, the number of answers, and two answer roles. The acceptedAnswer is the answer the community or the original asker marked as correct. The suggestedAnswer entries are the other submitted answers. Each answer should include its own text, its author, an upvote count, and the date it was posted.

The key rule: the markup must reflect what a human sees on the page. If you claim an accepted answer in the schema, that answer must be visibly marked as accepted on the page. If you report 40 upvotes, the page must show them. Search engines cross-check the structured data against the rendered content, and mismatches get the markup ignored or penalized. Never generate QAPage markup for a page that does not actually host a real question with real answers.

Why QAPage content is valuable for AI answers

AI assistants assemble answers from content that reads as direct, self-contained responses to specific questions — and a well-structured Q&A thread is exactly that. Each answer is a compact, standalone chunk tied to an explicit question, which is close to the ideal format for retrieval. When an assistant is building a response to "how do I fix X," a page that already contains that question with a clear accepted answer is easy to lift and cite.

QAPage markup makes this even easier by labeling which text is the question, which answer was accepted, and how the community rated the alternatives. That is strong signal about which answer is authoritative. It pairs naturally with the way AI systems chunk and retrieve content — see our guide to how AI chunks your content for retrieval — because each answer is already a self-contained unit. Genuine, well-moderated community answers also carry experience signals that AI and search increasingly reward.

Implementation and pitfalls

Add the QAPage markup as JSON-LD in the head or body of the thread page, one QAPage per question page. Do not put multiple unrelated questions under a single QAPage — if you have a list of many separate questions, each belongs on its own URL, or the set belongs in FAQPage format. Keep the answer text in the markup identical to what is shown, including the accepted answer.

The biggest pitfalls are inflating counts (claiming upvotes or answers that are not visible), marking up moderated-away or spam answers, and applying QAPage to thin pages with a single low-quality reply. Google expects QAPage pages to have real community engagement; a page with one throwaway answer is a poor candidate. Validate the output before shipping, as described in our guide to structured data and JSON-LD, and confirm it parses without errors.

QAPage markup only helps if it validates cleanly and matches your visible content — a single mismatch and search engines drop it. Run the CheckMy.site scanner to check your structured data, confirm your Q&A pages are crawlable, and see exactly how AI assistants read them.