{
  "openapi": "3.0.1",
  "info": {
    "title": "SEO Score API: SEO, AI Readiness and Accessibility Audit",
    "description": "Audit a list of URLs with your own SEO Score API key. One row per URL: SEO score, grade, category and AI readiness scores, and a prioritized fix list. A free key audits 2 URLs per day.",
    "version": "0.0",
    "x-build-id": "lNkuP8sAD1gicag7f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/seoscoreapi~seo-score-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-seoscoreapi-seo-score-api",
        "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/seoscoreapi~seo-score-api/runs": {
      "post": {
        "operationId": "runs-sync-seoscoreapi-seo-score-api",
        "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/seoscoreapi~seo-score-api/run-sync": {
      "post": {
        "operationId": "run-sync-seoscoreapi-seo-score-api",
        "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": "One page per line. Each URL uses one audit from your SEO Score API plan. A free key covers 2 URLs per day. Without a key, only the first URL is audited, as a demo.",
            "items": {
              "type": "string"
            }
          },
          "apiKey": {
            "title": "SEO Score API key",
            "type": "string",
            "description": "Your own key, sent in the X-API-Key header. Free keys need no credit card: get one at https://seoscoreapi.com/?utm_source=apify&utm_medium=directory (sign up with your email, then confirm the 6-digit code). Leave it empty to try the Actor: it then runs one demo audit of the first URL, with 2 checks per category and the top 2 fixes."
          },
          "audits": {
            "title": "Audits to run",
            "uniqueItems": true,
            "type": "array",
            "description": "SEO audit works on every plan. The accessibility audit (WCAG 2.1 AA) needs a paid plan and the GEO audit needs Basic or higher; each has its own monthly allowance. An audit your plan does not include is reported on the row, not treated as a failed run.",
            "items": {
              "type": "string",
              "enum": [
                "seo",
                "accessibility",
                "geo"
              ],
              "enumTitles": [
                "SEO audit (all plans)",
                "Accessibility, WCAG 2.1 AA (paid plans)",
                "GEO, AI search visibility (Basic and up)"
              ]
            },
            "default": [
              "seo"
            ]
          },
          "includeCoreWebVitals": {
            "title": "Include Core Web Vitals",
            "type": "boolean",
            "description": "Also measure LCP, INP, CLS, FCP and TTFB with Google PageSpeed Insights and add them to each row as `core_web_vitals`. Off by default because it is slower: about 10 seconds more per URL that was not measured in the last 24 hours. It uses no extra audits and does not change the score. With it on, at most 3 SEO audits run at once.",
            "default": false
          },
          "maxAudits": {
            "title": "Stop after this many API calls",
            "minimum": 1,
            "type": "integer",
            "description": "Optional safety cap on calls made in this run, across all audit types. Leave empty to use whatever your plan has left."
          },
          "maxConcurrency": {
            "title": "Audits in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many audits run at once. The Actor also paces requests to your plan's per-minute limit, so a higher number never breaks the limit.",
            "default": 3
          },
          "includeRawAudit": {
            "title": "Include the full API response",
            "type": "boolean",
            "description": "Adds the unmodified API response for each audit under `audit`, `accessibility_audit` and `geo_audit` (every check, with details). Turn off for a smaller dataset.",
            "default": true
          },
          "requestTimeoutSecs": {
            "title": "Timeout per audit (seconds)",
            "minimum": 10,
            "maximum": 300,
            "type": "integer",
            "description": "Audits usually return in seconds. Heavy pages can take longer. With Core Web Vitals on, an SEO audit is always given at least 60 seconds.",
            "default": 120
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}