Job training (BETA)

For job seekers and prospective students looking to acquire marketable skills for their next role, it’s often difficult to find programs, compare cost, and know which jobs are in demand. The job training experience on Google Search helps people discover a new career path and acquire skills for their next job. Learn more about the job training experience on Google.

You can integrate with the job training experience by adding structured data to your program web pages. Structured data helps Google better understand the content of your page, and therefore enables Google to better surface job training programs to users. If you're getting started with structured data, read our guide to Understand how structured data works.

Job training example in search results

Feature availability

To ensure a good user experience, we're slowly rolling out coverage throughout the US. We are currently developing this feature and you may see changes in requirements or guidelines. You may not see results in Google Search right away. To ensure robust coverage and better serve our users, this feature is currently limited to job training providers in the US.

How to add structured data

Structured data is a standardized format for providing information about a page and classifying the page content. If you’re new to structured data, you can learn more about how structured data works.

Here's an overview of how to build, test, and release structured data. For a step-by-step guide on how to add structured data to a web page, check out the structured data codelab.

  1. Add the required properties. For information about where to put structured data on the page, watch JSON-LD structured data: Where to insert on the page.
  2. Follow the guidelines.
  3. Validate your code using the Rich Results Test.
  4. Deploy a few pages that include your structured data and use the URL Inspection tool to test how Google sees the page. Be sure that your page is accessible to Google and not blocked by a robots.txt file, the noindex tag, or login requirements. If the page looks okay, you can ask Google to recrawl your URLs.
  5. To keep Google informed of future changes, we recommend that you submit a sitemap. You can automate this with the Search Console Sitemap API.

Examples

Program with multiple classes and no wages

Here's an example of a program that has multiple classes and doesn't provide any wages for attending the program.

<html>
  <head>
    <title>Associate degree in Computer Science</title>
    <script type="application/ld+json">
    {
      "@context": "http://schema.org/",
      "@type": "EducationalOccupationalProgram",
      "name": "Associate degree in Computer Science from ACME College",
      "description": "a piece of text about what it might mean to take this program",
      "identifier": [{
         "@type": "PropertyValue",
         "propertyID": "CIP2010",
         "value": "12.3456"
      }, {
         "@type": "PropertyValue",
         "propertyID": "ProgramID",
         "value": "CS-101"
      }],
      "provider": {
        "@type": "EducationalOrganization",
        "name": "ACME Community College",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "123 Main Street",
          "addressLocality": "Boston",
          "addressRegion": "MA",
          "addressCountry": "US",
          "postalCode": "02134"
        },
        "contactPoint": {
          "@type": "ContactPoint",
          "contactType": "Admissions",
          "telephone": "+1-555-123-4567"
        }
      },
      "timeToComplete": "P2Y",
      "occupationalCategory": ["15-1111", "15-1121", "15-1122", "15-1131"],
      "occupationalCredentialAwarded": {
        "@type": "EducationalOccupationalCredential",
        "credentialCategory": "Associate Degree"
      },
      "programPrerequisites": {
        "@type": "EducationalOccupationalCredential",
        "credentialCategory": "HighSchool"
      },
      "applicationStartDate": "2019-05-14",
      "applicationDeadline": "2019-09-14",
      "startDate": "2019-10-01",
      "endDate": "2021-10-01",
      "dayOfWeek":  [
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "timeOfDay": "Morning",
      "numberOfCredits": "30",
      "typicalCreditsPerTerm": "12",
      "termDuration": "P4M",
      "termsPerYear": "2",
      "maximumEnrollment": "30",
      "educationalProgramMode": "IN_PERSON",
      "financialAidEligible": "PUBLIC_AID",
      "offers": [
        {
          "@type": "Offer",
          "category": "Tuition",
          "priceSpecification": {
            "@type": "PriceSpecification",
            "price": 16278,
            "priceCurrency": "USD"
          }
       }, {
          "@type": "Offer",
          "category": "Program Fees",
          "priceSpecification": {
            "@type": "PriceSpecification",
            "price": 200,
            "priceCurrency": "USD"
          }
       }
     ]
    }
    </script>
  </head>
  <body>
  </body>
</html>

Work-based program

Here's an example of a program that provides job training and wages.

