Schema Markup Reference

Copy-paste ready JSON-LD schemas with implementation instructions

How to use this reference
  1. Click each tab above to jump to that page type's schema.
  2. Use Copy to copy the JSON-LD to clipboard, or Download to save as a file.
  3. Replace anything HIGHLIGHTED YELLOW with your actual data.
  4. Paste the schema inside <script type="application/ld+json">...</script> tags in the <head> of each page.
  5. Validate at Google Rich Results Test.
One-time prep Find your real logo URL once. Right-click the logo on your homepage → "Open image in new tab" → copy the URL. You'll need it for the Home and About pages.

Where each schema goes

Page TypeURL PatternSchema Tab
Home/Home Page
About/about/About Page
Brands index/make/Brands Index
Individual brand/make/kia/Brand Page (Dynamic)
Individual model/model/kia/soulModel Page
Blog index/blog/Blog Index
Blog article/blog/article-slug/Blog Article (Yoast)
Home Page Schema
https://www.autosmarket.com/
Replace before using REPLACE-WITH-REAL-LOGO-URL — your actual logo image URL.

How to add it

1
Open your homepage template (header.php, layout file, etc.)
2
Paste the JSON-LD below inside the <head> wrapped in <script type="application/ld+json">...</script>
3
Replace the logo placeholder with the real URL
4
Validate at Rich Results Test
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://www.autosmarket.com/#organization",
      "name": "Autos Market",
      "url": "https://www.autosmarket.com",
      "logo": {
        "@type": "ImageObject",
        "url": "REPLACE-WITH-REAL-LOGO-URL"
      },
      "description": "Autos Market is a trusted automotive marketplace offering a wide selection of vehicles from top brands, helping you find good prices at dealerships near you.",
      "email": "contact@autosmarket.com",
      "sameAs": [
        "https://www.instagram.com/autosmarketdotcom",
        "https://www.youtube.com/@AutosMarket"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://www.autosmarket.com/#website",
      "url": "https://www.autosmarket.com",
      "name": "Autos Market",
      "publisher": { "@id": "https://www.autosmarket.com/#organization" }
    },
    {
      "@type": "WebPage",
      "@id": "https://www.autosmarket.com/#webpage",
      "url": "https://www.autosmarket.com/",
      "name": "Autos Market - Find Your Next Vehicle",
      "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
      "about": { "@id": "https://www.autosmarket.com/#organization" }
    }
  ]
}
About Page Schema
https://www.autosmarket.com/about/
Note This schema references the Organization defined in the home page schema via @id. The cross-page reference helps Google connect entities.
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "AboutPage",
      "@id": "https://www.autosmarket.com/about/#webpage",
      "url": "https://www.autosmarket.com/about/",
      "name": "About Us | Autos Market",
      "description": "Learn about Autos Market — our mission to help customers find quality vehicles at fair prices from trusted dealerships.",
      "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
      "about": { "@id": "https://www.autosmarket.com/#organization" },
      "breadcrumb": { "@id": "https://www.autosmarket.com/about/#breadcrumb" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.autosmarket.com/about/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.autosmarket.com/" },
        { "@type": "ListItem", "position": 2, "name": "About", "item": "https://www.autosmarket.com/about/" }
      ]
    }
  ]
}
Brands Index Page Schema
https://www.autosmarket.com/make/
Verify URL slugs Confirm each brand's URL matches your actual structure (especially alfa-romeo — could be alfa_romeo or other).
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "CollectionPage",
      "@id": "https://www.autosmarket.com/make/#webpage",
      "url": "https://www.autosmarket.com/make/",
      "name": "Browse Vehicles by Make | Autos Market",
      "description": "Explore vehicles by manufacturer. Browse our complete selection of cars by make at Autos Market.",
      "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
      "breadcrumb": { "@id": "https://www.autosmarket.com/make/#breadcrumb" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.autosmarket.com/make/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.autosmarket.com/" },
        { "@type": "ListItem", "position": 2, "name": "Makes", "item": "https://www.autosmarket.com/make/" }
      ]
    },
    {
      "@type": "ItemList",
      "name": "Vehicle Makes",
      "itemListElement": [
        { "@type": "ListItem", "position": 1,  "name": "Kia",        "url": "https://www.autosmarket.com/make/kia/" },
        { "@type": "ListItem", "position": 2,  "name": "Volkswagen", "url": "https://www.autosmarket.com/make/volkswagen/" },
        { "@type": "ListItem", "position": 3,  "name": "Audi",       "url": "https://www.autosmarket.com/make/audi/" },
        { "@type": "ListItem", "position": 4,  "name": "Hyundai",    "url": "https://www.autosmarket.com/make/hyundai/" },
        { "@type": "ListItem", "position": 5,  "name": "Mitsubishi", "url": "https://www.autosmarket.com/make/mitsubishi/" },
        { "@type": "ListItem", "position": 6,  "name": "RAM",        "url": "https://www.autosmarket.com/make/ram/" },
        { "@type": "ListItem", "position": 7,  "name": "Jeep",       "url": "https://www.autosmarket.com/make/jeep/" },
        { "@type": "ListItem", "position": 8,  "name": "Dodge",      "url": "https://www.autosmarket.com/make/dodge/" },
        { "@type": "ListItem", "position": 9,  "name": "Chrysler",   "url": "https://www.autosmarket.com/make/chrysler/" },
        { "@type": "ListItem", "position": 10, "name": "Alfa Romeo", "url": "https://www.autosmarket.com/make/alfa-romeo/" },
        { "@type": "ListItem", "position": 11, "name": "Chevrolet",  "url": "https://www.autosmarket.com/make/chevrolet/" },
        { "@type": "ListItem", "position": 12, "name": "GMC",        "url": "https://www.autosmarket.com/make/gmc/" },
        { "@type": "ListItem", "position": 13, "name": "Buick",      "url": "https://www.autosmarket.com/make/buick/" },
        { "@type": "ListItem", "position": 14, "name": "Cadillac",   "url": "https://www.autosmarket.com/make/cadillac/" }
      ]
    }
  ]
}
Individual Brand Page (Auto-Updating Schema)
https://www.autosmarket.com/make/{brand}/
This script auto-detects models on each brand page. Add it once to your brand page template and it will work for every brand. No manual updates needed when models are added or removed.

