DEV Community

Khurram Shehzad
Khurram Shehzad

Posted on

🗺️ How I Used JSON-LD Place Schema to Boost Local Search for GCC Cities

Most guides show generic schema examples — I’ll share real ones that actually rank in GCC local search.

Why I Wrote This

While building city-based pages for a Gulf-focused project, I noticed that most JSON-LD “Place” examples online only work for Western addresses — not for GCC cities with complex postal systems or Arabic-English mix names.

So I spent a weekend refining a format that search engines actually index for places like Dubai, Kuwait City, and Doha.
Here’s the working setup — feel free to copy, tweak, and validate yours.

Quick Setup

You can embed your JSON-LD inside your page’s

:

<script type="application/ld+json">
{ ...your JSON here... }
</script>

Make sure your schema matches your visible content — city name, country, and any business or service listed on the same page.

JSON-LD Examples for GCC Cities

Below are three tested samples that passed validation and rendered properly in Google’s Rich Results and Bing’s IndexNow crawlers.

Example 1 — Dubai, UAE
{
"@context": "https://schema.org",
"@type": "Place",
"name": "Dubai",
"address": {
"@type": "PostalAddress",
"streetAddress": "Downtown Dubai",
"addressLocality": "Dubai",
"addressRegion": "Dubai",
"postalCode": "00000",
"addressCountry": "AE"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 25.276987,
"longitude": 55.296249
},
"url": "https://247gulftrivia.org/cities/dubai"
}

âś… Works well with multilingual content.
✅ Postal codes in the UAE aren’t city-specific, so "00000" is acceptable.

Example 2 — Kuwait City, Kuwait

{
"@context": "https://schema.org",
"@type": "Place",
"name": "Kuwait City",
"address": {
"@type": "PostalAddress",
"streetAddress": "Al Asimah Governorate",
"addressLocality": "Kuwait City",
"postalCode": "13001",
"addressCountry": "KW"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 29.3759,
"longitude": 47.9774
},
"url": "https://247gulftrivia.org/cities/kuwait-city"
}

âś… Specific postal code helps Google associate the correct governorate.
⚠️ Avoid adding "area" fields — keep only streetAddress and addressLocality.

Testing and Validation

  • After adding your schema:
  • Visit Google’s Rich Results Test
  • Paste your page URL or JSON-LD snippet.
  • Check for âś… “Valid Items Detected”.
  • Optionally, test in Schema.org Validator

You can also run a quick terminal validation using curl and jq:

curl -s https://247gulftrivia.org/cities/dubai | grep -oP '(?<=<script type="application/ld\+json">).*(?=</script>)' | jq .

Lessons Learned

  • GCC addresses don’t always have precise postal codes — "00000" is safe.
  • Always use ISO Alpha-2 codes (AE, KW, QA) instead of full country names.
  • Avoid mixing Place with LocalBusiness unless you display business data (like opening hours).
  • Linking from city schema pages to main business or content pages improves indexing consistency.

The Results

  • After applying these JSON-LD templates to ~20 city pages:
  • Google indexed all pages within 48 hours.
  • “Dubai jobs” and “Kuwait City careers” started surfacing rich results within a week.
  • Click-through rate improved by 14% (from 2.1% → 2.4%) for local search queries.
  • Small markup changes → steady visibility boost.

Takeaway

Developers often skip schema because it looks “marketing-ish.”
But adding the right Place structure is a technical move — and it directly helps users find your content faster.

Top comments (0)