{
  "openapi": "3.0.1",
  "info": {
    "title": "Sitemap Change Monitor: New, Removed and Changed URLs",
    "description": "Read a site's robots.txt and sitemaps. Extract every page URL, or monitor and get only the new, removed and modified (by lastmod) pages since your last run. No page content is fetched, only sitemap files. Pay per result: $0.30 per 1,000 URLs, $2 per 1,000 changes.",
    "version": "0.1",
    "x-build-id": "R6fZkF2J4JGkjTmkW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/frostpine456~sitemap-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-frostpine456-sitemap-monitor",
        "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/frostpine456~sitemap-monitor/runs": {
      "post": {
        "operationId": "runs-sync-frostpine456-sitemap-monitor",
        "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/frostpine456~sitemap-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-frostpine456-sitemap-monitor",
        "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": [
          "sites"
        ],
        "properties": {
          "sites": {
            "title": "Sites",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "The sites to read, 1 to 50 items. Each item is a domain (example.com), a site URL reduced to its host (https://example.com/any/path), or a direct sitemap URL whose path ends in .xml, .xml.gz, .gz or .txt. Identical sites are de-duplicated; example.com and example.com/sitemap.xml are separate sites with separate state. The first monitor run bills every URL as a paid baseline.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "monitor",
              "extract"
            ],
            "type": "string",
            "description": "What each run returns. 'monitor' remembers each sitemap between runs and outputs only new, removed and modified pages (plus a paid baseline on the first run). 'extract' outputs every page URL listed, keeps no state, and bills each URL on every run.",
            "default": "monitor"
          },
          "maxUrlsPerSite": {
            "title": "Max URLs per site",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "The most URLs read per site per run, counted as de-duplicated canonical URLs, 1 to 50,000. A larger site is marked truncated in SUMMARY and its removals are held; raise this if SUMMARY shows truncated. The prefill keeps a first try small and cheap.",
            "default": 10000
          },
          "maxChanges": {
            "title": "Max changes per run",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "The most change-billed records (new, removed, modified) emitted per run across all sites, 1 to 20,000. Baseline and existing records are not counted. Records past the cap are deferred to the next run, so nothing is lost.",
            "default": 2000
          },
          "includeExisting": {
            "title": "Include existing",
            "type": "boolean",
            "description": "Monitor mode only: also output every unchanged URL as an existing record, billed as a url event on EVERY run, not just the first. Leave it off for scheduled runs unless you need the full list each time.",
            "default": false
          },
          "includeProfileUrls": {
            "title": "Include profile URLs",
            "type": "boolean",
            "description": "Include sitemaps and URLs whose path looks like a person's profile page (/user/, /profile/, /author/ and similar). They are skipped by default; skipped sitemaps are named and skipped URLs counted in SUMMARY.",
            "default": false
          },
          "rollingSitemaps": {
            "title": "Rolling sitemaps",
            "type": "array",
            "description": "Extra substrings that mark a sitemap as rolling when found in its URL's path or query (never the host), e.g. news-sitemap. A sitemap is also rolling when it uses the news: namespace or its path or query contains 'news'. Rolling sitemaps are exempt from removals: URLs that age out emit nothing and are not billed.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "stateKey": {
            "title": "State key",
            "pattern": "^[a-z0-9-]{1,40}$",
            "type": "string",
            "description": "A label that separates change-tracking state when you run several independent schedules. Changing it starts a new paid baseline, so keep the same stateKey between runs of one schedule. 1 to 40 characters of lowercase a-z, 0-9 and '-'.",
            "default": "default"
          },
          "shrinkGuardPercent": {
            "title": "Shrink guard percent",
            "minimum": 10,
            "maximum": 100,
            "type": "integer",
            "description": "How far a sitemap may shrink in one run, in percent, before its removals are held for a confirming second run (10 to 100, default 50). Protects you from a truncated or half-written sitemap billing every missing URL as removed.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}