{
  "@context": "https://schema.org",
  "_instructions": "DELETE THIS _instructions LINE BEFORE YOU PUBLISH. Free contractor schema template from TwentyOne Solutions, full guide at https://twentyonesolutions.com/ai-visibility/schema-template. STEP 1: Replace every ALL CAPS value with your real details. When you finish, search the file for YOUR, XXX and HH:MM and make sure none are left. STEP 2: Change @type on the business node to your trade. Plumbers use Plumber. HVAC companies use HVACBusiness. Roofers use RoofingContractor. Painters use HousePainter. Electricians use Electrician. General contractors and remodelers use GeneralContractor. Landscapers, and any trade without its own type, keep HomeAndConstructionBusiness. STEP 3: name, address and telephone must match your Google Business Profile exactly. If your profile hides your street address, delete the streetAddress line and keep city, state and ZIP. STEP 4: latitude and longitude are plain numbers with no quotes and at least 5 decimal places, for example 33.46660. STEP 5: areaServed gets one City entry per city you really take jobs in. Add or delete entries to fit. STEP 6: Hours use 24 hour time, for example 07:00 and 17:00. Delete the Saturday block if you are closed Saturdays. STEP 7: sameAs lists profiles you own. Delete any line you do not have and add any real profile you do. STEP 8: hasOfferCatalog gets one Offer per service you really sell, each pointing at that service's own page on your site. STEP 9: aggregateRating is optional and is the easiest part to get wrong. Delete the whole block unless the page this code sits on shows those same reviews from real customers and the numbers match exactly. Never copy in your Google star rating and never make numbers up. STEP 10: Paste the finished code inside a script tag with type application/ld+json on your homepage. STEP 11: Test it in Google's Rich Results Test (https://search.google.com/test/rich-results) and the Schema.org validator (https://validator.schema.org) before and after it goes live.",
  "@graph": [
    {
      "@type": "HomeAndConstructionBusiness",
      "@id": "https://YOURDOMAIN.COM/#business",
      "name": "YOUR BUSINESS NAME",
      "description": "ONE OR TWO PLAIN SENTENCES ON WHAT YOU DO AND THE AREA YOU SERVE",
      "url": "https://YOURDOMAIN.COM/",
      "telephone": "+1-XXX-XXX-XXXX",
      "email": "YOU@YOURDOMAIN.COM",
      "logo": "https://YOURDOMAIN.COM/YOUR-LOGO-FILE.png",
      "image": [
        "https://YOURDOMAIN.COM/YOUR-REAL-JOB-PHOTO.jpg"
      ],
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "YOUR STREET ADDRESS",
        "addressLocality": "YOUR CITY",
        "addressRegion": "YOUR STATE ABBREVIATION",
        "postalCode": "YOUR ZIP CODE",
        "addressCountry": "US"
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": "YOUR LATITUDE",
        "longitude": "YOUR LONGITUDE"
      },
      "areaServed": [
        { "@type": "City", "name": "YOUR MAIN CITY, STATE" },
        { "@type": "City", "name": "SECOND CITY YOU SERVE, STATE" },
        { "@type": "City", "name": "THIRD CITY YOU SERVE, STATE" }
      ],
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
          "opens": "HH:MM",
          "closes": "HH:MM"
        },
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": ["Saturday"],
          "opens": "HH:MM",
          "closes": "HH:MM"
        }
      ],
      "priceRange": "YOUR PRICE RANGE",
      "sameAs": [
        "https://www.google.com/maps?cid=YOUR-GOOGLE-BUSINESS-PROFILE-CID",
        "https://www.yelp.com/biz/YOUR-YELP-PAGE",
        "https://www.facebook.com/YOUR-FACEBOOK-PAGE",
        "https://nextdoor.com/pages/YOUR-NEXTDOOR-PAGE/"
      ],
      "hasOfferCatalog": {
        "@type": "OfferCatalog",
        "name": "YOUR TRADE SERVICES",
        "itemListElement": [
          {
            "@type": "Offer",
            "itemOffered": {
              "@type": "Service",
              "name": "YOUR FIRST SERVICE",
              "description": "ONE SENTENCE ON WHAT THIS SERVICE INCLUDES",
              "url": "https://YOURDOMAIN.COM/YOUR-FIRST-SERVICE-PAGE/",
              "provider": { "@id": "https://YOURDOMAIN.COM/#business" }
            }
          },
          {
            "@type": "Offer",
            "itemOffered": {
              "@type": "Service",
              "name": "YOUR SECOND SERVICE",
              "description": "ONE SENTENCE ON WHAT THIS SERVICE INCLUDES",
              "url": "https://YOURDOMAIN.COM/YOUR-SECOND-SERVICE-PAGE/",
              "provider": { "@id": "https://YOURDOMAIN.COM/#business" }
            }
          },
          {
            "@type": "Offer",
            "itemOffered": {
              "@type": "Service",
              "name": "YOUR THIRD SERVICE",
              "description": "ONE SENTENCE ON WHAT THIS SERVICE INCLUDES",
              "url": "https://YOURDOMAIN.COM/YOUR-THIRD-SERVICE-PAGE/",
              "provider": { "@id": "https://YOURDOMAIN.COM/#business" }
            }
          }
        ]
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "YOUR AVERAGE RATING FROM REVIEWS SHOWN ON THIS PAGE",
        "reviewCount": "YOUR NUMBER OF REVIEWS SHOWN ON THIS PAGE",
        "bestRating": "5",
        "worstRating": "1"
      }
    },
    {
      "@type": "WebSite",
      "@id": "https://YOURDOMAIN.COM/#website",
      "url": "https://YOURDOMAIN.COM/",
      "name": "YOUR BUSINESS NAME",
      "inLanguage": "en-US",
      "publisher": { "@id": "https://YOURDOMAIN.COM/#business" }
    }
  ]
}
