Free Service Schema Generator

Fill in the facts visible on your page, copy the Service JSON-LD, and validate it before you publish. The guide, examples, and FAQs are below the tool. Generate this schema with AI

Type to filter 121 supported schema types.

Schema workflow

Use only facts a visitor can verify on the page, then validate the JSON-LD before publishing.

Required

  • Visible Service content
  • Canonical page URL
  • Clear page owner/publisher
  • Fields that match the visible page

Recommended

  • A representative image when the schema supports it
  • SameAs or related links when visible
  • Validation before publishing

Avoid

  • Adding properties that are not visible
  • Copying example URLs into production
  • Skipping Google and Schema.org validation

Schema stacks

Use Service schema in a stack

Complete JSON-LD bundles that combine Service with the other types a real page needs. Browse all stacks

Next step

Validate, repair, and publish clean structured data.

Check the generated JSON-LD against the visible page, then run both SwiftSchema and external validators before publishing.

Service Schema Markup — Describe What You Offer

Service JSON-LD describes one thing a business offers: what it is, who provides it, where it's available, and what it costs. Pair it with LocalBusiness or Organization markup for the business itself.

Generate Service JSON-LD

Why service markup often goes wrong

  • The business and its services are mixed into one entity, so it is unclear what is offered.
  • Old tutorials recommend ProfessionalService, which schema.org has deprecated.
  • A service radius is written without a unit, so it means meters.
  • Prices appear in the markup that visitors cannot see on the page.

How SwiftSchema helps

The generator below builds one Service with its name, type, provider, area served, and an optional price, using only real schema.org properties.

The examples on this page show the three common setups: a local service page, a B2B service with a retainer, and a business page that lists its services with hasOfferCatalog.

What is Service schema?

Schema.org defines Service as "a service provided by an organization, e.g. delivery service, print services, etc." It sits under Intangible: Thing → Intangible → Service. Use it for anything you do for customers rather than sell as a physical item, such as repairs, cleaning, consulting, legal work, lessons, or installation.

Service has a few more specific subtypes. Use one when it fits: FinancialProduct for banking and lending, GovernmentService, FoodService, TaxiService, BroadcastService, and WebAPI.

Service, LocalBusiness, or Product?

These three types answer different questions, and most service businesses need two of them:

QuestionType
Who is the business, where is it, when is it open?LocalBusiness, or a subtype such as Plumber, Dentist, Attorney (or Organization for non-local companies)
What does the business do for customers?Service, one per service
What physical item does it sell?Product

Link the two with provider: the Service's provider is the business. Giving the business an @id lets every service page point to the same entity.

Don't use ProfessionalService

Many older tutorials recommend ProfessionalService. Schema.org deprecated it: "The general ProfessionalService type for local businesses was deprecated due to confusion with Service." It covered businesses such as dentists, accountants, attorneys, notaries, electricians, plumbers, and roofers. Use the specific LocalBusiness subtype for those businesses, such as Dentist, AccountingService, Attorney, Electrician, Plumber, or RoofingContractor.

Properties that matter

  • name: the service name as the page shows it, such as "Drain cleaning".
  • serviceType: the kind of service, such as "HVAC maintenance". This is free text.
  • description: a short summary of what's included.
  • provider: the business or person who delivers it, as an Organization (or LocalBusiness subtype) or a Person.
  • areaServed: where you offer it. Use a City, State, Country, or AdministrativeArea with a name, or a GeoCircle for a radius. serviceArea is an older property that schema.org has replaced with areaServed.
  • offers: an Offer with price and priceCurrency when the page shows a price. Use a priceSpecification for rates such as a monthly retainer.
  • url: the page about this service.
  • hasOfferCatalog: a list of services, used on the business, or on a Service that has sub-services.

Service also supports audience, hoursAvailable, availableChannel, termsOfService, brand, and category when the page covers them.

Service pages vs. the home page

  • A page about one service (for example /drain-cleaning): one Service, with provider pointing to the business.
  • The home page or a services overview: describe the business with LocalBusiness or Organization markup, and list the services with hasOfferCatalog. Each catalog entry is an Offer whose itemOffered is a Service. The third example above shows this.

Don't put every service's full markup on every page. Each service page should describe its own service.

Google Search status

Google's Search Gallery has no feature for the Service type, so Service markup won't produce a rich result, and the Rich Results Test won't report it. That doesn't make it pointless. It gives search engines and AI assistants an unambiguous statement of what you offer, who provides it, and where. For the business itself, use LocalBusiness markup, which Google does document and support.

To check Service markup, use the Schema Markup Validator, which validates any schema.org type.

