Skip to content
PithLab

↑↓ to move · Enter to open · Esc to close

Schema Markup Generator API

Generate schema.org JSON-LD structured data (Article, FAQ, HowTo, Product, LocalBusiness, Organization, Person, Event, Breadcrumbs, WebSite, Recipe), checked against Google's required and recommended properties.

POST /api/v1/tools/schema-markup-generatorMCP schema_markup_generatorWeb & SEO

Create JSON-LD structured data for articles, FAQs, products, local businesses, events, recipes, breadcrumbs and more, with Google's required fields checked.

Input

Send these as a JSON object. Unknown fields are rejected.

type
The schema.org type to build. (string, one of Article, FAQPage, HowTo, Product, LocalBusiness, Organization, Person, Event, BreadcrumbList, WebSite, Recipe, required)
values
A JSON object of string values keyed by property path. Keys per type: Article: @type, headline, image, datePublished, dateModified, author.name, author.url, publisher.name, publisher.logo. FAQPage: mainEntity. HowTo: name, description, image, totalTime, estimatedCost.value, estimatedCost.currency, supply, tool, step. Product: name, image, description, brand, sku, gtin, offers.price, offers.priceCurrency, offers.availability, offers.itemCondition, offers.url, offers.priceValidUntil, aggregateRating.ratingValue, aggregateRating.reviewCount, aggregateRating.bestRating. LocalBusiness: @type, name, address.streetAddress, address.addressLocality, address.addressRegion, address.postalCode, address.addressCountry, url, telephone, image, priceRange, geo.latitude, geo.longitude, openingHoursSpecification, servesCuisine. Organization: name, url, logo, description, email, telephone, sameAs, address.streetAddress, address.addressLocality, address.addressRegion, address.postalCode, address.addressCountry. Person: name, url, image, jobTitle, worksFor.name, sameAs. Event: name, startDate, endDate, eventAttendanceMode, eventStatus, location.name, location.address.streetAddress, location.address.addressLocality, location.address.addressRegion, location.address.postalCode, location.address.addressCountry, location.url, description, image, offers.price, offers.priceCurrency, offers.url, offers.availability, offers.validFrom, organizer.name, organizer.url, performer.name. BreadcrumbList: itemListElement. WebSite: name, alternateName, url, search. Recipe: name, image, description, author.name, datePublished, prepTime, cookTime, totalTime, recipeYield, recipeCategory, recipeCuisine, keywords, nutrition.calories, recipeIngredient, recipeInstructions, aggregateRating.ratingValue, aggregateRating.reviewCount, aggregateRating.bestRating. Lists (image, supply, tool, recipeIngredient…) are one item per line; FAQ mainEntity is "Question | Answer" per line; steps are "Name | Text" or plain text per line; breadcrumbs are "Name | URL" per line; dates are ISO 8601; durations are ISO 8601 such as PT20M. (string, required)
curl https://pithlab.com/api/v1/tools/schema-markup-generator \n  -H "Authorization: Bearer $PITHLAB_KEY" \n  -H "Content-Type: application/json" \n  -d '{"type":"FAQPage","values":"{\"mainEntity\":\"How long does delivery take? | Two to three working days in the UK.\\nCan I return an item? | Yes, within 30 days of delivery.\"}"}'
Example response
{
  "ok": true,
  "result": {
    "jsonLd": {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "How long does delivery take?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Two to three working days in the UK."
          }
        },
        {
          "@type": "Question",
          "name": "Can I return an item?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes, within 30 days of delivery."
          }
        }
      ]
    },
    "script": "<script type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How long does delivery take?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Two to three working days in the UK.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Can I return an item?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Yes, within 30 days of delivery.\"\n      }\n    }\n  ]\n}\n</script>",
    "errors": [],
    "missingRequired": [],
    "missingRecommended": [],
    "notes": [
      "Google now shows FAQ rich results only for well-known, authoritative government and health sites. The markup is still valid for other sites."
    ]
  }
}