Schema.org · Schema

Schema.org HowTo

Instructions that explain how to achieve a result by performing a sequence of steps.

Schema.orgStructured DataLinked DataJSON-LDVocabularySEOWeb StandardsRDFOntology

Properties

Name Type Description
@type string The Schema.org type.
@context string
name string The name of the how-to guide.
description string A description of the how-to guide.
url string URL of the how-to guide.
image object An image of the completed how-to.
totalTime string The total time required to perform all steps in ISO 8601 duration format.
prepTime string The length of time it takes to prepare the items in ISO 8601 duration format.
performTime string The length of time it takes to perform instructions in ISO 8601 duration format.
estimatedCost object The estimated cost of the supply or supplies consumed when performing instructions.
supply object A sub-property of instrument. A supply consumed when performing instructions or a direction.
tool object A sub-property of instrument. An object used (but not consumed) when performing instructions.
step array The steps in the how-to.
yield string The quantity that results by performing instructions.
author object The author of this how-to guide.
datePublished string Date of first publication.
video object A video of the how-to.
sameAs object URL of a reference Web page that unambiguously indicates the item's identity.
View JSON Schema on GitHub

JSON Schema

schema-org-how-to-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schema.org/schemas/how-to.json",
  "title": "Schema.org HowTo",
  "description": "Instructions that explain how to achieve a result by performing a sequence of steps.",
  "type": "object",
  "required": ["@type", "name", "step"],
  "properties": {
    "@type": {
      "type": "string",
      "description": "The Schema.org type.",
      "enum": ["HowTo", "Recipe"]
    },
    "@context": {
      "type": "string",
      "default": "https://schema.org"
    },
    "name": {
      "type": "string",
      "description": "The name of the how-to guide."
    },
    "description": {
      "type": "string",
      "description": "A description of the how-to guide."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "URL of the how-to guide."
    },
    "image": {
      "oneOf": [
        { "type": "string", "format": "uri" },
        { "$ref": "schema-org-image-object-schema.json" }
      ],
      "description": "An image of the completed how-to."
    },
    "totalTime": {
      "type": "string",
      "description": "The total time required to perform all steps in ISO 8601 duration format."
    },
    "prepTime": {
      "type": "string",
      "description": "The length of time it takes to prepare the items in ISO 8601 duration format."
    },
    "performTime": {
      "type": "string",
      "description": "The length of time it takes to perform instructions in ISO 8601 duration format."
    },
    "estimatedCost": {
      "type": "object",
      "description": "The estimated cost of the supply or supplies consumed when performing instructions.",
      "properties": {
        "@type": { "type": "string", "const": "MonetaryAmount" },
        "currency": { "type": "string" },
        "value": { "type": "number" }
      }
    },
    "supply": {
      "oneOf": [
        { "$ref": "#/$defs/HowToSupply" },
        { "type": "array", "items": { "$ref": "#/$defs/HowToSupply" } }
      ],
      "description": "A sub-property of instrument. A supply consumed when performing instructions or a direction."
    },
    "tool": {
      "oneOf": [
        { "$ref": "#/$defs/HowToTool" },
        { "type": "array", "items": { "$ref": "#/$defs/HowToTool" } }
      ],
      "description": "A sub-property of instrument. An object used (but not consumed) when performing instructions."
    },
    "step": {
      "type": "array",
      "description": "The steps in the how-to.",
      "items": {
        "$ref": "#/$defs/HowToStep"
      }
    },
    "yield": {
      "type": "string",
      "description": "The quantity that results by performing instructions."
    },
    "author": {
      "oneOf": [
        { "$ref": "schema-org-person-schema.json" },
        { "$ref": "schema-org-organization-schema.json" }
      ],
      "description": "The author of this how-to guide."
    },
    "datePublished": {
      "type": "string",
      "format": "date",
      "description": "Date of first publication."
    },
    "video": {
      "$ref": "schema-org-video-object-schema.json",
      "description": "A video of the how-to."
    },
    "sameAs": {
      "oneOf": [
        { "type": "string", "format": "uri" },
        { "type": "array", "items": { "type": "string", "format": "uri" } }
      ],
      "description": "URL of a reference Web page that unambiguously indicates the item's identity."
    }
  },
  "$defs": {
    "HowToStep": {
      "type": "object",
      "description": "A step in the instructions for how to achieve a result.",
      "properties": {
        "@type": { "type": "string", "const": "HowToStep" },
        "name": { "type": "string", "description": "The name of the step." },
        "text": { "type": "string", "description": "The text directions for the step." },
        "url": { "type": "string", "format": "uri", "description": "A URL linking to the step." },
        "image": { "oneOf": [{ "type": "string", "format": "uri" }, { "$ref": "schema-org-image-object-schema.json" }], "description": "An image for the step." },
        "position": { "type": "integer", "description": "The position of the step." },
        "itemListElement": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "@type": { "const": "HowToDirection" },
              "text": { "type": "string" }
            }
          },
          "description": "Detailed elements of this step."
        }
      }
    },
    "HowToSupply": {
      "type": "object",
      "description": "A supply consumed when performing instructions.",
      "properties": {
        "@type": { "type": "string", "const": "HowToSupply" },
        "name": { "type": "string", "description": "The name of the supply." },
        "requiredQuantity": { "type": "number", "description": "The required quantity." },
        "image": { "type": "string", "format": "uri", "description": "An image of the supply." },
        "estimatedCost": { "type": "object", "properties": { "@type": { "const": "MonetaryAmount" }, "currency": { "type": "string" }, "value": { "type": "number" } } }
      }
    },
    "HowToTool": {
      "type": "object",
      "description": "A tool used (but not consumed) when performing instructions.",
      "properties": {
        "@type": { "type": "string", "const": "HowToTool" },
        "name": { "type": "string", "description": "The name of the tool." },
        "image": { "type": "string", "format": "uri", "description": "An image of the tool." }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/schema-org-how-to"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.