{
  "openapi": "3.0.1",
  "info": {
    "title": "Sitemap Extractor Pro - All URLs, Images, News & Hreflang",
    "description": "Extract every URL from any website's sitemaps. Auto-discovers sitemaps (robots.txt, WordPress, Shopify, Yoast, gzip, indexes, RSS/Atom, text), outputs lastmod, priority, images, videos, Google News and hreflang, with date/regex filters and optional HTTP status checks. Never fails on a bad site.",
    "version": "1.0",
    "x-build-id": "Nm6SNLfaQkyoHqLQa"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mbabbu~sitemap-extractor-pro/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mbabbu-sitemap-extractor-pro",
        "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/mbabbu~sitemap-extractor-pro/runs": {
      "post": {
        "operationId": "runs-sync-mbabbu-sitemap-extractor-pro",
        "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/mbabbu~sitemap-extractor-pro/run-sync": {
      "post": {
        "operationId": "run-sync-mbabbu-sitemap-extractor-pro",
        "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": "Websites or sitemap URLs",
            "type": "array",
            "description": "Domains (e.g. <code>example.com</code>), homepages, or direct sitemap/feed URLs (e.g. <code>https://example.com/sitemap_index.xml</code>, <code>.xml.gz</code>, RSS/Atom, <code>.txt</code>). For a domain, sitemaps are discovered automatically from robots.txt, common CMS paths (WordPress, Yoast, Shopify, Wix, Squarespace...), homepage links and feeds. You can also upload a text file or link a URL list.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "discoveryMode": {
            "title": "Sitemap discovery",
            "enum": [
              "auto",
              "thorough",
              "robotsOnly",
              "none"
            ],
            "type": "string",
            "description": "<b>Auto</b>: use robots.txt sitemaps; if there are none, probe common sitemap paths and homepage links. <b>Thorough</b>: always probe all common paths too (finds sitemaps that robots.txt forgot). <b>robots.txt only</b>: only sitemaps declared in robots.txt. <b>None</b>: treat every start URL as a sitemap URL.",
            "default": "auto"
          },
          "feedMode": {
            "title": "RSS/Atom feeds",
            "enum": [
              "fallback",
              "always",
              "never"
            ],
            "type": "string",
            "description": "<b>Fallback</b>: if a site has no XML sitemap, extract URLs from its RSS/Atom feed instead. <b>Always</b>: also add feed URLs for sites that have sitemaps. <b>Never</b>: ignore feeds.",
            "default": "fallback"
          },
          "modifiedSince": {
            "title": "Changed since",
            "type": "string",
            "description": "Only output URLs whose <code>lastmod</code> is on or after this date. Accepts an absolute date (<code>2026-09-01</code>, <code>2026-09-01T12:00:00Z</code>) or a relative period (<code>24 hours</code>, <code>7 days</code>, <code>2 weeks</code>, <code>3 months</code>). Great for scheduled change monitoring. Leave empty for all URLs."
          },
          "includeUrlsWithoutLastmod": {
            "title": "Keep URLs without lastmod when filtering by date",
            "type": "boolean",
            "description": "When 'Changed since' is set, URLs that have no lastmod date are dropped by default. Enable to keep them.",
            "default": false
          },
          "skipStaleSitemaps": {
            "title": "Skip unchanged child sitemaps",
            "type": "boolean",
            "description": "When 'Changed since' is set, skip child sitemaps whose own lastmod (in the sitemap index) is older than the date. Makes date-filtered runs on big news and e-commerce sites up to 10x faster and cheaper.",
            "default": true
          },
          "includePatterns": {
            "title": "Include URLs matching (regex)",
            "type": "array",
            "description": "Only keep URLs matching at least one of these regular expressions (case-insensitive). Example: <code>/blog/</code> or <code>/products/.*</code>.",
            "items": {
              "type": "string"
            }
          },
          "excludePatterns": {
            "title": "Exclude URLs matching (regex)",
            "type": "array",
            "description": "Drop URLs matching any of these regular expressions (case-insensitive). Example: <code>/tag/</code>, <code>\\?page=</code>.",
            "items": {
              "type": "string"
            }
          },
          "sameDomainOnly": {
            "title": "Same domain only",
            "type": "boolean",
            "description": "Drop URLs on other domains than the start URL (subdomains are kept).",
            "default": false
          },
          "dedupe": {
            "title": "Remove duplicate URLs",
            "type": "boolean",
            "description": "Output each URL only once per run, even if it appears in several sitemaps or sites.",
            "default": true
          },
          "maxUrls": {
            "title": "Max URLs (total)",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many URLs in total across all sites. 0 = no limit (all URLs).",
            "default": 0
          },
          "maxUrlsPerSite": {
            "title": "Max URLs per site",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each site after this many URLs. 0 = no limit.",
            "default": 0
          },
          "maxSitemapsPerSite": {
            "title": "Max sitemap files per site",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Safety limit on how many sitemap files are downloaded per site (very large sites can have thousands).",
            "default": 1000
          },
          "maxDepth": {
            "title": "Max sitemap index depth",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many levels of nested sitemap indexes to follow. Loops are detected automatically.",
            "default": 10
          },
          "checkStatus": {
            "title": "Check HTTP status of each URL",
            "type": "boolean",
            "description": "Sends a HEAD request to every URL (falls back to GET when the server rejects HEAD) and records the status code, redirect count, final URL and final status. Slower and charged per checked URL. Off by default.",
            "default": false
          },
          "statusConcurrency": {
            "title": "Status check concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum parallel status-check requests per website. Keep low to be polite to the server.",
            "default": 10
          },
          "statusTimeoutSecs": {
            "title": "Status check timeout (seconds)",
            "minimum": 3,
            "maximum": 120,
            "type": "integer",
            "description": "Timeout for each status-check request.",
            "default": 20
          },
          "includeExtensions": {
            "title": "Include image, video, news and hreflang data",
            "type": "boolean",
            "description": "Output Google image/video/news sitemap extensions and xhtml:link hreflang alternates for each URL.",
            "default": true
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Do not fetch sitemap files that robots.txt disallows (sitemaps declared in robots.txt are always allowed).",
            "default": true
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 300,
            "type": "integer",
            "description": "Maximum wait for a server to start responding (and between data chunks). Large sitemaps that keep streaming are allowed to take longer.",
            "default": 30
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Retries for failed requests (network errors, timeouts, 429 and 5xx) with exponential backoff and Retry-After support.",
            "default": 3
          },
          "siteConcurrency": {
            "title": "Sites in parallel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many websites to process at the same time.",
            "default": 3
          },
          "userAgent": {
            "title": "User-Agent",
            "type": "string",
            "description": "User-Agent header for all requests. Leave empty for the default, which identifies this Actor."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Sitemaps are public and usually do not need a proxy; use one only if a site blocks datacenter IPs.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}