How to build one here

  1. 01

    Enter the service name exactly as the page shows it.

  2. 02

    Add serviceType and a one-sentence description of what is included.

  3. 03

    Add the provider name, and choose Organization or Person.

  4. 04

    Add the area you serve as a place name, such as a city or region. For a radius or a LocalBusiness provider, edit the JSON to match the first example.

  5. 05

    Add a price and currency only if the page shows one.

  6. 06

    Copy the JSON-LD into the service page and check it in the Schema Markup Validator.

Common mistakes

  • A unitless radius. "geoRadius": 40 means 40 meters. Write "40 mi" or "64 km", or give the number in meters.
  • Prices the page doesn't show. Only mark up prices visitors can see, with the same currency and unit.
  • One page, many unrelated Services. Give each service its own page and markup, and use hasOfferCatalog for overview pages.
  • ProfessionalService or serviceArea. Both are outdated. Use a specific LocalBusiness subtype and areaServed.
  • A provider that doesn't match the business. The provider's name, phone, and URL should match your LocalBusiness or Organization markup and your footer.
  • Service for physical goods. Use Product for items you sell.

Required properties

  • name

Recommended properties

  • serviceType
  • description
  • provider
  • areaServed
  • offers
  • url
  • hasOfferCatalog
Local service page with a service radius
Validate
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "HVAC Tune-Up",
  "serviceType": "HVAC maintenance",
  "description": "A 21-point heating and cooling system inspection and cleaning.",
  "url": "https://www.breezeright.example/services/hvac-tune-up",
  "provider": {
    "@type": "HVACBusiness",
    "@id": "https://www.breezeright.example/#business",
    "name": "BreezeRight HVAC",
    "telephone": "+1-512-555-0142"
  },
  "areaServed": {
    "@type": "GeoCircle",
    "geoMidpoint": {
      "@type": "GeoCoordinates",
      "latitude": 30.2672,
      "longitude": -97.7431
    },
    "geoRadius": "40 mi"
  },
  "offers": {
    "@type": "Offer",
    "price": 189,
    "priceCurrency": "USD",
    "url": "https://www.breezeright.example/services/hvac-tune-up"
  }
}
B2B service with a starting monthly rate
Validate
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Analytics Implementation",
  "serviceType": "Web analytics setup and training",
  "description": "GA4 and tag manager setup, dashboards, and team training.",
  "url": "https://www.datanorth.example/services/analytics-implementation",
  "provider": {
    "@type": "Organization",
    "name": "DataNorth",
    "url": "https://www.datanorth.example"
  },
  "areaServed": {
    "@type": "Country",
    "name": "United States"
  },
  "offers": {
    "@type": "Offer",
    "priceSpecification": {
      "@type": "UnitPriceSpecification",
      "minPrice": 3000,
      "priceCurrency": "USD",
      "unitCode": "MON",
      "name": "Monthly retainer (starting)"
    }
  }
}
Business page listing its services (hasOfferCatalog)
Validate
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "@id": "https://www.clearflow.example/#business",
  "name": "ClearFlow Plumbing",
  "url": "https://www.clearflow.example",
  "telephone": "+1-303-555-0187",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "410 Market St",
    "addressLocality": "Denver",
    "addressRegion": "CO",
    "postalCode": "80202",
    "addressCountry": "US"
  },
  "areaServed": {
    "@type": "City",
    "name": "Denver"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Plumbing services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Drain cleaning",
          "url": "https://www.clearflow.example/drain-cleaning"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Water heater installation",
          "url": "https://www.clearflow.example/water-heaters"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Leak detection",
          "url": "https://www.clearflow.example/leak-detection"
        }
      }
    ]
  }
}

FAQs

Does Service schema give me a rich result?Show

No. Google's Search Gallery has no feature for the Service type, so the Rich Results Test won't show one. The markup still tells search engines and AI assistants what you offer, who provides it, and where.

Service or LocalBusiness?Show

Use both, for different things. LocalBusiness (or a subtype like Plumber or Dentist) describes the business: name, address, hours. Service describes one thing the business offers. Link them with provider.

Should I use ProfessionalService?Show

No. Schema.org deprecated the general ProfessionalService type because people confused it with Service. Use a specific LocalBusiness subtype for the business, such as Attorney, AccountingService, or Plumber, and Service for what it offers.

How do I list several services on one page?Show

On a page about the business, add hasOfferCatalog to the business: an OfferCatalog whose items are Offers, each with a Service as itemOffered. On a page about one service, use a single Service.

Do I need a price?Show

No. Add offers with price and priceCurrency only when the page shows a price. For quotes or retainers, describe the service without a price, or use a priceSpecification for a starting rate the page states.

How do I set a service radius?Show

Use areaServed with a GeoCircle. Write geoRadius with a unit, such as "40 mi". A bare number means meters, so 40 would mean a 40-meter radius.

Related types

Browse all schema types

References