Drug
Drug is a Product subtype (also inheriting from MedicalEntity via Substance) for pharmaceutical products: prescription medications, over-the-counter drugs, and biologics. With 29 properties of its own, it is the second most property-rich type after Vehicle. The properties cover active ingredients, dosage forms, warnings, interactions, pregnancy categories, and legal/prescription status.
The type hierarchy is Thing → Product → Drug (and simultaneously Thing → MedicalEntity → Substance → Drug). Google reads Drug markup for health knowledge panels and medication search features. Note: Google's health content policies apply. Drug markup does not bypass medical content review, and Google may suppress rich results for health topics regardless of markup quality.
Full example of schema.org/Drug json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@id": "https://xoopharma.dk/products/xooped-suspension#drug",
"@type": "Drug",
"name": "XooPed Oral Suspension",
"url": "https://xoopharma.dk/products/xooped-suspension",
"description": "Pediatric ibuprofen oral suspension for fever and pain relief in children aged 3 months to 12 years. Berry-flavored, 100mg/5ml concentration.",
"image": "https://xoopharma.dk/products/xooped-suspension/package-16x9.jpg",
"activeIngredient": "Ibuprofen",
"nonProprietaryName": "Ibuprofen",
"proprietaryName": "XooPed",
"dosageForm": "Oral Suspension",
"drugUnit": "5 ml",
"availableStrength": {
"@type": "DrugStrength",
"activeIngredient": "Ibuprofen",
"strengthValue": "100",
"strengthUnit": "mg"
},
"administrationRoute": "Oral",
"prescriptionStatus": "https://schema.org/OTC",
"isAvailableGenerically": true,
"pregnancyWarning": "Not recommended during the third trimester of pregnancy. Consult a physician before use during pregnancy.",
"breastfeedingWarning": "Passes into breast milk in small amounts. Consult a physician.",
"alcoholWarning": "Avoid alcohol while taking this medication.",
"foodWarning": "Take with food or milk to reduce stomach irritation.",
"interactingDrug": {
"@type": "Drug",
"name": "Aspirin",
"nonProprietaryName": "Acetylsalicylic acid"
},
"manufacturer": {
"@type": "Organization",
"name": "Xoo Pharma ApS",
"url": "https://xoopharma.dk"
},
"offers": {
"@type": "Offer",
"price": "89.00",
"priceCurrency": "DKK",
"availability": "https://schema.org/InStock",
"url": "https://xoopharma.dk/products/xooped-suspension/buy"
}
}
</script>activeIngredient and nonProprietaryName
activeIngredient is the chemical compound: "Ibuprofen", "Acetaminophen", "Amoxicillin". nonProprietaryName is the generic name (often the same as the active ingredient for single-compound drugs). proprietaryName is the brand name. Google uses all three to match the drug to knowledge graph entities and show the "Generic name" line in health panels.
dosageForm and doseSchedule
dosageForm is the physical form: "Tablet", "Capsule", "Oral Suspension", "Injectable Solution". doseSchedule takes a DoseSchedule object describing recommended dosing (frequency, dose per administration). These help Google and health aggregators match the drug to dosage-specific queries.
prescriptionStatus
prescriptionStatus takes a DrugPrescriptionStatus enum: OTC (over-the-counter) or PrescriptionOnly. Use the full schema.org URL. This tells search engines whether the drug requires a prescription, which affects how it appears in shopping and health results.
pregnancyCategory and warnings
pregnancyCategory takes a DrugPregnancyCategory enum for FDA pregnancy risk categories. pregnancyWarning, breastfeedingWarning, alcoholWarning, and foodWarning are text strings for specific warnings. Google may display these in health panels. Be accurate. Incorrect medical information in structured data can cause real harm.
Minimal valid version
The smallest markup that still produces a valid Drug 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.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Drug",
"name": "XooPed Oral Suspension",
"activeIngredient": "Ibuprofen",
"nonProprietaryName": "Ibuprofen",
"dosageForm": "Oral Suspension",
"prescriptionStatus": "https://schema.org/OTC",
"image": "https://xoopharma.dk/products/xooped-suspension/package-16x9.jpg",
"description": "Pediatric ibuprofen oral suspension for fever and pain relief in children."
}
</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.
- Google docsHealth knowledge panel (indirect)
Common Drug 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.
- 01
prescriptionStatus as a plain string
Wrong"prescriptionStatus": "Over the counter"Right"prescriptionStatus": "https://schema.org/OTC"prescriptionStatus takes a DrugPrescriptionStatus enum value as a full schema.org URL. The values are OTC and PrescriptionOnly. Plain text descriptions are not machine-parseable.
- 02
Using Product instead of Drug for a medication
Wrong"@type": "Product" for a pharmaceutical productRight"@type": "Drug"Drug gives you 29 properties that Product does not have: activeIngredient, dosageForm, pregnancyCategory, interactingDrug, prescriptionStatus. Without the Drug type, Google cannot connect the listing to its health knowledge graph.
- 03
Missing activeIngredient
WrongDrug with proprietaryName but no activeIngredient or nonProprietaryNameRight"activeIngredient": "Ibuprofen", "nonProprietaryName": "Ibuprofen"activeIngredient and nonProprietaryName are how Google matches a brand-name drug to its generic equivalent. Without them, the drug cannot be connected to the broader medication knowledge graph. Users searching for the generic name will not find your listing.
- 04
Inaccurate medical warnings in structured data
WrongCopy-pasting approximate warnings or omitting known interactionsRightUse exact text from the approved product labelingDrug markup warnings (pregnancyWarning, alcoholWarning, interactingDrug) may appear in health panels. Inaccurate medical information in structured data can cause real harm. Use the exact text from the drug's approved labeling. If in doubt, omit the warning property rather than guess.
Schema properties in this example
About the example data
XooPed is a fictional pediatric fever reducer inspired by Jane Xoo's clinical work. It is manufactured by a fictional pharmaceutical company and sold at pharmacies. The interactingDrug property shows how to declare drug interactions.
Comments
Loading comments...