{
  "openapi": "3.0.1",
  "info": {
    "title": "CNN Videos Scraper",
    "description": "Collects video metadata from the six CNN editions that publish a video feed -- US, International, Espanol, Arabic, Indonesia and Portugal -- returning title, description, duration, thumbnail, upload date and embed URL, with archive access back to 2015. Never downloads the media itself.",
    "version": "0.1",
    "x-build-id": "com34zoTg6by3pWOf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~cnn-videos-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-cnn-videos-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/scrapyx~cnn-videos-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-cnn-videos-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/scrapyx~cnn-videos-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-cnn-videos-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",
        "properties": {
          "editions": {
            "title": "CNN editions",
            "type": "array",
            "description": "Which CNN editions to pull video metadata from. Only six publish a video feed at all. The other six are listed here so you get a clear explanation rather than a silent miss -- asking for them returns an ERROR row naming exactly why (no video sitemap, or an empty video RSS).",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "intl",
                "espanol",
                "arabic",
                "indonesia",
                "portugal",
                "brasil",
                "chile",
                "czech",
                "greece",
                "japan",
                "turkiye"
              ],
              "enumTitles": [
                "CNN US (has video)",
                "CNN International (has video)",
                "CNN en Espanol (has video)",
                "CNN Arabic (has video)",
                "CNN Indonesia (has video)",
                "CNN Portugal (has video)",
                "CNN Brasil (NO video feed)",
                "CNN Chile (NO video feed)",
                "CNN Prima News (NO video feed)",
                "CNN Greece (NO video feed)",
                "CNN.co.jp (NO video feed)",
                "CNN Turk (NO video feed)"
              ]
            },
            "default": [
              "us"
            ]
          },
          "sections": {
            "title": "Sections",
            "type": "array",
            "description": "Optional. On CNN Indonesia each section has its own video feed, so a section becomes its own query: nasional, internasional, ekonomi, olahraga, teknologi, otomotif, hiburan, gaya-hidup (edukasi has no video feed). On CNN US, International and en Espanol sections instead select which archive partitions get fetched, and only when 'Include archive' is on.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keyword filter (client-side)",
            "type": "array",
            "description": "Optional. Keep only videos whose title or description contains one of these words (case-insensitive, OR-combined). Applied after fetching -- no CNN video sitemap accepts a query parameter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItemsPerEdition": {
            "title": "Max videos per edition",
            "minimum": 0,
            "type": "integer",
            "description": "Cap on videos returned per edition (or per edition+section pair). Set to 0 for unlimited. With 'Fetch video detail page' on, each video costs one extra request.",
            "default": 25
          },
          "includeVideoDetail": {
            "title": "Fetch video detail page",
            "type": "boolean",
            "description": "Fetch each video's own page for the VideoObject metadata -- title, description, duration, thumbnail, upload date, content and embed URLs. Required for CNN US, International, Espanol and Arabic, whose sitemaps carry no video metadata at all. CNN Indonesia and CNN Portugal embed it in the feed, so they return usable rows even with this off.",
            "default": true
          },
          "includeArchive": {
            "title": "Include archive (older videos)",
            "type": "boolean",
            "description": "Fetch more than one archive partition per edition. CNN US and International partition video by section and month back to 2015 (2,387 partitions); Espanol has 2,331. Off by default, which fetches only the newest partition.",
            "default": false
          },
          "maxArchivePartitions": {
            "title": "Max archive partitions per edition",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many archive sitemap files to fetch per edition when 'Include archive' is on, newest first. Ignored when it is off.",
            "default": 12
          },
          "dateFrom": {
            "title": "Published from (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional lower bound on publish date, inclusive. CNN Indonesia's video sitemap carries no date field at all, so its dates are derived from the timestamp in each video's URL and flagged `videoUploadDateSource: url-derived`."
          },
          "dateTo": {
            "title": "Published to (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional upper bound on publish date, inclusive."
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Upper bound on requests in flight at once across all editions in this run.",
            "default": 5
          },
          "minRequestInterval": {
            "title": "Min seconds between request starts",
            "minimum": 0,
            "type": "number",
            "description": "Shared pacing floor across every request this run makes. Once this cap binds, raising concurrency buys nothing.",
            "default": 0.25
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy on the shared datacenter pool. This is the default because it is included in your plan at no extra cost and this target works through it. If you start seeing blocks, challenges or empty results, switch the group here to Residential -- it uses real consumer IPs and gets through more, but Apify bills residential traffic per gigabyte, so leave it off unless you need it.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}