{
  "openapi": "3.0.1",
  "info": {
    "title": "YouTube Shopping Scraper & Creator Intelligence",
    "description": "Scrape public YouTube Shopping product tags and analyze creators, products, brands, and placement changes.",
    "version": "0.2",
    "x-build-id": "vPaGBJhw8aLrE8Ise"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glossy_craftsman~youtube-shopping-scraper-intelligence/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glossy_craftsman-youtube-shopping-scraper-intelligence",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/glossy_craftsman~youtube-shopping-scraper-intelligence/runs": {
      "post": {
        "operationId": "runs-sync-glossy_craftsman-youtube-shopping-scraper-intelligence",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/glossy_craftsman~youtube-shopping-scraper-intelligence/run-sync": {
      "post": {
        "operationId": "run-sync-glossy_craftsman-youtube-shopping-scraper-intelligence",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode",
          "dataSource"
        ],
        "properties": {
          "mode": {
            "title": "Analysis mode",
            "enum": [
              "placements",
              "creator_intelligence",
              "product_intelligence",
              "brand_share_of_voice",
              "monitor"
            ],
            "type": "string",
            "description": "Choose raw placements, creator/product/brand intelligence, or recurring change monitoring.",
            "default": "placements"
          },
          "dataSource": {
            "title": "Data source",
            "enum": [
              "youtube",
              "existing_dataset"
            ],
            "type": "string",
            "description": "Scrape YouTube now, or reuse placement rows from a previous Raw shopping placements Dataset without opening YouTube pages again.",
            "default": "youtube"
          },
          "sourceDatasetId": {
            "title": "Source Raw Dataset ID",
            "type": "string",
            "description": "Required when Data source is an existing Dataset. Paste the Dataset ID or a Console/API Dataset URL from a Raw shopping placements run.",
            "default": ""
          },
          "queries": {
            "title": "YouTube searches and sources",
            "type": "array",
            "description": "Used only when Data source is Scrape YouTube now. Search the suggestions by typing any word, select several ideas, or enter your own value. Valid values: plain YouTube search phrases such as `gaming PC build` or `Korean beauty haul`; video URLs (`youtube.com/watch?v=...`); Shorts URLs (`youtube.com/shorts/...`); channel or Store URLs; and handles such as `@peachietech`.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "amazon tech finds",
                "gaming PC build",
                "home office setup",
                "desk setup accessories",
                "smart home gadgets",
                "phone accessories review",
                "camera gear review",
                "creator gear setup",
                "Korean beauty haul",
                "skincare routine products",
                "makeup tutorial products",
                "fashion haul",
                "home organization products",
                "kitchen gadgets review",
                "fitness equipment review",
                "travel essentials",
                "baby products review",
                "pet products review",
                "gift ideas",
                "YouTube shopping haul"
              ],
              "enumTitles": [
                "Amazon tech finds",
                "Gaming PC builds",
                "Home office setups",
                "Desk setup accessories",
                "Smart home gadgets",
                "Phone accessory reviews",
                "Camera gear reviews",
                "Creator gear setups",
                "Korean beauty hauls",
                "Skincare routine products",
                "Makeup tutorial products",
                "Fashion hauls",
                "Home organization products",
                "Kitchen gadget reviews",
                "Fitness equipment reviews",
                "Travel essentials",
                "Baby product reviews",
                "Pet product reviews",
                "Gift ideas",
                "YouTube shopping hauls"
              ]
            }
          },
          "brands": {
            "title": "Brands to track",
            "type": "array",
            "description": "Optional canonical brand names. Placements are matched from titles, merchant names, and URLs.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "geo": {
            "title": "Shopping market",
            "minLength": 2,
            "maxLength": 2,
            "type": "string",
            "description": "Two-letter country code controlling localized YouTube product offers.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code used for localized YouTube pages, for example en or ko.",
            "default": "en"
          },
          "maxVideosPerInput": {
            "title": "Maximum videos per channel or search",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Hard limit on videos opened for each channel or search phrase.",
            "default": 20
          },
          "maxProductsPerInput": {
            "title": "Maximum product placements per input",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on placement rows retained per YouTube input, or loaded in total from an existing Dataset.",
            "default": 500
          },
          "includeChannelStore": {
            "title": "Include channel Store tab",
            "type": "boolean",
            "description": "For channel inputs, inspect the public Store surface as well as recent videos.",
            "default": true
          },
          "includeDescriptionLinks": {
            "title": "Include unverified description links",
            "type": "boolean",
            "description": "Emit commerce-looking description links as low-confidence leads. They are not treated as verified Shopping tags.",
            "default": false
          },
          "includeRawPlacements": {
            "title": "Append raw rows to summary modes",
            "type": "boolean",
            "description": "For creator, product, and brand summaries only, append the underlying placement rows. This increases output rows and PPE charges. Monitor mode never appends raw rows.",
            "default": false
          },
          "onlyVerifiedPlacements": {
            "title": "Only verified product-card placements",
            "type": "boolean",
            "description": "Exclude low-confidence description links and incomplete product candidates.",
            "default": true
          },
          "watchName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Stable name for comparing repeated monitor runs.",
            "default": "youtube-shopping-watch"
          },
          "emitRemovedCandidates": {
            "title": "Report missing placements as removal candidates",
            "type": "boolean",
            "description": "A missing public placement can also mean incomplete page coverage; removals are labelled as candidates.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of simultaneous YouTube page requests.",
            "default": 5
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Maximum time allowed for each individual HTTP request.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Datacenter access is attempted first when proxy use is disabled.",
            "default": {
              "useApifyProxy": false
            }
          },
          "debug": {
            "title": "Debug logging",
            "type": "boolean",
            "description": "Enable additional diagnostic logging for development and troubleshooting.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}