Get container

JSON-LD Structure - Documentation

This documentation describes the JSON-LD data structure compliant with Schema.org that will be returned in the jsonLd key.

Overview

The main structure is an ItemList object that contains a list of videos (VideoObject). Each video can be divided into multiple clips (Clip), and each clip can be associated with products (Product) or contain a redirect URL.

Main Structure

{
  "jsonLd": {
    "@context": "https://schema.org",
    "@type": "ItemList",
    "name": "string",
    "numberOfItems": number,
    "itemListElement": [...]
  }
}

Data Types

ItemList

The root structure that contains the list of videos.

PropertyTypeRequiredDescription
@contextstringJSON-LD Schema.org context (always "https://schema.org")
@typestringSchema.org type (always "ItemList")
namestringName of the video list
numberOfItemsnumberTotal number of videos in the list
itemListElementListItem[]Array containing the list items

ListItem

Represents an item in the list (a video).

PropertyTypeRequiredDescription
@typestringSchema.org type (always "ListItem")
positionnumberPosition of the item in the list (starts at 1)
itemVideoObjectThe associated video object

VideoObject

Represents a complete video with its metadata.

PropertyTypeRequiredDescription
@typestringSchema.org type (always "VideoObject")
namestringVideo title
descriptionstringDetailed description of the video
contentUrlstringURL of the video file (URI format)
encodingFormatstringEncoding format (e.g., "video/mp4")
inLanguagestringLanguage code (e.g., "fr", "en")
thumbnailUrlstringURL of the thumbnail image (URI format)
durationstringDuration in ISO 8601 format (e.g., "PT5M30S" for 5 minutes 30 seconds)
uploadDatestringUpload date in ISO 8601 format (e.g., "2025-01-15T10:30:00Z")
transcriptstringText transcript of the video
hasPartClip[]Array of clips that compose the video

ISO 8601 Duration Format:

  • PT2M30S = 2 minutes 30 seconds
  • PT1H15M = 1 hour 15 minutes
  • PT45S = 45 seconds

Clip

Represents a segment or clip of a video.

PropertyTypeRequiredDescription
@typestringSchema.org type (always "Clip")
namestringName of the clip
startOffsetnumberStart point of the clip in seconds
endOffsetnumberEnd point of the clip in seconds
authorPerson | OrganizationAuthor of the clip (see sections below)
urlstringRedirect URL to content related to the video (URI format)
subjectOfProduct[]List of products associated with the clip

Note: A clip can have an author, a url, subjectOf, a combination of these elements, or none of them.

Person

Represents a person (used for clips from Instagram).

PropertyTypeRequiredDescription
@typestringSchema.org type (always "Person")
namestringName of the person
sameAsstringInstagram profile URL (URI format)

Organization

Represents an organization or company (used for non-Instagram clips).

PropertyTypeRequiredDescription
@typestringSchema.org type (always "Organization")
namestringName of the organization
urlstringCompany website URL (URI format)

Product

Represents a product associated with a clip.

PropertyTypeRequiredDescription
@typestringSchema.org type (always "Product")
namestringProduct name
descriptionstringDetailed product description
urlstringProduct page URL (URI format)
imagestringProduct image URL (URI format)
gtinstringGlobal Trade Item Number (GTIN-8, GTIN-12, GTIN-13, or GTIN-14)
offersOfferProduct offer/price information

Offer

Represents a commercial offer for a product.

PropertyTypeRequiredDescription
@typestringSchema.org type (always "Offer")
priceCurrencystringISO currency code (e.g., "EUR", "USD")
pricestring | numberProduct price (can be a string or a number)
urlstringPurchase page URL (URI format)

Complete Example

{
  "jsonLd": {
    "@context": "https://schema.org",
    "@type": "ItemList",
    "name": "Video Gallery",
    "numberOfItems": 1,
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "item": {
          "@type": "VideoObject",
          "name": "Makeup Tutorial",
          "description": "Learn the basics",
          "contentUrl": "https://example.com/video.mp4",
          "encodingFormat": "video/mp4",
          "inLanguage": "fr",
          "thumbnailUrl": "https://example.com/thumbnail.jpg",
          "duration": "PT5M30S",
          "uploadDate": "2025-01-15T10:30:00Z",
          "transcript": "Hello and welcome...",
          "hasPart": [
            {
              "@type": "Clip",
              "name": "Introduction",
              "startOffset": 0,
              "endOffset": 30,
              "author": {
                "@type": "Person",
                "name": "Marie Dubois",
                "sameAs": "https://www.instagram.com/marie_beauty"
              },
              "url": "https://example.com/articles/intro",
              "subjectOf": [
                {
                  "@type": "Product",
                  "name": "Moisturizing Cream",
                  "description": "Face cream",
                  "url": "https://example.com/products/cream",
                  "image": "https://example.com/images/cream.jpg",
                  "gtin": "3614272049499",
                  "offers": {
                    "@type": "Offer",
                    "priceCurrency": "EUR",
                    "price": "24.99",
                    "url": "https://example.com/products/cream"
                  }
                }
              ]
            }
          ]
        }
      }
    ]
  }
}

Use Cases

Clip with Person Author (Instagram)

{
  "@type": "Clip",
  "name": "Segment 1",
  "startOffset": 0,
  "endOffset": 30,
  "author": {
    "@type": "Person",
    "name": "John Doe",
    "sameAs": "https://www.instagram.com/johndoe"
  }
}

Clip with Organization Author (Company)

{
  "@type": "Clip",
  "name": "Segment 1",
  "startOffset": 0,
  "endOffset": 30,
  "author": {
    "@type": "Organization",
    "name": "My Company",
    "url": "https://www.my-company.com"
  }
}

Clip with Redirect URL

{
  "@type": "Clip",
  "name": "Segment 1",
  "startOffset": 0,
  "endOffset": 30,
  "url": "https://example.com/related-content"
}

Clip with Products

{
  "@type": "Clip",
  "name": "Segment 1",
  "startOffset": 0,
  "endOffset": 30,
  "subjectOf": [
    {
      "@type": "Product",
      "name": "Product 1",
      "description": "Product description",
      "url": "https://example.com/product1",
      "image": "https://example.com/image1.jpg",
      "gtin": "3614272049499",
      "offers": {
        "@type": "Offer",
        "priceCurrency": "EUR",
        "price": "99.99",
        "url": "https://example.com/product1"
      }
    }
  ]
}

Important Notes

  1. Schema.org Compliance: This structure is compliant with Schema.org specifications, which enables better indexing by search engines.

  2. Date Format: Dates must be in ISO 8601 format with timezone (e.g., "2025-01-15T10:30:00Z").

  3. Duration Format: Durations must be in ISO 8601 format (e.g., "PT5M30S").

  4. URLs: All URLs must be valid URIs (starting with http:// or https://).

  5. Optional Properties: Properties marked as optional (❌) can be omitted if they are not available.

  6. Clip Author: A clip can have an author of type Person (for Instagram) or Organization (for companies), but not both.

  7. Multiple Products: A clip can be associated with multiple products via the subjectOf array.

Language
Click Try It! to start a request and see the response here!