{
  "openapi": "3.0.1",
  "info": {
    "title": "SEO & AI Search Site Audit: Scores, Fixes & Report",
    "description": "Audit public websites for technical SEO and AI search access. Get scored page verdicts, ranked fixes, duplicate content, broken links, schema checks, crawler rules, an HTML report and changes since the previous run. No browser or AI key needed.",
    "version": "0.1",
    "x-build-id": "WMXv8QGU5Y1VAY3mX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zaiq~seo-site-audit/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zaiq-seo-site-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/zaiq~seo-site-audit/runs": {
      "post": {
        "operationId": "runs-sync-zaiq-seo-site-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/zaiq~seo-site-audit/run-sync": {
      "post": {
        "operationId": "run-sync-zaiq-seo-site-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",
        "properties": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Public website URLs. URLs on the same host share one site limit. Empty input audits the small example site. HTTP and HTTPS only; no sign-in.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxPagesPerSite": {
            "title": "Maximum pages per site",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum candidate pages to audit per site, including failed candidates. The crawl follows internal links breadth-first and uses sitemaps to discover additional pages.",
            "default": 100
          },
          "includePatterns": {
            "title": "Include URL patterns",
            "type": "array",
            "description": "Optional glob patterns for full URLs or paths, such as */guides/*. No regex. The start pages must also match.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "excludePatterns": {
            "title": "Exclude URL patterns",
            "type": "array",
            "description": "Glob patterns to skip, such as */cart* or */search?*. Exclusions override inclusions.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "checkExternalLinks": {
            "title": "Check external links",
            "type": "boolean",
            "description": "Check a bounded sample of external links using HEAD, falling back to GET only for servers that reject HEAD. Robots rules still apply. Unchecked links are reported as unverified.",
            "default": false
          },
          "compareWithPrevious": {
            "title": "Compare with previous run",
            "type": "boolean",
            "description": "Compare page issues, indexability and scores in a named key-value store. The same scope is required. Missing pages in partial crawls are never labelled removed. Schedule runs sequentially.",
            "default": false
          },
          "comparisonStoreName": {
            "title": "Comparison store name",
            "type": "string",
            "description": "Your named key-value store, required for comparison. Use 1-63 letters, numbers, underscores or hyphens. Each site and crawl scope has its own baseline.",
            "default": ""
          },
          "requestsPerSecond": {
            "title": "Maximum requests per second per site",
            "minimum": 0.1,
            "maximum": 2,
            "type": "number",
            "description": "Polite request rate, including redirects and auxiliary files. Any longer robots Crawl-delay is respected. A 429 stops requests to that site for this run.",
            "default": 2
          },
          "maxRequestsPerSite": {
            "title": "Maximum HTTP requests per site",
            "minimum": 1,
            "maximum": 25000,
            "type": "integer",
            "description": "Optional hard budget including robots, sitemap files, pages, redirects and retries. Omit to derive a budget from the page limit. External targets also share a bounded site allowance."
          },
          "maxSitemaps": {
            "title": "Maximum sitemap files",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum sitemap and sitemap-index files per site. Supports XML and gzip. Zero disables sitemap discovery; coverage will say so.",
            "default": 12
          },
          "maxExternalLinksPerSite": {
            "title": "Maximum external links to check",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum unique external link targets per audited site when external checks are enabled. Unchecked targets remain unknown.",
            "default": 50
          },
          "requestTimeoutSeconds": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "Timeout per HTTP request. A slow or refused page becomes a free note. Body transfers are bounded at 16 MB compressed and 32 MB decoded.",
            "default": 30
          },
          "maxSiteSeconds": {
            "title": "Time budget per site (seconds)",
            "minimum": 30,
            "maximum": 43200,
            "type": "integer",
            "description": "Stops discovery cleanly and still produces the report. Allow at least 6,000 seconds for a 10,000-page site at two requests per second, and more for slow responses.",
            "default": 1800
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}