{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Health Check: Lighthouse, SEO, Tech Stack",
    "description": "Audit any website: SEO findings ranked by impact with plain-English fixes, tech stack detection with evidence, redirects and status, and optional Lighthouse lab scores (median of several runs) with the cost of each third-party script. Compare runs to catch regressions.",
    "version": "0.1",
    "x-build-id": "47ANTTi6CyPvJGwfT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/quarrywise~website-health-check-lighthouse-seo/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-quarrywise-website-health-check-lighthouse-seo",
        "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/quarrywise~website-health-check-lighthouse-seo/runs": {
      "post": {
        "operationId": "runs-sync-quarrywise-website-health-check-lighthouse-seo",
        "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/quarrywise~website-health-check-lighthouse-seo/run-sync": {
      "post": {
        "operationId": "run-sync-quarrywise-website-health-check-lighthouse-seo",
        "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": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "Pages or sites",
            "minItems": 1,
            "maxItems": 200,
            "type": "array",
            "description": "One address per line: a page (https://example.com/shop) or a site (example.com). https:// is added when missing. Up to 200 addresses per run; pages on the same site are checked one after another at a polite pace.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "quick",
              "full"
            ],
            "type": "string",
            "description": "Quick reads the HTML and headers only (no browser): SEO findings, technologies, redirects and status. Full also runs Lighthouse in headless Chrome on the first pages of each site (see the Lighthouse settings) and adds lab scores, Core Web Vitals lab metrics and the cost of each third-party script. Full mode needs 2 GB of memory.",
            "default": "quick"
          },
          "maxPagesPerSite": {
            "title": "Pages per site",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "1 checks only the addresses you list. A higher number also checks pages from the site's sitemap (found through robots.txt or /sitemap.xml) until this many pages per site are checked.",
            "default": 1
          },
          "lighthouseDevices": {
            "title": "Lighthouse devices",
            "type": "array",
            "description": "Full mode: run Lighthouse as a mid-range phone on a slow 4G connection (mobile; Google indexes the mobile version of pages, but these are lab results, not the real-visitor data Google uses), as a desktop, or both. Each device is a separate lab run.",
            "items": {
              "type": "string",
              "enum": [
                "mobile",
                "desktop"
              ],
              "enumTitles": [
                "Mobile",
                "Desktop"
              ]
            },
            "default": [
              "mobile"
            ]
          },
          "lighthouseRuns": {
            "title": "Lighthouse runs per device",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Full mode: lab scores vary from run to run. With 3 or 5 runs you get the median plus the lowest and highest value, which is what you need to compare before and after a change. 1 is cheapest.",
            "default": 1
          },
          "lighthouseMaxPagesPerSite": {
            "title": "Lighthouse pages per site",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Full mode: Lighthouse runs on this many pages per site (the addresses you list first, then sitemap pages). The other pages get the quick checks only. At most 30 Lighthouse page loads per site per run (pages x devices x runs), spaced at least 5 seconds apart.",
            "default": 5
          },
          "budgets": {
            "title": "Budgets (pass or fail)",
            "type": "object",
            "description": "Optional limits; each page row gets budget_status pass or fail with the failures listed. Minimum scores (0 to 100): performance, accessibility, best_practices, lighthouse_seo, seo_score. Maximums: lcp_ms, cls, tbt_ms, fcp_ms, total_bytes, third_party_bytes, max_serious_issues (critical plus high findings). Lab budgets compare the lab median per device. Example: {\"performance\": 70, \"lcp_ms\": 2500, \"cls\": 0.1, \"seo_score\": 80}"
          },
          "watchId": {
            "title": "Watch ID (compare with the previous run)",
            "pattern": "^[A-Za-z0-9._-]{1,64}$",
            "type": "string",
            "description": "Optional name for this set of pages (letters, digits, '.', '_' or '-'), for example shop-weekly. Each run with the same watch ID is compared with the previous one: score and lab metric changes (flagged when beyond normal lab variation), new and resolved findings, technologies added or removed. Use it for scheduled monitoring and for before and after checks of a speed app or theme change."
          },
          "includeMarkdown": {
            "title": "Add a Markdown report to each row",
            "type": "boolean",
            "description": "Adds report_markdown to each page row: the findings, fixes and lab table as Markdown, handy for AI agents and tickets. The full report for the run is always in the REPORT record.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}