How it works

  1. The script reads the brand from the URL (e.g., /make/kia/kia).
  2. It scans the page DOM for model links pointing to /model/{brand}/....
  3. It builds the JSON-LD ItemList dynamically and injects it into <head>.
  4. When you add/remove a model on the page, the schema updates automatically.
One adjustment may be needed If the model link selector doesn't match your HTML, update the MODEL_LINK_SELECTOR at the top of the script. Default looks for any <a> whose href contains /model/{brand}/.

Installation

1
Open your brand page template (the one used for /make/kia/, /make/audi/, etc.).
2
Paste the entire <script> block below right before the closing </body> tag.
3
Visit any brand page, view source, search for "application/ld+json" — you should see the auto-generated schema.
4
Validate at Rich Results Test using a brand URL.
SEO note Google does render JavaScript, but server-side rendering is more reliable. If you have backend template access (PHP/Node/etc.), generate this same schema server-side. The JS version below is a great drop-in if backend changes aren't easy.
<script>
(function() {
  // ====== CONFIG ======
  // Selector for model links on the page. Default: any link to /model/{brand}/...
  // Change this if your HTML uses specific classes (e.g., '.model-grid a').
  var MODEL_LINK_SELECTOR = 'a[href*="/model/"]';
  // ====================

  // Brand display names (for proper capitalization in schema)
  var BRAND_NAMES = {
    'kia': 'Kia',
    'volkswagen': 'Volkswagen',
    'audi': 'Audi',
    'hyundai': 'Hyundai',
    'mitsubishi': 'Mitsubishi',
    'ram': 'RAM',
    'jeep': 'Jeep',
    'dodge': 'Dodge',
    'chrysler': 'Chrysler',
    'alfa-romeo': 'Alfa Romeo',
    'chevrolet': 'Chevrolet',
    'gmc': 'GMC',
    'buick': 'Buick',
    'cadillac': 'Cadillac',
    'fiat': 'FIAT',
    'genesis': 'Genesis'
  };

  // Detect brand from URL
  var match = window.location.pathname.match(/\/make\/([^\/]+)\/?/);
  if (!match) return;
  var brandSlug = match[1].toLowerCase();
  var brandName = BRAND_NAMES[brandSlug] || brandSlug.charAt(0).toUpperCase() + brandSlug.slice(1);

  // Find model links pointing to /model/{brand}/...
  var allLinks = document.querySelectorAll(MODEL_LINK_SELECTOR);
  var seen = {};
  var models = [];

  allLinks.forEach(function(link) {
    var href = link.getAttribute('href') || '';
    // Match /model/{brand}/{modelSlug}
    var m = href.match(new RegExp('/model/' + brandSlug + '/([^\\/\\?#]+)', 'i'));
    if (!m) return;
    var modelSlug = m[1];
    if (seen[modelSlug]) return;
    seen[modelSlug] = true;

    // Get model name from link text, fallback to slug
    var name = (link.textContent || '').trim();
    if (!name) name = modelSlug.replace(/-/g, ' ').replace(/\b\w/g, function(c){return c.toUpperCase();});

    // Build absolute URL
    var absoluteUrl = link.href;

    models.push({
      "@type": "ListItem",
      "position": models.length + 1,
      "name": brandName + ' ' + name,
      "url": absoluteUrl
    });
  });

  if (models.length === 0) return;

  var schema = {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "CollectionPage",
        "@id": window.location.href + "#webpage",
        "url": window.location.href,
        "name": brandName + " Models | Autos Market",
        "description": "Browse all available " + brandName + " models at Autos Market. Find prices and dealerships near you.",
        "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
        "breadcrumb": { "@id": window.location.href + "#breadcrumb" },
        "about": { "@type": "Brand", "name": brandName }
      },
      {
        "@type": "BreadcrumbList",
        "@id": window.location.href + "#breadcrumb",
        "itemListElement": [
          { "@type": "ListItem", "position": 1, "name": "Home",  "item": "https://www.autosmarket.com/" },
          { "@type": "ListItem", "position": 2, "name": "Makes", "item": "https://www.autosmarket.com/make/" },
          { "@type": "ListItem", "position": 3, "name": brandName, "item": window.location.href }
        ]
      },
      {
        "@type": "ItemList",
        "name": brandName + " Models",
        "itemListElement": models
      }
    ]
  };

  var script = document.createElement('script');
  script.type = 'application/ld+json';
  script.text = JSON.stringify(schema, null, 2);
  document.head.appendChild(script);
})();
</script>
Individual Model Page Schema
https://www.autosmarket.com/model/{brand}/{model}
Replace per page
  • BRAND_NAME — e.g., "Kia"
  • MODEL_NAME — e.g., "Soul"
  • BRAND_SLUG / MODEL_SLUG — the URL slugs
  • MODEL_IMAGE_URL — main model image URL (or remove if none)
  • MODEL_DESCRIPTION — short description of the model
