FAQPage schema
A specific schema.org type that declares a page contains a list of question-and-answer pairs, optimized for structured ingestion by search and AI systems.
The short answer
FAQPage schema is a schema.org type declaring that a page carries question-and-answer pairs written by the site owner. It wraps a mainEntity array of Question nodes, each holding one acceptedAnswer. Since Google narrowed FAQ rich results in August 2023, its value is machine extraction by language models rather than search-listing decoration.
FAQPage versus QAPage, and why the distinction is enforced
FAQPage declares authorship. It says the site owner wrote both the question and its single authoritative answer, which is why the structure allows exactly one acceptedAnswer per Question and no alternatives. That is the correct type for a support page, a pricing FAQ, or a documentation section where you are the authority on what the answer is. It is the wrong type the moment more than one answer is legitimate.
QAPage is the type it gets substituted for, and it describes a genuinely different object: one user-submitted question with community answers competing beneath it. It supports suggestedAnswer alongside acceptedAnswer, plus upvote counts, because the whole point is that several answers exist and the crowd is ranking them. A forum thread is a QAPage. Your pricing page is not, no matter how many questions it lists. Using QAPage for owner-authored content misrepresents where the answer came from, and using FAQPage for a forum thread claims an authority the page does not have.
The other thing to unlearn is that FAQPage is a rich-result play. It was, from Google's 2019 rollout until August 2023, when FAQ rich results were narrowed to well-known authoritative government and health sites — the same period in which HowTo lost its rich result entirely. For everyone else the visual reward is gone and the markup still matters, because a language model parsing a page benefits from explicit question-answer pairs whether or not Google decorates the listing. The type outlived its own SERP feature.
How FAQPage implementation is graded
FAQPage carries four points in the AIRank rubric, the largest single line item in schema coverage, and the check is scoped rather than global: it asks whether at least one high-intent page carries valid FAQPage markup. High-intent means pricing, comparison, integration and product pages — the ones a buyer reads while deciding. Marking up a contact page earns nothing, because nobody asks a model a question the contact page answers.
Three quality gates sit beneath the point. Visible parity is binary and non-negotiable: every question and every answer in the JSON must appear in the rendered HTML, because Google's structured-data policies require marked-up content to be visible and this is the type where hidden content is most tempting. Answer length wants to land between forty and a hundred and twenty words, the same window that governs extraction generally. And the block must validate cleanly, since a malformed Question node discards the entire FAQPage object rather than just that entry.
Counting well
Measure Question nodes against questions people actually ask, not against a target count. Six real buyer questions outperform fifteen invented ones, and the invented ones dilute the page for both readers and retrieval.
A worked example
Below is a two-question FAQPage block as it would ship on a pricing page. Note that the answers are prose written to stand alone rather than pointers back into the page — an answer reading "see the table above" is technically valid markup and useless once extracted.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How often does a connected site get re-scanned?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Connected sites are re-scanned on a schedule set by your plan, and you can trigger a manual re-scan at any time from the site settings page. Each scan re-runs the full 47-point audit and a fresh citation sweep, so the score and the tracker move together rather than drifting apart."
}
},
{
"@type": "Question",
"name": "Do I need to install a plugin to use AIRank?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. Scanning and citation tracking work against any public URL with no code installed. The WordPress plugin and Shopify app are only required for automatic fix deployment, which writes schema and llms.txt changes directly to the site instead of handing you a diff to apply yourself."
}
}
]
}
</script>Three things make this block worth shipping. The question strings are phrased the way someone types them, not the way a marketer would title a section — "do I need to install a plugin" rather than "Flexible deployment options". Each answer is a complete capsule in the forty-to-a-hundred-and-twenty-word window, so it survives being lifted out. And both pairs exist verbatim in the visible page below the fold, which is what keeps the markup compliant rather than merely valid.
Three ways FAQPage markup goes wrong
- The invisible-answer trap. A plugin generates FAQPage JSON from a spreadsheet of questions that never render on the page, or the answers sit inside collapsed accordions that ship no text in the initial HTML. It validates, so nobody notices. Google's structured-data policies require the marked-up content to be visible, which makes this a manual-action risk rather than an optimisation. The fix is a parity assertion in CI: every string in the JSON must be findable in the rendered HTML of the same URL.
- The marketing question. The block asks "Why choose our platform?" and "What makes us different?", which are headings wearing question marks. No buyer types them, so they match nothing, and the answers beneath them are positioning rather than information. The fix is to source questions from support tickets, sales calls and search console queries, then keep the buyer's own phrasing intact even where it is clumsier than what a copywriter would write.
- The sitewide FAQ block. Someone adds the same five-question block to a template, so two hundred URLs now emit identical FAQPage markup. Every page competes with every other for the same question, and the near-duplicate structure is exactly the signal that gets a cluster of pages dropped from an index. The fix is to scope FAQ blocks to the pages where those specific questions are the point, and let each page carry questions nothing else on the site answers.
FAQPage among the types it is chosen against
| Term | What it optimises | How you measure it | Where it lives |
|---|---|---|---|
| FAQPage schema | Owner-authored question and single authoritative answer | Question node count, visible parity, answer length | One block on a high-intent page |
| QAPage schema | A user question with competing community answers | Accepted and suggested answers, plus vote counts | Forum and community thread templates |
| HowTo schema | An ordered procedure with steps and tools | Step coverage against the visible instructions | Step-by-step guides |
| Schema markup | Machine-readable meaning across every entity type | Type coverage per template and validation pass rate | JSON-LD blocks across the whole site |
What the table cannot show is that two of these rows share a history worth learning from. FAQPage and HowTo both lost their Google rich results in 2023, and both remain worth shipping, which is the clearest available evidence that structured data and search decoration are separable concerns. The reason to write FAQPage markup today is that it hands a parser pre-segmented question-answer pairs at zero inference cost. That benefit is unaffected by what Google chooses to render, and it is why the type is still the largest single line item in schema coverage.
In AIRank
AIRank flags every page that has a buyer-intent question block but no FAQPage schema, suggests exact markup, and can inject the schema via the WordPress or Shopify integrations.
- Schema Markup
Structured data embedded in a page (usually as JSON-LD) that describes what the page is about in a machine-readable vocabulary defined at schema.org.
- AI Score
AIRank's 0–100 grade for how likely a site is to be cited by a language model, calculated from 47 weighted checks across four pillars.
- Generative Engine Optimization
The practice of making a website more likely to be cited by AI answer engines (ChatGPT, Claude, Perplexity, Google AI Mode) rather than simply ranked on a traditional search results page.
Should I use FAQPage or QAPage?
FAQPage if you wrote both the question and the one correct answer — support pages, pricing FAQs, documentation. QAPage if the page is a user-submitted question with community answers competing beneath it, which is why that type supports suggestedAnswer and vote counts. The test is whether multiple answers are legitimately in contention. If they are not, FAQPage is correct and QAPage misrepresents where the answer came from.
Is FAQ schema still worth adding after Google restricted rich results?
Yes, for a different reason than before. Google narrowed FAQ rich results to well-known government and health sites in August 2023, so most sites get no visual treatment from it. The markup still hands any parser explicit, pre-segmented question-answer pairs, which is exactly the shape a language model wants to extract. It moved from a SERP-decoration play to a machine-extraction play, and it is still the biggest single schema line item in the rubric.
How many questions should a FAQPage block contain?
As many as the page genuinely answers, which is usually four to eight. The number is not the metric — question quality is. Six questions taken verbatim from support tickets outperform fifteen invented to fill the block, because the invented ones match nothing anyone types and dilute the page's focus for both readers and retrieval. Add a question when you have a real one, and not to hit a count.
Can the FAQ answers be hidden in an accordion?
Only if the text ships in the initial HTML and is merely collapsed visually. Google's structured-data policies require marked-up content to be visible, and content injected into the DOM only after a click is not present for parsers that do not execute or interact with scripts. Render the answers server-side and collapse them with CSS if you want the compact layout. Verify by fetching the raw HTML and searching for the answer strings.
Does the FAQ text have to match the schema exactly?
Yes. The visible answer and the string in the JSON should be the same text, not a paraphrase, because a mismatch is what a parity check flags and what a manual review treats as misrepresentation. The safest implementation generates both from a single source — one data structure that renders the visible block and serialises the JSON-LD — so there is no way for the two to drift when someone edits one of them.
Written by
The AIRank Editorial Team
Research & editorial, AIRank
The AIRank editorial team runs the 47-point scanner, the Observer pings, and the GEO research programme every week. Writing is reviewed by the core engineers who build the Injector, Blaster, and Surgeon agents.
Last reviewed
About the team →