PostalAddress
PostalAddress is how schema.org represents a physical mailing address. It breaks an address into machine-readable fields: street, city, region, postal code, country. Google uses it to place businesses on Maps, populate knowledge panels, and match local search queries to physical locations.
PostalAddress almost never appears alone. It nests inside Organization, LocalBusiness, Event, and Person via the address property. Getting the structure right here means every parent type benefits.
Full example of schema.org/PostalAddress 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": "PostalAddress",
"@id": "https://xoocode.com/shop/dunmore-1290#address",
"streetAddress": "1290 O'Brien Street",
"addressLocality": "Dunmore",
"addressRegion": "PA",
"postalCode": "18512",
"addressCountry": "US",
"name": "Xoo Code Shop Dunmore"
}
</script>addressCountry formats
Google accepts either a two-letter ISO 3166-1 alpha-2 code ("US", "CA", "SE") or the full country name ("United States"). The ISO code is preferred because it is unambiguous. "US" always means United States. "America" could mean several things.
addressRegion and addressLocality
addressRegion is the state, province, or administrative region. addressLocality is the city or town. Do not put the city in addressRegion. For countries without states or provinces (like Singapore), omit addressRegion and use addressLocality for the city.
postOfficeBoxNumber
If the address uses a PO Box, use postOfficeBoxNumber as a separate field. Do not put "PO Box 123" inside streetAddress. Keeping them separate lets search engines distinguish physical locations from mailing-only addresses.
Minimal valid version
The smallest markup that still produces a valid PostalAddress 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": "PostalAddress",
"streetAddress": "1290 O'Brien Street",
"addressLocality": "Dunmore",
"addressCountry": "US"
}
</script>Google rich results this unlocks
PostalAddress is a structural type. It does not produce a rich result on its own.
Its value comes from combining it with a primary type whose markup earns a rich result (Article, Product, Event, and so on). PostalAddress becomes the trunk that the primary type branches off viamainEntityorbreadcrumb. Include it on every page as the backbone of your markup.
Common PostalAddress 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
Full address crammed into streetAddress
Wrong"streetAddress": "1290 O'Brien Street, Dunmore, PA 18512"Right"streetAddress": "1290 O'Brien Street"streetAddress should contain only the street-level portion (house number and street name). City, state, and postal code each have their own field. Cramming everything into streetAddress defeats the purpose of structured data because search engines cannot parse the individual components reliably.
- 02
Country name instead of ISO code
Wrong"addressCountry": "United States of America"Right"addressCountry": "US"While Google accepts full country names, the two-letter ISO 3166-1 alpha-2 code is preferred because it is unambiguous. "US" always means United States. Full names can have spelling variations, translations, and abbreviations that parsers may not recognize.
- 03
City in addressRegion instead of addressLocality
Wrong"addressRegion": "Dunmore"Right"addressLocality": "Dunmore"addressRegion is for the state, province, or top-level administrative division. addressLocality is for the city or town. Swapping them causes Google to misplace the business in search results and Maps.
- 04
PO Box inside streetAddress
Wrong"streetAddress": "PO Box 123"Right"postOfficeBoxNumber": "123"postOfficeBoxNumber is a dedicated field for PO Boxes. Putting "PO Box" inside streetAddress makes the address look like a physical location when it is a mailing address. Google may show the wrong pin location on Maps.
Schema properties in this example
About the example data
This is the address for Xoo Code Shop Dunmore, the fictional screen-printing retail outlet at 1290 O'Brien Street in Dunmore, Pennsylvania. The same address appears as a nested object inside the LocalBusiness and Organization examples. Here it is shown standalone so you can see every PostalAddress property without the surrounding entity.
Comments
Loading comments...