{
  "openapi": "3.0.1",
  "info": {
    "title": "Website SEO & Metadata Extractor - Tags, OG & Issues",
    "description": "Extract SEO and metadata from any list of URLs: title, meta description, OpenGraph, Twitter cards, JSON-LD structured data, headings, links, hreflang, feeds and a scored list of actionable SEO issues. Pure HTTP - no browser.",
    "version": "0.1",
    "x-build-id": "XYo8xnVaFjKGzXO9U"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~website-seo-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-website-seo-extractor",
        "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/scrapesage~website-seo-extractor/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-website-seo-extractor",
        "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/scrapesage~website-seo-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-website-seo-extractor",
        "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": "URLs",
            "type": "array",
            "description": "Website URLs to analyse, one per line. A bare domain (<code>example.com</code>) is accepted and gets <code>https://</code>. Duplicates are collapsed. <b>Leave empty and the run returns a small free sample.</b>",
            "items": {
              "type": "string"
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file (one per line)",
            "type": "string",
            "description": "Bulk-load URLs. Either <b>paste the whole list</b> (one per line), or give <b>a single link</b> to a public <code>.txt</code>/<code>.csv</code>, a Google Sheet/Drive share link, or an Apify key-value-store record. Blank lines, <code>#</code> comments, quotes and extra CSV columns all parse. A file that cannot be read says so and charges nothing."
          },
          "includeStructuredData": {
            "title": "Include JSON-LD structured data",
            "type": "boolean",
            "description": "Extract the page's JSON-LD blocks and their @types (Organization, Product, Article, BreadcrumbList, ...). Turn off for a leaner record.",
            "default": true
          },
          "includeHeadings": {
            "title": "Include heading text",
            "type": "boolean",
            "description": "Include the actual <code>h1</code> text (and h1/h2/h3 counts). Counts are always included; this adds the text.",
            "default": true
          },
          "includeLinks": {
            "title": "Count links",
            "type": "boolean",
            "description": "Count internal, external and nofollow links on the page.",
            "default": true
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many URLs to fetch in parallel.",
            "default": 10
          },
          "outputFields": {
            "title": "Output fields (leave empty for all)",
            "type": "array",
            "description": "Pick the fields you want and every record is trimmed to exactly those - handy for lean CSV/Sheets exports. Open the dropdown and tick, or type to filter (<code>title</code>, <code>og</code>, <code>issues</code>).",
            "items": {
              "type": "string",
              "enum": [
                "type",
                "url",
                "finalUrl",
                "httpStatus",
                "redirected",
                "status",
                "error",
                "title",
                "titleLength",
                "metaDescription",
                "descriptionLength",
                "canonical",
                "robotsMeta",
                "isIndexable",
                "metaKeywords",
                "viewport",
                "charset",
                "lang",
                "generator",
                "author",
                "themeColor",
                "ogTitle",
                "ogDescription",
                "ogImage",
                "ogType",
                "ogUrl",
                "ogSiteName",
                "twitterCard",
                "twitterTitle",
                "twitterDescription",
                "twitterImage",
                "h1",
                "h1Count",
                "h2Count",
                "h3Count",
                "jsonLdTypes",
                "structuredData",
                "internalLinks",
                "externalLinks",
                "nofollowLinks",
                "imageCount",
                "imagesMissingAlt",
                "wordCount",
                "hreflang",
                "favicon",
                "feeds",
                "server",
                "xPoweredBy",
                "contentType",
                "pageSizeBytes",
                "seoIssues",
                "seoScore",
                "fetchedAt"
              ],
              "enumTitles": [
                "Record type (type)",
                "URL (url)",
                "Final URL (finalUrl)",
                "HTTP status (httpStatus)",
                "Redirected (redirected)",
                "Status (status)",
                "Error (error)",
                "Title (title)",
                "Title length (titleLength)",
                "Meta description (metaDescription)",
                "Description length (descriptionLength)",
                "Canonical (canonical)",
                "Robots meta (robotsMeta)",
                "Is indexable (isIndexable)",
                "Meta keywords (metaKeywords)",
                "Viewport (viewport)",
                "Charset (charset)",
                "Language (lang)",
                "Generator/CMS (generator)",
                "Author (author)",
                "Theme color (themeColor)",
                "OG title (ogTitle)",
                "OG description (ogDescription)",
                "OG image (ogImage)",
                "OG type (ogType)",
                "OG url (ogUrl)",
                "OG site name (ogSiteName)",
                "Twitter card (twitterCard)",
                "Twitter title (twitterTitle)",
                "Twitter description (twitterDescription)",
                "Twitter image (twitterImage)",
                "H1 text (h1)",
                "H1 count (h1Count)",
                "H2 count (h2Count)",
                "H3 count (h3Count)",
                "JSON-LD types (jsonLdTypes)",
                "Structured data (structuredData)",
                "Internal links (internalLinks)",
                "External links (externalLinks)",
                "Nofollow links (nofollowLinks)",
                "Image count (imageCount)",
                "Images missing alt (imagesMissingAlt)",
                "Word count (wordCount)",
                "Hreflang (hreflang)",
                "Favicon (favicon)",
                "Feeds (feeds)",
                "Server (server)",
                "X-Powered-By (xPoweredBy)",
                "Content type (contentType)",
                "Page size bytes (pageSizeBytes)",
                "SEO issues (seoIssues)",
                "SEO score (seoScore)",
                "Fetched at (fetchedAt)"
              ]
            }
          },
          "maxItems": {
            "title": "Max URLs",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of URLs to analyse in one run (after de-duplication).",
            "default": 100
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Most sites serve their HTML to a plain request, so no proxy is needed by default. Enable a proxy only if a site blocks the fetch."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}