{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Lighthouse & Core Web Vitals Audit",
    "description": "Run Google Lighthouse on hundreds of URLs. Get performance, accessibility, best practices and SEO scores, Core Web Vitals (LCP, CLS, TBT, INP), top fixes and full HTML reports. Mobile and desktop. Optional CrUX field data with your own PageSpeed Insights key.",
    "version": "0.1",
    "x-build-id": "4L9DB115Xv4RFwfn9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rod_analytics~lighthouse-audit/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rod_analytics-lighthouse-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/rod_analytics~lighthouse-audit/runs": {
      "post": {
        "operationId": "runs-sync-rod_analytics-lighthouse-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/rod_analytics~lighthouse-audit/run-sync": {
      "post": {
        "operationId": "run-sync-rod_analytics-lighthouse-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": [
          "urls"
        ],
        "properties": {
          "urls": {
            "title": "URLs to audit",
            "type": "array",
            "description": "Pages to audit with Lighthouse. One URL per line. Missing https:// is added automatically. Duplicates are removed.",
            "items": {
              "type": "string"
            }
          },
          "engine": {
            "title": "Engine",
            "enum": [
              "psi",
              "local"
            ],
            "type": "string",
            "description": "PSI (default) calls the Google PageSpeed Insights API with your own free key: no Chrome, 512 MB memory is enough, and you get real user CrUX field data. Without a key the run stops with a short setup guide and nothing is charged. Local runs Lighthouse in real Chrome inside the Actor with no key and no Google quota. Local needs 8 GB memory (set it in Run options) for credible scores.",
            "default": "psi"
          },
          "psiApiKey": {
            "title": "PageSpeed Insights API key",
            "type": "string",
            "description": "Free Google API key, takes 2 minutes. 1) Open the <a href='https://console.cloud.google.com/apis/library/pagespeedonline.googleapis.com'>PageSpeed Insights API page</a> in Google Cloud Console and click Enable (create a project if asked). 2) Open <a href='https://console.cloud.google.com/apis/credentials'>Credentials</a>, click Create credentials > API key. 3) Paste the key here. Free quota: 25,000 requests per day. Stored encrypted. Also adds CrUX field data when engine is Local."
          },
          "strategy": {
            "title": "Device",
            "enum": [
              "mobile",
              "desktop",
              "both"
            ],
            "type": "string",
            "description": "Mobile uses a Moto G Power profile with slow 4G throttling, like PageSpeed Insights. Desktop uses a desktop profile. Both runs two audits per URL.",
            "default": "mobile"
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Lighthouse categories to run. Fewer categories make audits a bit faster.",
            "items": {
              "type": "string",
              "enum": [
                "performance",
                "accessibility",
                "best-practices",
                "seo"
              ],
              "enumTitles": [
                "Performance",
                "Accessibility",
                "Best practices",
                "SEO"
              ]
            },
            "default": [
              "performance",
              "accessibility",
              "best-practices",
              "seo"
            ]
          },
          "throttling": {
            "title": "Throttling",
            "enum": [
              "simulate",
              "devtools",
              "none"
            ],
            "type": "string",
            "description": "Simulate (default) matches PageSpeed Insights and is the most stable. DevTools applies real network and CPU throttling and is slower. None measures raw speed from the Apify data center.",
            "default": "simulate"
          },
          "cpuSlowdown": {
            "title": "Mobile CPU slowdown",
            "enum": [
              "auto",
              "4",
              "3",
              "2",
              "1"
            ],
            "type": "string",
            "description": "Auto measures the CPU of the cloud machine and scales the Lighthouse 4x mobile CPU slowdown so Total Blocking Time is closer to PageSpeed Insights. Pick 4 to use the plain Lighthouse default.",
            "default": "auto"
          },
          "maxConcurrency": {
            "title": "Parallel audits",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many audits run at the same time. Empty means 1 for the local engine and 20 for the PSI engine. Local engine: keep 1 for accurate scores, Chrome needs about 2 CPU cores (8 GB memory on Apify) per audit. Use 2 only with 16 GB. PSI engine: up to 20. Lower it if Google answers with quota errors."
          },
          "includeFullReport": {
            "title": "Save full reports",
            "type": "boolean",
            "description": "Save the full Lighthouse HTML report of every audit to the key-value store. The dataset item links to it in reportUrl.",
            "default": true
          },
          "includeJsonReport": {
            "title": "Also save raw Lighthouse JSON",
            "type": "boolean",
            "description": "Also save the raw Lighthouse JSON (LHR) of every audit, linked in reportJsonUrl. Only needed for your own tooling. The HTML report already contains the same data.",
            "default": false
          },
          "maxOpportunities": {
            "title": "Max opportunities per audit",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many top improvement opportunities to include, sorted by estimated time savings.",
            "default": 10
          },
          "timeoutSecs": {
            "title": "Timeout per audit (seconds)",
            "minimum": 30,
            "maximum": 300,
            "type": "integer",
            "description": "Hard limit for one Lighthouse audit. Failed or timed out audits are retried once and are not charged.",
            "default": 90
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}