{
  "openapi": "3.0.1",
  "info": {
    "title": "Website Audit & SEO Checker for Local Business Leads",
    "description": "Bulk website audit for local businesses: HTTPS, mobile, SEO basics, outdated technology, contact paths. Reads Google Maps scraper output and writes a plain-words pitch line for each owner.",
    "version": "0.8",
    "x-build-id": "MyNfuKgSoIwvseUMa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maxbuildog~website-audit-seo-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maxbuildog-website-audit-seo-checker",
        "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/maxbuildog~website-audit-seo-checker/runs": {
      "post": {
        "operationId": "runs-sync-maxbuildog-website-audit-seo-checker",
        "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/maxbuildog~website-audit-seo-checker/run-sync": {
      "post": {
        "operationId": "run-sync-maxbuildog-website-audit-seo-checker",
        "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": "Websites to audit (URLs)",
            "type": "array",
            "description": "One entry per website, with a scheme: https://example.com. Only the homepage and a few key pages (contact, about) are visited. Duplicate domains are audited once (a final dot makes no difference: example.fr. is example.fr). Only the ports 80, 443, 8080 and 8443 are audited. Clear this example list if you use the fields below instead. For bare domains use the field \"Domains\". To get your own identifier back on each row, add it as userData.externalId.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "domains": {
            "title": "Domains",
            "type": "array",
            "description": "One bare domain per line, for example example.com or www.example.fr. Use this field to paste a column of domains from a spreadsheet.",
            "items": {
              "type": "string"
            }
          },
          "datasetId": {
            "title": "Dataset of a Google Maps scraper",
            "type": "string",
            "description": "Pick an Apify dataset whose items have a \"website\" field, such as the output of a Google Maps scraper run (or paste its ID). In an integration (scraper run, then this Actor), use {{resource.defaultDatasetId}}. For each item the Actor audits the website and copies title, categoryName, city, placeId and the Google Maps URL to the result. Phone numbers, emails, ratings and reviews of the source are ignored and never copied. Items without a website come back with the status no_website, never charged."
          },
          "businesses": {
            "title": "Businesses (JSON)",
            "type": "array",
            "description": "Advanced: a list of objects like the items of a Google Maps scraper, for example [{\"website\": \"https://x.fr\", \"title\": \"X Plomberie\", \"categoryName\": \"Plumber\", \"city\": \"Lyon\", \"placeId\": \"ChIJ...\", \"externalId\": \"row-12\"}]. Only website, title, categoryName, city, placeId, url (a Google Maps URL) and externalId are used."
          },
          "maxSites": {
            "title": "Maximum number of sites",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many distinct websites. Leave empty for no limit. The run also stops cleanly at your maximum cost per run: no row is charged beyond it. The entries read are capped at ten times this number (1,000 at least, 100,000 at most), the end of a longer input is ignored."
          },
          "maxPagesPerSite": {
            "title": "Pages per site",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "1 to 5. The homepage is always audited; with 2 or more, the contact page and then about, legal and services pages are also read when found. Their contact and tracking signals are merged into the result. With 1, a phone number that cannot be tapped is only reported as information when the site has a contact page (that page is not read).",
            "default": 2
          },
          "checkBrokenLinks": {
            "title": "Check broken links",
            "type": "boolean",
            "description": "Check a sample of up to 10 internal links from the homepage (menu links first) with HEAD requests. Pages disallowed by robots.txt are skipped.",
            "default": true
          },
          "language": {
            "title": "Language of messages",
            "enum": [
              "auto",
              "en",
              "fr"
            ],
            "type": "string",
            "description": "Language of issue messages, fixes, the technical summary and the pitch line. Auto uses the language of each site (French or English); a placeholder page on a French domain gets French; a listing without a website gets the language of its category.",
            "default": "auto"
          },
          "pageSpeedApiKey": {
            "title": "PageSpeed Insights API key (optional)",
            "type": "string",
            "description": "Your own Google PageSpeed Insights API key. When set, the mobile performance score is measured by Google instead of estimated. The key is stored as a secret and never logged."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration (optional)",
            "type": "object",
            "description": "Off by default. Use it only for sites that block datacenter IP addresses. The TLS certificate check is always made directly."
          },
          "maxConcurrency": {
            "title": "Maximum concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Sites audited in parallel (1 to 50).",
            "default": 10
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}