{
  "openapi": "3.0.1",
  "info": {
    "title": "PageSpeed Insights Bulk - Core Web Vitals & Lighthouse Audit",
    "description": "Bulk PageSpeed Insights audit and page speed analyzer with real Lighthouse, mobile and desktop, no API key: performance score, LCP, TBT, CLS, FCP, TTFB, page size and top 5 fixes. Monitoring mode with regression alerts, full HTML report, optional real-user CrUX data. Failed pages free.",
    "version": "0.1",
    "x-build-id": "ab95D3LxlAVBPLJjp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~pagespeed-core-web-vitals/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-pagespeed-core-web-vitals",
        "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/scrapewise~pagespeed-core-web-vitals/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-pagespeed-core-web-vitals",
        "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/scrapewise~pagespeed-core-web-vitals/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-pagespeed-core-web-vitals",
        "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": {
          "urls": {
            "title": "Page URLs",
            "type": "array",
            "description": "Pages to audit, one per line (https://example.com/pricing). A bare domain like example.com is read as https://example.com. Each URL becomes one row. Audits run one at a time, about 50 seconds each, so 100 URLs on both devices take about 2.5 hours.",
            "items": {
              "type": "string"
            }
          },
          "devices": {
            "title": "Devices",
            "type": "array",
            "description": "Each device is one Lighthouse audit and one charge. Pick only mobile or only desktop to pay half: you are charged only for the audits that run.",
            "items": {
              "type": "string",
              "enum": [
                "mobile",
                "desktop"
              ],
              "enumTitles": [
                "Mobile (Moto G Power, slow 4G, like PageSpeed Insights)",
                "Desktop"
              ]
            },
            "default": [
              "mobile",
              "desktop"
            ]
          },
          "includeOtherCategories": {
            "title": "Also score accessibility, best practices and SEO",
            "type": "boolean",
            "description": "Adds the other three Lighthouse category scores (0 to 100) to each device. Same price.",
            "default": false
          },
          "saveHtmlReport": {
            "title": "Save the full Lighthouse HTML report",
            "type": "boolean",
            "description": "Saves the complete Lighthouse report of each audit as an HTML page in the run's key-value store and adds its link (htmlReportUrl) to the row. Same price.",
            "default": false
          },
          "throttling": {
            "title": "Throttling",
            "enum": [
              "simulated",
              "devtools",
              "none"
            ],
            "type": "string",
            "description": "How Lighthouse slows the network and CPU. Keep 'simulated' to match PageSpeed Insights settings.",
            "default": "simulated"
          },
          "googleApiKey": {
            "title": "Google API key for real-user data (optional)",
            "type": "string",
            "description": "Optional. Your own free Google Cloud API key with the Chrome UX Report API enabled. With it, each row also gets the p75 LCP, INP, CLS, FCP and TTFB of real Chrome users and whether the page passes Core Web Vitals. Without it, you get the Lighthouse lab data only. The key is used only for your own queries."
          },
          "maxConcurrency": {
            "title": "Audits at a time",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Leave empty: one audit at a time per 4 GB of run memory, which keeps lab timings stable. More at once is faster but makes scores lower and less stable."
          },
          "monitoringMode": {
            "title": "Compare with the previous run (monitoring)",
            "type": "boolean",
            "description": "Remembers the scores of every URL and device in a key-value store of your account (pagespeed-core-web-vitals-history) and adds previousRun, regressions and hasRegression to each row. Made for scheduled runs: you see at once which pages got slower since last time.",
            "default": false
          },
          "regressionThreshold": {
            "title": "Alert when a score drops by at least",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "A category score (performance, accessibility, best practices, SEO) that drops by this many points or more since the previous run counts as a regression.",
            "default": 5
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL (optional)",
            "type": "string",
            "description": "Optional. When monitoring finds regressions, one JSON POST with all of them is sent here at the end of the run (Slack, Discord, Zapier, Make or your own endpoint)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}