EmployeeRole
EmployeeRole is an OrganizationRole subtype for describing an employee's role inside an organisation, carrying salary, title, and tenure. It adds 2 direct properties: baseSalary (MonetaryAmount, Number, or PriceSpecification) and salaryCurrency (ISO 4217 code).
Use EmployeeRole to wrap a Person inside Organization.employee when you want to attach role-scoped data (title, salary, dates). The pattern is:
Organization.employee = EmployeeRole { employee: Person, roleName, startDate, endDate, baseSalary }Full example of schema.org/EmployeeRole json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Xoo Code",
"employee": {
"@type": "EmployeeRole",
"roleName": "Staff Reporter",
"startDate": "2023-07-15",
"baseSalary": { "@type": "MonetaryAmount", "value": 78000, "currency": "USD" },
"salaryCurrency": "USD",
"employee": {
"@type": "Person",
"name": "Priya Chen",
"jobTitle": "Staff Reporter",
"worksFor": { "@type": "Organization", "name": "Xoo Code" }
}
}
}
</script>Minimal valid version
The smallest markup that still produces a valid EmployeeRole 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": "EmployeeRole",
"roleName": "Staff Reporter",
"employee": { "@type": "Person", "name": "Priya Chen" },
"baseSalary": { "@type": "MonetaryAmount", "value": 78000, "currency": "USD" }
}
</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 docsNo dedicated rich result (used by HR / knowledge-graph consumers)
Common EmployeeRole 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
Attaching salary directly to Person
WrongPerson.baseSalary on an individualRightEmployeeRole.baseSalary inside Organization.employeeSalary is role-scoped, not person-scoped. A person can hold different roles with different salaries. EmployeeRole carries that context.
- 02
salaryCurrency without matching MonetaryAmount.currency
WrongbaseSalary.currency = 'USD' but salaryCurrency = 'EUR'RightKeep the two currency signals consistentInconsistent currencies confuse HR consumers and knowledge graphs.
Schema properties in this example
About the example data
Priya Chen's current role as a Staff Reporter at Xoo Code, with salary and tenure information.
Comments
Loading comments...