{
  "openapi": "3.0.1",
  "info": {
    "title": "Loom Transcript API: Captions and Monitoring",
    "description": "Loom transcript scraper for public share, embed, iframe, and raw ID inputs. Export captions as TXT, segments, SRT, or VTT with metadata, deduplication, and NEW, UPDATED, UNCHANGED, or REMOVED monitoring events.",
    "version": "1.1",
    "x-build-id": "sFRvDjfinIFQ6j8EP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~loom-transcript-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-loom-transcript-scraper",
        "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/getascraper~loom-transcript-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-loom-transcript-scraper",
        "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/getascraper~loom-transcript-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-loom-transcript-scraper",
        "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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Loom Video URLs",
            "type": "array",
            "description": "Public Loom share URLs, embed URLs, iframe snippets, or bare 32-character video IDs. When discovery is enabled, a public Loom page can contribute only the share or embed links it visibly contains.",
            "default": [
              {
                "url": "https://www.loom.com/share/912e89a68ccc42c5ab5096fec7cd63d6"
              }
            ],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "discoverFromPages": {
            "title": "Discover public Loom links from supplied Loom pages",
            "type": "boolean",
            "description": "When enabled, a supplied public Loom page that is not itself a video is read only for visible public share or embed links. It does not guess folder membership or bypass access controls.",
            "default": false
          },
          "urls": {
            "title": "Video URLs (alias)",
            "type": "array",
            "description": "Compatibility alias for Loom Video URLs. Paste share links, embed links, iframe snippets, or raw video IDs.",
            "items": {
              "type": "string"
            }
          },
          "videoUrls": {
            "title": "Video URLs (alias)",
            "type": "array",
            "description": "Compatibility alias for Loom Video URLs, useful for generic video workflows.",
            "items": {
              "type": "string"
            }
          },
          "transcriptFormats": {
            "title": "Transcript Formats",
            "type": "array",
            "description": "Formats to include in the output. Plain text (txt) and timestamped segments (segments) are on by default. Add srt or vtt for subtitle workflows.",
            "default": [
              "txt",
              "segments"
            ]
          },
          "skipVideosWithoutTranscript": {
            "title": "Skip Videos Without Transcript",
            "type": "boolean",
            "description": "When enabled, videos with no native captions are excluded from the dataset entirely. By default, they are included with metadata only and a transcriptStatus of unavailable.",
            "default": false
          },
          "includeEngagementStats": {
            "title": "Include Engagement Stats",
            "type": "boolean",
            "description": "Include view count, unique viewer count, comment count, and emoji reactions in the output.",
            "default": true
          },
          "includeVideoDownloadUrl": {
            "title": "Include Video Download URL",
            "type": "boolean",
            "description": "Include a direct MP4 download link when one is available from the video page. Download links are temporary and expire after a short period.",
            "default": true
          },
          "maxVideos": {
            "title": "Max Videos",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Maximum number of videos to process per run. Set to 0 for no limit.",
            "default": 0
          },
          "monitorMode": {
            "title": "Track new and changed videos",
            "type": "boolean",
            "description": "Persist a named snapshot and label each successful result as NEW, UPDATED, or UNCHANGED. A source HTTP 404 is labeled REMOVED only when Loom explicitly returns that response. Failed requests never erase prior state.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional stable name for an independent saved monitor. Leave blank to use the default monitor."
          },
          "requestConcurrency": {
            "title": "Request Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of videos to fetch in parallel. Increase for faster runs on large batches. Decrease if you see rate-limit errors.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Datacenter proxies work well for Loom and are included by default. Switch to Residential only for very high-volume runs where you see blocks.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}