On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

jobLocation

jobLocation · Required

Appears in

JobPosting

What is it?

The physical location where the employee will report to work. This is a nested Place object containing a PostalAddress with the office or worksite address. Google requires this for all non remote positions and uses it to match job listings with location based searches.

Why this matters for AEO

Location is one of the top filters in job queries. When someone asks "What developer jobs are available in Austin?" an AI engine matches jobLocation.address.addressLocality against "Austin" to surface relevant listings. Without structured location data, AI assistants cannot reliably include a job in geographic results, even if the city name appears in the description text.

What the specs say

Schema.org:Place. A (typically single) geographic location associated with the job position. schema.org/jobLocation

Google: Required. "The physical location(s) of the business where the employee will report to work (such as an office or worksite), not the location where the job was posted." Google Search Central

How to find your value

  • Office address — The physical address of the workspace
  • HR records — The "work location" field in the job requisition
  • Google Maps — Verify the exact address, city, state, and postal code
  • Multiple locations — Create separate jobLocation entries for each office

For remote positions, use jobLocationType set to "TELECOMMUTE" instead. For hybrid roles, include the physical office address in jobLocation and add jobLocationType: "TELECOMMUTE" to indicate remote flexibility.

Format and code

Type: Place (nested object with PostalAddress)

Full address:

{
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1600 Amphitheatre Pkwy",
      "addressLocality": "Mountain View",
      "addressRegion": "CA",
      "postalCode": "94043",
      "addressCountry": "US"
    }
  }
}

Minimum required fields:

Google requires at minimum addressLocality (city) and addressRegion (state/province). Including addressCountry is strongly recommended for international disambiguation.

{
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Seattle",
      "addressRegion": "WA",
      "addressCountry": "US"
    }
  }
}

Multiple locations:

{
  "jobLocation": [
    {
      "@type": "Place",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "New York",
        "addressRegion": "NY",
        "addressCountry": "US"
      }
    },
    {
      "@type": "Place",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "San Francisco",
        "addressRegion": "CA",
        "addressCountry": "US"
      }
    }
  ]
}

Invalid patterns:

"jobLocation": "Mountain View, CA"

A plain string fails validation. jobLocation must be a Place object.

"jobLocation": {
  "@type": "Place",
  "address": "1600 Amphitheatre Pkwy, Mountain View, CA"
}

The address property must be a PostalAddress object, not a string.

Webflow implementation

Static pages

Add the full location object in Page Settings > Custom Code:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Account Executive",
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "140 Broadway",
      "addressLocality": "New York",
      "addressRegion": "NY",
      "postalCode": "10005",
      "addressCountry": "US"
    }
  }
}
</script>

CMS template pages

Map individual address components from CMS fields:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "{{wf {&quot;path&quot;:&quot;city&quot;,&quot;type&quot;:&quot;PlainText&quot;} }}",
      "addressRegion": "{{wf {&quot;path&quot;:&quot;state&quot;,&quot;type&quot;:&quot;PlainText&quot;} }}",
      "addressCountry": "{{wf {&quot;path&quot;:&quot;country&quot;,&quot;type&quot;:&quot;PlainText&quot;} }}"
    }
  }
}
</script>

Create separate CMS fields for city, state/region, and country. Avoid a single combined "Location" field since JSON-LD requires each address component as a separate property.

In Schema HQ

Your Webflow CMS address fields into the nested Place > PostalAddress structure automatically. It handles the nesting, validates each component, and ensures the output passes Google's Rich Results Test without manual JSON assembly. is mapped automatically

Real examples

Google documentation (Google Search Central):

{
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1600 Amphitheatre Pkwy",
      "addressLocality": "Mountain View",
      "addressRegion": "CA",
      "postalCode": "94043",
      "addressCountry": "US"
    }
  }
}

Tustin Recruiting (tustinrecruiting.com):

{
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Remote",
      "addressRegion": "",
      "addressCountry": "US"
    }
  }
}

Note: The Tustin Recruiting example uses "Remote" as the locality, which is a common but incorrect pattern. For remote jobs, omit jobLocation and use jobLocationType: "TELECOMMUTE" instead.

Web Data Commons analysis shows jobLocation appears in 98% of JSON-LD JobPostings, second only to title and datePosted in adoption.

Related fields

FAQ

Is jobLocation required for remote jobs?

No. For 100% remote positions, use jobLocationType: "TELECOMMUTE" instead. Google will generate a Search Console error if you set jobLocationType to TELECOMMUTE but omit applicantLocationRequirements. For hybrid roles, include both jobLocation (physical office) and jobLocationType: "TELECOMMUTE".

Can a job have multiple locations?

Yes. Use an array of Place objects. Each location appears separately in Google job search results, increasing visibility across multiple geographic queries.

What is the minimum address detail required?

Google requires at least addressLocality (city) and addressRegion (state or province). Adding addressCountry is strongly recommended, especially for companies operating in multiple countries. streetAddress and postalCode are optional but improve precision.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us