MonetaryAmount
MonetaryAmount is a StructuredValue type for any monetary value or range: a salary, a fee, a deposit, a balance threshold, an incentive amount. It has 6 properties of its own: value (single amount), minValue/maxValue (range bounds), currency (ISO 4217 code), validFrom/validThrough (validity dates). MonetaryAmount appears across schema.org wherever a monetary figure needs structured representation, especially in JobPosting (baseSalary), FinancialIncentive (incentivizedItem rules), and Order/Invoice (totals).
The type hierarchy is Thing → Intangible → StructuredValue → MonetaryAmount. Use it whenever a price or amount needs unambiguous machine-readable expression. The currency property is the most common omission and the most consequential: a value of "5000" with no currency could be USD, EUR, JPY, or anything else.
Full example of schema.org/MonetaryAmount 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": "MonetaryAmount",
"currency": "USD",
"minValue": 95000,
"maxValue": 135000,
"validFrom": "2026-01-01",
"validThrough": "2026-12-31"
}
</script>value vs minValue/maxValue
Use value for a single amount: a $50 fee, a $1,200 monthly rent. Use minValue and maxValue together for a range: a salary range of $80K-$120K, a deposit between $500 and $2,000. Do not mix: setting both value and a min/max range creates ambiguity. Pick one pattern.
currency
currency takes a 3-letter ISO 4217 code: "USD", "EUR", "GBP", "DKK", "JPY". Always uppercase. Without it, the value is meaningless to international consumers and search engines. Even for single-country sites, include the currency for clarity.
validFrom and validThrough
validFrom and validThrough mark the validity period of the amount. Useful for time-limited prices, promotional rates, or salary data tied to a specific year. Both take Date or DateTime in ISO 8601 format. For permanent values, omit them.
Minimal valid version
The smallest markup that still produces a valid MonetaryAmount 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": "MonetaryAmount",
"currency": "USD",
"value": 95000
}
</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 docsUsed across other rich results (JobPosting, Product, FinancialIncentive)
Common MonetaryAmount 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
Missing currency
Wrong"value": 5000 (no currency)Right"value": 5000, "currency": "USD"Without currency, the amount is ambiguous. 5000 could be USD ($5,000), JPY (~$32), EUR, GBP, or anything else. Always include currency as a 3-letter ISO 4217 code.
- 02
Mixing value and min/max
Wrong"value": 100000, "minValue": 80000, "maxValue": 120000RightUse either value (single amount) OR minValue+maxValue (range), not bothvalue is a single point; minValue+maxValue is a range. Setting all three creates conflicting signals. Pick the pattern that matches your data: single price uses value; salary or deposit ranges use min/max.
- 03
currency as currency symbol
Wrong"currency": "$"Right"currency": "USD"currency takes the 3-letter ISO 4217 code, not the symbol. "$" could mean USD, CAD, AUD, MXN, or any of dozens of currencies. Use the standardized code.
Schema properties in this example
About the example data
A salary range used in a fictional JobPosting at Xoo Code Inc. for a Senior Structured Data Engineer role.
Comments
Loading comments...