Recommended Have your dev generate this server-side using the brand/model data your CMS already has. The same script approach used for brand pages can be adapted here too.

Static template (replace placeholders)

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Car",
      "@id": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG#car",
      "name": "BRAND_NAME MODEL_NAME",
      "description": "MODEL_DESCRIPTION",
      "image": "MODEL_IMAGE_URL",
      "brand": {
        "@type": "Brand",
        "name": "BRAND_NAME"
      },
      "model": "MODEL_NAME",
      "url": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG"
    },
    {
      "@type": "WebPage",
      "@id": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG#webpage",
      "url": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG",
      "name": "BRAND_NAME MODEL_NAME | Autos Market",
      "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
      "about": { "@id": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG#car" },
      "breadcrumb": { "@id": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG#breadcrumb" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home",  "item": "https://www.autosmarket.com/" },
        { "@type": "ListItem", "position": 2, "name": "Makes", "item": "https://www.autosmarket.com/make/" },
        { "@type": "ListItem", "position": 3, "name": "BRAND_NAME", "item": "https://www.autosmarket.com/make/BRAND_SLUG/" },
        { "@type": "ListItem", "position": 4, "name": "BRAND_NAME MODEL_NAME", "item": "https://www.autosmarket.com/model/BRAND_SLUG/MODEL_SLUG" }
      ]
    }
  ]
}

