{
  "openapi": "3.0.1",
  "info": {
    "title": "SEO Fields Scraper",
    "description": "Extracts website SEO metadata with titles, descriptions, canonicals, robots tags, headings, Open Graph fields, and audit issues. Export data, run via API, schedule and monitor runs, or integrate with other tools.",
    "version": "0.1",
    "x-build-id": "ahnJB3gOF1m3H6AeI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trovevault~seo-fields-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trovevault-seo-fields-scraper",
        "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/trovevault~seo-fields-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trovevault-seo-fields-scraper",
        "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/trovevault~seo-fields-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trovevault-seo-fields-scraper",
        "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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "One or more website URLs to audit for SEO metadata. The actor fetches each URL, extracts title, meta description, canonical, robots, headings, Open Graph, Twitter Card fields, and optionally follows same-domain HTML links. Accepts full public URLs such as `https://apify.com/` or sitemap URLs such as `https://apify.com/sitemap.xml`. Start with a homepage or sitemap for site audits, and use specific URLs for page QA or competitor checks.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxPages": {
            "title": "Max Pages",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum number of pages to output across the run. The actor stops creating successful page rows after this cap, while still reporting structured errors for failed seed URLs. Use 3 to 10 for smoke tests and 25 to 200 for practical website audits. Higher values cover more pages but increase run time and request cost.",
            "default": 25
          },
          "crawlDepth": {
            "title": "Crawl Depth",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "How many link levels to follow from each HTML start URL. `0` audits only the provided URLs, `1` also audits links found on those pages, and higher values crawl deeper within the same website when allowed. Recommended: `0` for known page lists, `1` for fast site samples, and `2` only when you need broader coverage.",
            "default": 1
          },
          "requestTimeoutSecs": {
            "title": "Request Timeout (seconds)",
            "minimum": 5,
            "maximum": 120,
            "type": "integer",
            "description": "HTTP timeout for each page or sitemap request. The actor uses this limit when fetching HTML and XML over the network. Use 20 to 30 seconds for most public websites, and increase it only for slow sites. Higher values reduce false timeout errors but make blocked or broken URLs take longer to finish.",
            "default": 30
          },
          "renderingMode": {
            "title": "Rendering Mode",
            "enum": [
              "HTTP_ONLY",
              "BROWSER_FALLBACK",
              "BROWSER_ONLY"
            ],
            "type": "string",
            "description": "Controls whether the actor uses only fast HTTP requests or opens a real browser for JavaScript-rendered pages. `HTTP_ONLY` is cheapest and best for most SEO audits because many sites put title, meta description, canonical, robots, Open Graph, and Twitter tags in raw HTML. `BROWSER_FALLBACK` tries HTTP first, then uses Playwright only when the raw HTML has sparse metadata; this is recommended for mixed websites. `BROWSER_ONLY` renders every page in a browser, which helps JavaScript-heavy sites but is slower and more expensive. Browser mode does not guarantee success on strongly protected websites such as Amazon; use Apify Proxy and small page limits for those tests.",
            "default": "HTTP_ONLY"
          },
          "browserWaitSecs": {
            "title": "Browser Wait (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Extra time to wait after a browser page reaches DOMContentLoaded when `renderingMode` uses Playwright. This gives JavaScript frameworks time to inject title, meta, canonical, social, or heading tags before extraction. Use 3 to 5 seconds for most rendered pages, 8 to 15 seconds for slow single-page apps, and keep it low for large crawls because every additional second increases runtime and cost. This field is ignored in `HTTP_ONLY` mode.",
            "default": 5
          },
          "sameDomainOnly": {
            "title": "Same Domain Only",
            "type": "boolean",
            "description": "When enabled, the actor follows only links on the same hostname as each start URL. This keeps website audits focused and prevents third-party social, payment, CDN, or documentation links from consuming the page limit. Disable it only when you deliberately want to audit linked external pages.",
            "default": true
          },
          "includeOpenGraph": {
            "title": "Include Open Graph",
            "type": "boolean",
            "description": "When enabled, the actor extracts Open Graph fields such as `og:title`, `og:description`, `og:image`, `og:type`, and `og:url`. These fields are useful for social previews, content QA, and competitor metadata reviews. Disable this field only if you want a smaller dataset focused on core search metadata.",
            "default": true
          },
          "includeTwitterCards": {
            "title": "Include Twitter Cards",
            "type": "boolean",
            "description": "When enabled, the actor extracts Twitter Card fields such as `twitter:title`, `twitter:description`, `twitter:image`, `twitter:card`, and `twitter:site`. These fields help validate social sharing previews and metadata consistency. Disable this field for simpler technical SEO exports.",
            "default": true
          },
          "includeHeadings": {
            "title": "Include Headings",
            "type": "boolean",
            "description": "When enabled, the actor extracts the first H1, H1 count, and a small sample of H2 headings. Use it to catch missing or duplicated H1s and compare page titles against visible content. Disable it when you only need HTML head metadata fields.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings for website requests. The actor applies this configuration to HTML pages, sitemap files, and discovered links. Enable Apify Proxy, preferably residential groups, when the target website returns HTTP 403, 429, CAPTCHA, Cloudflare, or region-specific blocks. Leave it disabled for open websites to keep runs cheaper and simpler.",
            "default": {
              "useApifyProxy": false
            }
          },
          "datasetId": {
            "title": "Dataset ID (optional)",
            "type": "string",
            "description": "ID of an existing Apify dataset to append results to, in addition to the default run dataset. Use this for SEO pipelines that combine several actor runs into one dataset. Leave blank to write only to the default run dataset."
          },
          "runId": {
            "title": "Run ID (optional)",
            "type": "string",
            "description": "ID of an existing Apify actor run to associate results with. The actor copies this value into each dataset item so external workflows can connect metadata rows to an upstream audit, crawl, or scheduling job. Leave blank for standalone runs."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}