Setting up FAQ Schema Markup for a Website
FAQPage Schema allows Google to display questions and answers directly in search results as an expandable accordion. Takes additional space in the results, increases page visibility.
FAQPage Markup
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do I return an item?",
"acceptedAnswer": {
"@type": "Answer",
"text": "To process a return, go to your account, select an order, and click 'Return Item'. The return is processed within 3-5 business days."
}
},
{
"@type": "Question",
"name": "What payment methods are available?",
"acceptedAnswer": {
"@type": "Answer",
"text": "We accept Visa, MasterCard, and cash on delivery."
}
}
]
}
Implementation in Laravel
// FAQ section on page
$faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => $faqs->map(fn($faq) => [
'@type' => 'Question',
'name' => $faq->question,
'acceptedAnswer' => [
'@type' => 'Answer',
'text' => strip_tags($faq->answer)
]
])->toArray()
];
Google Requirements
- Questions and answers must be visible to the user on the page (not just in JSON-LD)
- Answer should not contain HTML markup in the
textfield (plain text only) - Maximum 10 questions for display in rich result
- Page should be a real FAQ page, not used for advertising
Setup timeline: a few hours.