Auto-generating script (alternative)

This pulls brand/model from the URL and the H1 from the page. Drop into the model template.

<script>
(function() {
  var BRAND_NAMES = {
    'kia':'Kia','volkswagen':'Volkswagen','audi':'Audi','hyundai':'Hyundai',
    'mitsubishi':'Mitsubishi','ram':'RAM','jeep':'Jeep','dodge':'Dodge',
    'chrysler':'Chrysler','alfa-romeo':'Alfa Romeo','chevrolet':'Chevrolet',
    'gmc':'GMC','buick':'Buick','cadillac':'Cadillac','fiat':'FIAT','genesis':'Genesis'
  };

  var m = window.location.pathname.match(/\/model\/([^\/]+)\/([^\/]+)/);
  if (!m) return;
  var brandSlug = m[1].toLowerCase();
  var modelSlug = m[2];
  var brandName = BRAND_NAMES[brandSlug] || brandSlug;

  // Try to get model display name from H1, fallback to slug
  var h1 = document.querySelector('h1');
  var modelName = h1 ? h1.textContent.replace(brandName,'').trim() : modelSlug.replace(/-/g,' ');

  // Try to get main image
  var imgEl = document.querySelector('main img, article img, .model-hero img');
  var imgUrl = imgEl ? imgEl.src : null;

  var url = window.location.href;
  var schema = {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "Car",
        "@id": url + "#car",
        "name": brandName + ' ' + modelName,
        "brand": { "@type": "Brand", "name": brandName },
        "model": modelName,
        "url": url
      },
      {
        "@type": "WebPage",
        "@id": url + "#webpage",
        "url": url,
        "name": brandName + ' ' + modelName + ' | Autos Market',
        "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
        "about": { "@id": url + "#car" },
        "breadcrumb": { "@id": url + "#breadcrumb" }
      },
      {
        "@type": "BreadcrumbList",
        "@id": url + "#breadcrumb",
        "itemListElement": [
          { "@type": "ListItem", "position": 1, "name": "Home",  "item": "https://www.autosmarket.com/" },
          { "@type": "ListItem", "position": 2, "name": "Makes", "item": "https://www.autosmarket.com/make/" },
          { "@type": "ListItem", "position": 3, "name": brandName, "item": "https://www.autosmarket.com/make/" + brandSlug + "/" },
          { "@type": "ListItem", "position": 4, "name": brandName + ' ' + modelName, "item": url }
        ]
      }
    ]
  };

  if (imgUrl) schema["@graph"][0].image = imgUrl;

  var script = document.createElement('script');
  script.type = 'application/ld+json';
  script.text = JSON.stringify(schema, null, 2);
  document.head.appendChild(script);
})();
</script>
Blog Index Page Schema
https://www.autosmarket.com/blog/
If using Yoast/Rank Math The blog archive schema is usually generated automatically. Use the JSON below only if you don't have Yoast or want to override it manually.
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Blog",
      "@id": "https://www.autosmarket.com/blog/#blog",
      "url": "https://www.autosmarket.com/blog/",
      "name": "Autos Market Blog",
      "description": "Automotive news, buying guides, vehicle reviews, and expert tips from Autos Market.",
      "publisher": { "@id": "https://www.autosmarket.com/#organization" },
      "inLanguage": "en-US"
    },
    {
      "@type": "CollectionPage",
      "@id": "https://www.autosmarket.com/blog/#webpage",
      "url": "https://www.autosmarket.com/blog/",
      "name": "Blog | Autos Market",
      "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
      "breadcrumb": { "@id": "https://www.autosmarket.com/blog/#breadcrumb" }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://www.autosmarket.com/blog/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.autosmarket.com/" },
        { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.autosmarket.com/blog/" }
      ]
    }
  ]
}
Blog Article Schema — Auto via Yoast SEO

