{
  "openapi": "3.0.1",
  "info": {
    "title": "SEO Audit Tool: Sitemap & Indexability",
    "description": "Extract every URL from a site's sitemaps and audit indexability. Reads robots.txt, follows sitemap index files, then checks HTTP status, redirects, canonical tags, noindex, hreflang, titles, meta descriptions, headings, image alt text and internal links. Every finding carries severity and evidence.",
    "version": "0.1",
    "x-build-id": "l7bbuy8rWw3FQ0jY3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiorasolutions~sitemap-seo-audit/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiorasolutions-sitemap-seo-audit",
        "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/axiorasolutions~sitemap-seo-audit/runs": {
      "post": {
        "operationId": "runs-sync-axiorasolutions-sitemap-seo-audit",
        "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/axiorasolutions~sitemap-seo-audit/run-sync": {
      "post": {
        "operationId": "run-sync-axiorasolutions-sitemap-seo-audit",
        "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": [
          "sites"
        ],
        "properties": {
          "sites": {
            "title": "Sites",
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "One site per entry. A bare domain, a full URL or an explicit sitemap URL all work: example.com, https://example.com, https://example.com/sitemap_index.xml. A sitemap URL is used directly and skips discovery.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "audit",
              "extract-urls"
            ],
            "type": "string",
            "description": "extract-urls only collects the URL list and is very cheap. audit fetches every URL and reports indexability, canonicals, meta and links. Use extract-urls first to size a site before paying for a full audit.",
            "default": "audit"
          },
          "maxUrlsPerSite": {
            "title": "Max URLs per site",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap the number of URLs taken from a site's sitemaps. This is the number that ultimately controls your bill in audit mode.",
            "default": 500
          },
          "maxUrlsTotal": {
            "title": "Max URLs for the whole run",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Hard ceiling across all sites. The run stops cleanly when it is reached.",
            "default": 2000
          },
          "maxSitemapsPerSite": {
            "title": "Max sitemaps per site",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Limit how many sitemap files are followed, including nested sitemap index files. Large publishers can have thousands.",
            "default": 30
          },
          "urlPattern": {
            "title": "Include URL pattern",
            "type": "string",
            "description": "Keep only URLs matching this regular expression, for example /blog/ to audit just the blog. Leave empty to audit everything."
          },
          "excludeUrlPattern": {
            "title": "Exclude URL pattern",
            "type": "string",
            "description": "Drop URLs matching this regular expression, for example \\? to skip anything with query parameters."
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Skip URLs the site disallows for automated clients. Leave this on unless you own the site or have permission. URLs skipped this way are reported, not audited, and are not billed as page audits.",
            "default": true
          },
          "checkInternalLinks": {
            "title": "Extract internal links",
            "type": "boolean",
            "description": "Record internal and external links found on each audited page, so you can build a broken-link report from the same dataset. Adds no requests.",
            "default": true
          },
          "includeImageAlt": {
            "title": "Check image alt text",
            "type": "boolean",
            "description": "Count images and list those missing alt text, up to your chosen limit.",
            "default": true
          },
          "maxImagesReported": {
            "title": "Max images reported per page",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Cap the list of image URLs on each page so the dataset stays manageable.",
            "default": 50
          },
          "requestTimeoutSecs": {
            "title": "Request timeout",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "Give up on a single page after this many seconds. Slow pages are reported as TIMEOUT findings rather than failing the run.",
            "default": 20
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Auditing reports the status the server actually returns, so running without a proxy gives the truest result. Enable datacenter proxy rotation only if a site starts rate-limiting a large audit.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}