{
  "openapi": "3.0.1",
  "info": {
    "title": "Sitemap and URL Status Auditor",
    "description": "Checks every URL in a sitemap for broken links, redirect chains, noindex conflicts and canonical problems. You get a health score and a list of what to fix first. Turn on change tracking to see what changed since the last run. $0.001 per URL, and $0.03 for an optional client report.",
    "version": "0.1",
    "x-build-id": "TBQR1A6k73xcCtg4a"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vizellie~sitemap-url-auditor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vizellie-sitemap-url-auditor",
        "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/vizellie~sitemap-url-auditor/runs": {
      "post": {
        "operationId": "runs-sync-vizellie-sitemap-url-auditor",
        "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/vizellie~sitemap-url-auditor/run-sync": {
      "post": {
        "operationId": "run-sync-vizellie-sitemap-url-auditor",
        "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": "Website or sitemap URLs",
            "type": "array",
            "description": "Websites (for example https://example.com) or sitemap URLs (for example https://example.com/sitemap.xml). For a website, sitemaps are discovered from robots.txt, with /sitemap.xml and /sitemap_index.xml as a fallback. Private and non-public addresses are skipped and are not charged.",
            "items": {
              "type": "string"
            }
          },
          "maxUrls": {
            "title": "Max URLs",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of URLs to check per run (across all inputs). Keeps cost predictable.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests. Kept low by default to be polite to the sites you audit. Requests to the same host are also spaced by \"Min delay per host\" and any robots.txt Crawl-delay (max 10 s).",
            "default": 5
          },
          "sameDomainOnly": {
            "title": "Same domain only",
            "type": "boolean",
            "description": "Only check URLs on the same domain as the input (subdomains included). Off-domain URLs listed in a sitemap are skipped and counted in the summary.",
            "default": true
          },
          "useHeadRequests": {
            "title": "Use HEAD requests (GET fallback)",
            "type": "boolean",
            "description": "Send a light HEAD request first. If the server rejects HEAD or returns an error, the URL is re-checked with GET so you get no false \"broken\" results. HTML pages are then fetched with GET to read title, canonical and meta robots (if \"Check page content\" is on).",
            "default": true
          },
          "checkPageContent": {
            "title": "Check page content (title, canonical, meta robots)",
            "type": "boolean",
            "description": "For HTML pages that return 200, download the first 1 MB and extract title, title length, canonical, meta robots, H1 count and lang. Turn off for a status-only check (faster, less traffic).",
            "default": true
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip URLs that robots.txt disallows for this crawler (they are listed in the summary and not charged). Strongly recommended; only turn off for sites you own.",
            "default": true
          },
          "includeInputUrls": {
            "title": "Also check the input URLs",
            "type": "boolean",
            "description": "Check the website URLs you entered (e.g. the homepage) in addition to the sitemap URLs.",
            "default": true
          },
          "checkRedirectChains": {
            "title": "Flag long redirect chains",
            "type": "boolean",
            "description": "Save the redirect hop count, and flag chains longer than 2 hops.",
            "default": true
          },
          "checkRobotsConflicts": {
            "title": "Flag noindex and robots conflicts",
            "type": "boolean",
            "description": "Flag pages whose index instructions disagree, including sitemap URLs marked noindex.",
            "default": true
          },
          "checkCanonicalMismatch": {
            "title": "Flag canonical mismatches",
            "type": "boolean",
            "description": "Flag HTML pages whose canonical URL is not the final URL after redirects.",
            "default": true
          },
          "staleLastmodDays": {
            "title": "Stale lastmod (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Flag sitemap URLs whose lastmod is older than this many days. Use 0 to turn the check off.",
            "default": 365
          },
          "trackChanges": {
            "title": "Track changes since the last run",
            "type": "boolean",
            "description": "Remember URL statuses and, on the next run, list URLs that newly broke, were added, or disappeared. This is included in the run price.",
            "default": false
          },
          "changesStoreName": {
            "title": "Changes store name",
            "type": "string",
            "description": "Named store for the previous audit. Use a different store or key for each site.",
            "default": "sitemap-audit-state"
          },
          "changesKey": {
            "title": "Changes key",
            "type": "string",
            "description": "Key inside the changes store. Use one key per site so snapshots stay separate.",
            "default": "default"
          },
          "maxSitemaps": {
            "title": "Max sitemaps",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of sitemap files to download (sitemap indexes can contain hundreds).",
            "default": 50
          },
          "maxRedirects": {
            "title": "Max redirects to follow",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Stop following a redirect chain after this many hops. The hop count is saved on every URL.",
            "default": 10
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Per-request timeout.",
            "default": 20
          },
          "minDelayPerHostMs": {
            "title": "Min delay per host (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Minimum time between two requests to the same host.",
            "default": 250
          },
          "report": {
            "title": "Client-ready report",
            "enum": [
              "off",
              "html"
            ],
            "type": "string",
            "description": "Save an HTML report you can hand to a client. Off is the default: the run, the dataset and the price stay as they are today. The report fee is charged once per run, and only after the file is saved.",
            "default": "off"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}