Goal: Have schema generated automatically for every blog post, no manual JSON editing.

Yoast SEO does this for you. Once configured, every blog post automatically gets a complete Article / BlogPosting schema using the post's title, author, dates, featured image, and meta description.

Step-by-step: Enable Yoast schema for blog posts

1
Install Yoast SEO — In WordPress admin: Plugins → Add New, search "Yoast SEO", install and activate. Free version is enough for schema.
2
Set your Organization info — Go to Yoast SEO → Settings → Site representation:
  • Choose Organization
  • Name: Autos Market
  • Logo: upload your logo
  • This populates the publisher field in every article schema.
3
Set default content type for Posts — Go to Yoast SEO → Settings → Content types → Posts → Schema:
  • Page type: Web Page
  • Article type: Article (or Blog Post for stricter BlogPosting type)
4
Add social profilesYoast SEO → Settings → Site basics → Site preferences → Other profiles:
  • Instagram: https://www.instagram.com/autosmarketdotcom
  • YouTube: https://www.youtube.com/@AutosMarket
5
For each post, ensure these fields are filled (Yoast pulls from them):
  • Title — populates headline
  • Featured Image — populates image (use 1200×675 or similar)
  • Meta description (in Yoast box) — populates description
  • Author — populates author (set the author in the post sidebar)
  • Categories — populates articleSection
  • Publish date — populates datePublished and dateModified
6
Override per-post if needed — In the Yoast box on any post, scroll to Schema. You can change the Article type for that specific post (e.g., switch to NewsArticle for news posts).
7
Validate — Open any blog post URL in Google Rich Results Test. You should see an "Article" detected with all fields populated.

What Yoast generates (reference)

You don't need to copy this — Yoast outputs it automatically. Shown here so you know what to expect when validating.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://www.autosmarket.com/blog/example-post/#article",
      "isPartOf": { "@id": "https://www.autosmarket.com/blog/example-post/#webpage" },
      "author": { "@id": "https://www.autosmarket.com/#/schema/person/AUTHOR_ID" },
      "headline": "Example Blog Post Title",
      "datePublished": "2025-01-15T08:00:00+00:00",
      "dateModified": "2025-01-15T08:00:00+00:00",
      "mainEntityOfPage": { "@id": "https://www.autosmarket.com/blog/example-post/#webpage" },
      "publisher": { "@id": "https://www.autosmarket.com/#organization" },
      "image": { "@id": "https://www.autosmarket.com/blog/example-post/#primaryimage" },
      "articleSection": ["Auto News"],
      "inLanguage": "en-US"
    },
    {
      "@type": "WebPage",
      "@id": "https://www.autosmarket.com/blog/example-post/#webpage",
      "url": "https://www.autosmarket.com/blog/example-post/",
      "name": "Example Blog Post Title | Autos Market",
      "isPartOf": { "@id": "https://www.autosmarket.com/#website" },
      "primaryImageOfPage": { "@id": "https://www.autosmarket.com/blog/example-post/#primaryimage" },
      "datePublished": "2025-01-15T08:00:00+00:00",
      "dateModified": "2025-01-15T08:00:00+00:00",
      "breadcrumb": { "@id": "https://www.autosmarket.com/blog/example-post/#breadcrumb" }
    }
  ]
}
Alternative plugin If you prefer, Rank Math does the same thing with arguably more granular schema controls. Pick one — don't run both at the same time (they'll output duplicate schemas).