<html>
  <head>
    <title>About the IBEW Apprenticeship</title>
    <script type="application/ld+json">
    {
      "@context": "http://schema.org/",
      "@type": "WorkBasedProgram",
      "name": "IBEW Apprenticeship",
      "description": "a piece of text about what it might mean to take this program",
      "identifier": [{
         "@type": "PropertyValue",
         "propertyID": "ProgramID",
         "value": "IBEW-123"
      }],
      "provider": {
        "@type": "EducationalOrganization",
        "name": "International Brotherhood of Electrical Workers",
        "address": {
          "@type": "PostalAddress",
          "streetAddress": "123 Main Street",
          "addressLocality": "Boston",
          "addressRegion": "MA",
          "addressCountry": "US",
          "postalCode": "02134"
        },
        "contactPoint": {
          "@type": "ContactPoint",
          "contactType": "Admissions",
          "telephone": "+1-555-123-4567"
        }
      },
      "timeToComplete": "P2Y",
      "occupationalCategory": "47-2111",
      "occupationalCredentialAwarded": {
        "@type": "EducationalOccupationalCredential",
        "credentialCategory": "Welding License"
      },
      "programPrerequisites": {
        "@type": "EducationalOccupationalCredential",
        "credentialCategory": "HighSchool"
      },
      "applicationStartDate": "2019-05-14",
      "applicationDeadline": "2019-09-14",
      "startDate": "2019-10-01",
      "endDate": "2021-10-01",
      "maximumEnrollment": "30",
      "offers": [
        {
          "@type": "Offer",
          "category": "Tuition",
          "priceSpecification": {
            "@type": "PriceSpecification",
            "price": 16278,
            "priceCurrency": "USD"
          }
       }, {
          "@type": "Offer",
          "category": "Program Fees",
          "priceSpecification": {
            "@type": "PriceSpecification",
            "price": 200,
            "priceCurrency": "USD"
          }
       }
     ],
      "trainingSalary" : {
        "@type": "MonetaryAmountDistribution",
        "currency": "USD",
        "duration": "P1H",
        "median": 16.00
      },
      "salaryUponCompletion": {
        "@type": "MonetaryAmountDistribution",
        "currency": "USD",
        "duration": "P1H",
        "median": 20.00
      }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Guidelines

You must follow these guidelines to be eligible to appear in the job training experience on Google.

Eligibility for Inclusion

To be eligible to appear in Google's listing of job training programs, you must meet the following criteria:

  • Your web page includes all required structured data properties.
  • Eligible programs must lead to occupations that require less than a bachelor's degree. This includes certificate programs, associate degrees, and other programs that require full-time enrollment of up to around two years, where students pay to attend. For example, community college programs, private college programs, employer-run education, NGO-led education, and occupation-specific education.
  • For programs that pay a wage, there is no limit to the length of the program. For example, employer-run apprenticeships, on-the-job trainings, and union and NGO apprenticeships.
  • The program must match occupations that are in-demand in your area.
  • The program accepts applicants with no degree beyond a high school diploma.
  • The completion of the program prepares students for an occupation. Preparatory courses aren't accepted.
  • The program must have a local presence. Online-only programs are not accepted.
  • Programs that require students to pay to attend are eligible, as long as the programs are intended to be around two years or less for full-time enrolled students.
  • Programs that train for a job but don’t have credits or don’t lead to a degree are allowed.
  • For the small subset of occupations that have programmatic accreditation according to the US DoE, programs must have programmatic accreditation (for example, physical therapy assistant).

Even though the feature is focused on a subset of programs, you can implement markup on all of your programs should this feature or other features use this information in the future.

Structured data type definitions

This section describes the structured data types related to the job training experience on Google. Programs must add one of the following types based on the type of program:

If your institution has an accreditation from a certification board, use the EducationalOrganization properties. You can add EducationalOrganization to a top-level page on your site, or as a provider field for a specific program.

You must include the required properties for your content to be eligible for display in enhanced Search results. You can also include the recommended properties to add more information about your content, which could provide a better user experience.

EducationalOccupationalProgram

The full definition of EducationalOccupationalProgram is available at schema.org/EducationalOccupationalProgram. The following properties are required for programs with a cost or are free. If the program is work-based, add the WorkBasedProgram properties instead.

Required properties
applicationDeadline

DateTime

The date at which the program will stop accepting applications in ISO-8601 format. If the program is offered more than once per calendar year, specify the deadline for each date that term applications end. If applications are rolling, specify the latest possible date.

"applicationDeadline": "2020-04-01T19:30"
identifier.propertyID

Text

The key for a PropertyValue entry that specifies the type of identifier. Programs are required to specify two types of identifiers:

CIP2010

The 6 digit CIP code, as published in the 2010 specification from the US Department of Education.

ProgramID

A unique program identifier, as used by the institution (if applicable).

For example:

"identifier": [
  {
  "@type": "PropertyValue",
  "propertyID": "CIP2010",
  "value": "12.3456"
  },
  {
  "@type": "PropertyValue",
  "propertyID": "ProgramID",
  "value": "CS-101"
  }
]
identifier.value

Text

The value for a PropertyValue entry. The value must correspond to the specified propertyID.

For example:

"identifier": [
  {
  "@type": "PropertyValue",
  "propertyID": "CIP2010",
  "value": "12.3456"
  },
  {
  "@type": "PropertyValue",
  "propertyID": "ProgramID",
  "value": "CS-101"
  }
]
name

Text

The name of the program.

"name": "Certified Nurse Aid Program"
occupationalCategory

Text

The occupation towards which training program attendees will be working. If the program trains attendees for multiple occupations, specify multiple values in an array.

Use the BLS SOC-6 code as published in the 2010 SOC guide.

offers

Offer

The estimated cost for the program, if applicable. The estimated cost can be the total cost of the program or broken down by tuition, fees, and other costs. The cost must be the cost for in-state residents without aid.

Additional guidelines:

  • Offer.price_specification.price must be a number (no other text is accepted).
  • Only include fees that are related to the program. For example: scrubs, estimated cost of required textbooks, shopping cart fees.
  • Don't include fees that aren't required to complete the program. For example, post-graduation tests, pre-admission tests, room and board, health care, child care.
offers.priceSpecification.price

Number

The price amount for the specified offer.

[
  {
    "@type": "Offer",
    "category": "CostPerCredit",
    "priceSpecification": {
      "@type": "PriceSpecification",
      "price": 400,
      "priceCurrency": "USD"
   }, {
    "@type": "Offer",
    "category": "Program Fees",
    "priceSpecification": {
      "@type": "PriceSpecification",
      "price": 200,
      "priceCurrency": "USD"
  }
]
offers.priceSpecification.priceCurrency

Number

The currency of the price for the specified offer.

[
  {
    "@type": "Offer",
    "category": "CostPerCredit",
    "priceSpecification": {
      "@type": "PriceSpecification",
      "price": 400,
      "priceCurrency": "USD"
   }, {
    "@type": "Offer",
    "category": "Program Fees",
    "priceSpecification": {
      "@type": "PriceSpecification",
      "price": 200,
      "priceCurrency": "USD"
  }
]
provider

EducationalOrganization

The educational organization providing the program.

provider.address

PostalAddress

The physical address where students go to take the program. If there are multiple locations for this program, repeat the address as shown in the example for each individual location.

provider.address.addressCountry

PostalAddress

The country code for the physical address where students go to take the program. Use the two-letter ISO 3166-1 alpha-2 country code.

"addressCountry": "US"
provider.contactPoint

ContactPoint

The point of contact to which a prospective enrollee can reach out for more information.

"provider": {
  "@type": "EducationalOrganization",
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "Admissions",
    "telephone": "+15551234567"
  }
}
provider.contactPoint.contactType

Text

The type of contact point. It should be set to Admissions for at least one contactPoint.

"contactType": "Admissions"
provider.contactPoint.telephone

Text

The phone number that a prospective enrollee can call for more information.

"telephone": "+15551234567"
timeToComplete

Text

The time it takes for a full-time student to complete the program in weeks, months, or years, expressed in ISO-8601 format. Express as a typical time for a full-time student to complete. For example:

2 year program P2Y
2 month program P2M
2 month, 2 year "P26M" "P2Y2M"

If you don’t know the duration, we recommend you use the number of credits multiplied by the expected full-time student workload. For example: 48 units divided by 12 units expected per semester for a full-time student x 4 months per semester = 16 months, or less than 1.5 years.

Recommended properties
applicationStartDate

DateTime

The date when the program begins collecting applications in ISO-8601 format. If applications are rolling, specify the property for each date that applications for a term begin. If applications are accepted multiple times in a year, specify the earliest possible date.

"applicationStartDate": "2020-04-01T19:30"
dayOfWeek

DayOfWeek

The day of the week when the program is offered. Use one of the following values:

  • "Saturday"
  • "Sunday"
  • "Monday"
  • "Tuesday"
  • "Wednesday"
  • "Thursday"
  • "Friday"

You can include multiple days for the same program.

description

Text

The description of the program.

"description": "A training program to empower you to expand your
skillset."
endDate

DateTime

The date when the term officially ends, where students are no longer required to show up for classes or exams in ISO-8601 format. If there are multiple end dates, specify the property for each date that the program could end.

"endDate": "2020-04-01T19:30"
educationalProgramMode

Text

The format in which course content is conveyed, and whether the student can be in person or remote. Use one of the following case-sensitive values:

  • "IN_PERSON" - a program that requires the attendees to be physically present on-site.
  • "ONLINE" - a program that is 100% online and does not require any physical attendance.
  • "HYBRID" - a program that is partially online and partially on-site.
"educationalProgramMode": "ONLINE"
financialAidEligible

Text

The different types of aid for which the program is eligible.

Use one or more of the following case-sensitive values:

  • "PUBLIC_AID" - Aid offered by the government (for example, Pell grants).
  • "PROVIDER_AID" - Aid offered by the school/provider (for example, Stanford financial aid grants)
maximumEnrollment

Number

The maximum capacity of students that can be enrolled in the program per time it is offered.

"maximumEnrollment": "50"
numberOfCredits

Number

The number of credits earned by completing this program.

"numberOfCredits": "30"
occupationalCredentialAwarded

EducationalOccupationalCredential

The credential provided upon completion of the program. For example: Associate’s Degree, Certificate.

offers.category

Text

The category of the costs that are related to the program. If the tuition is different for in-state and out-of-state students, you can use additional category fields to specify that. You can add similar categories for "In-district", "Out-of-district" and so on. Here are some example values for offers.category:

  • Total Cost
  • Tuition
  • In-state
  • Out-of-state
  • CostPerCredit
  • CostPerTerm
  • Program Fees
  • Books and Supplies Fees
  • Uniform Fees
  • Activities Fees
  • Technology Fees
  • Other Fees
programPrerequisites

EducationalOccupationalCredential

The prerequisites for attending the program.

If you require a high school diploma, set credentialCategory to HighSchool.

startDate

DateTime

The start date of the program, formatted in ISO-8601 format. If the program is offered more than once per calendar year, specify the property multiple times.

"startDate": "2020-04-01T19:30"
termDuration

Text

The time it takes to complete a term, expressed in ISO-8601 format. For example, a quarter could be 3 months (P3M), a semester could be 4 months (P4M).

"termDuration": "P4M"
termsPerYear

Number

The number of times that terms of study are offered per year. Semesters and quarters are common units for term. For example, if the student can only take two semesters for the program in one year, then termsPerYear must be 2.

"termsPerYear": "2"
timeOfDay

Text

The time of day when the program runs.

"timeOfDay": "Afternoon",
"timeOfDay": "Morning",
"timeOfDay": "3pm"
typicalCreditsPerTerm

Number

The number of credits a full-time student is expected to take. For example, if student is expected to take 12 credits per semester typicalCreditsPerTerm must be 12.

"typicalCreditsPerTerm": "12"

WorkBasedProgram

The full definition of WorkBasedProgram is available at schema.org/WorkBasedProgram. The following properties are required for work-based programs. If the program is available at a cost, add the EducationalOccupationalProgram properties instead.

Required properties
name

Text

The name of the program.

"name": "Electrical Apprenticeship"
occupationalCategory

Text

The occupation towards which training program attendees will be working. If the program trains attendees for multiple occupations, specify multiple values in an array.

Use the BLS SOC-6 code as published in the 2010 SOC guide.

"occupationalCategory" : ["47-2111", "49-9021"]
provider

EducationalOrganization

The educational organization providing the program.

provider.address

PostalAddress

The physical address where students go to take the program. If there are multiple locations for this program, repeat the address as shown in the example for each individual location.

Recommended properties
applicationDeadline

DateTime

The date at which the program will stop accepting applications in ISO-8601 format. If the program is offered more than once per calendar year, specify the deadline for each date that term applications end. If applications are rolling, specify the latest possible date.

"applicationDeadline": "2020-04-01T19:30"
applicationStartDate

DateTime

The date when the program begins collecting applications in ISO-8601 format. If applications are rolling, specify the property for each date that applications for a term begin. If applications are accepted multiple times in a year, specify the earliest possible date.

"applicationStartDate": "2020-04-01T19:30"
description

Text

The description of the program.

"description": "A training program to empower you to expand your
skillset."
endDate

DateTime

The date when the term officially ends, where students are no longer required to show up for classes or exams in ISO-8601 format. If there are multiple end dates, specify the property for each date that the program could end.

"endDate": "2020-04-01T19:30"
maximumEnrollment

Number

The maximum capacity of students that can be enrolled in the program per time it is offered.

"maximumEnrollment": "50"
occupationalCredentialAwarded

EducationalOccupationalCredential

The credential provided upon completion of the program. For example: Associate’s Degree, Certificate.

offers

Offer

The estimated cost for the program, if applicable. The estimated cost can be the total cost of the program or broken down by tuition, fees, and other costs. The cost must be the cost for in-state residents without aid.

Additional guidelines:

  • Offer.price_specification.price must be a number (no other text is accepted).
  • Only include fees that are related to the program. For example: scrubs, estimated cost of required textbooks, shopping cart fees.
  • Don't include fees that aren't required to complete the program. For example, post-graduation tests, pre-admission tests, room and board, health care, child care.
offers.category

Text

The category of the costs that are related to the program. If the tuition is different for in-state and out-of-state students, you can use additional category fields to specify that. You can add similar categories for "In-district", "Out-of-district" and so on. Here are some example values for offers.category:

  • Total Cost
  • Tuition
  • In-state
  • Out-of-state
  • CostPerCredit
  • CostPerTerm
  • Program Fees
  • Books and Supplies Fees
  • Uniform Fees
  • Activities Fees
  • Technology Fees
  • Other Fees
programPrerequisites

EducationalOccupationalCredential

The prerequisites for attending the program.

If you require a high school diploma, set credentialCategory to HighSchool.

salaryUponCompletion

MonetaryAmountDistribution

The actual or estimated hourly wage the trainee will earn upon successful completion of the training. Specify the duration as P1H.

"salaryUponCompletion": {
  "@type": "MonetaryAmountDistribution",
  "currency": "USD",
  "duration": "P1H",
  "median": "20.00"
}
startDate

DateTime

The start date of the program, formatted in ISO-8601 format. If the program is offered more than once per calendar year, specify the property multiple times.

"startDate": "2020-04-01T19:30"
timeToComplete

Text

The time it takes for a full-time student to complete the program in weeks, months, or years, expressed in ISO-8601 format. Express as a typical time for a full-time student to complete. For example:

2 year program P2Y
2 month program P2M
2 month, 2 year "P26M" "P2Y2M"

If you don’t know the duration, we recommend you use the number of credits multiplied by the expected full-time student workload. For example: 48 units divided by 12 units expected per semester for a full-time student x 4 months per semester = 16 months, or less than 1.5 years.

trainingSalary

MonetaryAmountDistribution

The hourly wage the trainee will earn on the first day of the program. Specify the duration as P1H.

"trainingSalary": {
  "@type": "MonetaryAmountDistribution",
  "currency": "USD",
  "duration": "P1H",
  "median": "16.00"
}

EducationalOrganization

The full definition of EducationalOrganization is available at schema.org/EducationalOrganization. If your institution has an accreditation from a certification board, use EducationalOrganization. You can add EducationalOrganization to a top-level page on your site, or as a provider field for a specific program.

Required properties
address

PostalAddress

The address of the main campus. Include as many address properties as possible. The more properties you provide, the higher quality the program is to our users. For example:

"address": {
  "@type": "PostalAddress",
  "streetAddress": "123 Elm Street",
  "addressLocality": "Amherst",
  "addressRegion": "MA",
  "addressCountry": "US",
  "postalCode": "01002"
}
contactPoint

ContactPoint

The main admissions telephone number that a prospective student can contact. Set contactType to Admissions.

"contactPoint": {
  "@type": "ContactPoint",
  "contactType": "Admissions",
  "telephone": "+15551234567"
}
name

Text

The name of the organization.

Recommended properties
Identification

AdministrativeArea

Identification for the organization by using one or any combination of the following properties:

leiCode

Text

The Legal Entity Identifier of the organization.

taxID

Text

The US tax Identification number of the organization.

hasCredential

EducationalOccupationalCredential

The national or regional accreditation granted to the institution, based on US Department of Education accrediting bodies.

"hasCredential": {
  "@type": "EducationalOccupationalCredential",
  "credentialCategory": "Accreditation",
  "recognizedBy": {
    "@type": "Organization",
    "name": "Accrediting Commission of Career Schools and Colleges"
  }
}
hasCredential.credentialCategory

Text

The category of the credential.

"credentialCategory": "Accreditation"
hasCredential.recognizedBy

Organization

The organization that acknowledges the validity, value, or utility of a credential.

"recognizedBy": {
    "@type": "Organization",
    "name": "Accrediting Commission of Career Schools and Colleges"
  }
}
hasCredential.recognizedBy.name

Organization

The name of the recognizing organization.

"name": "Accrediting Commission of Career Schools and Colleges"
subOrganization

EducationalOrganization

Any secondary campuses included within the organization. This is in the event that there are multiple campuses.

subOrganization.address

PostalAddress

The address of the secondary campus. This should be specified if there are multiple campuses.

subOrganization.name

Text

The name of the secondary campus. This should be specified if there are multiple campuses.

Troubleshooting

If you're having trouble implementing structured data, here are some resources that may help you.