{
  "openapi": "3.0.1",
  "info": {
    "title": "Web Scraper For Llms",
    "description": "Stealth web scraping engine built for LLMs. Converts any web page to clean markdown or HTML",
    "version": "0.1",
    "x-build-id": "oUhd7MGtzQME9ANm0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~web-scraper-for-llms/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-web-scraper-for-llms",
        "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/abotapi~web-scraper-for-llms/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-web-scraper-for-llms",
        "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/abotapi~web-scraper-for-llms/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-web-scraper-for-llms",
        "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",
            "type": "array",
            "description": "URLs to scrape. When crawl is enabled, each URL is used as a seed to discover linked pages.",
            "items": {
              "type": "string"
            },
            "default": [
              "https://example.com",
              "http://example.com/?a=1&b=2",
              "https://www.iana.org/domains/reserved",
              "https://en.wikipedia.org/wiki/Web_scraping"
            ]
          },
          "crawl": {
            "title": "Enable Crawl Mode (follow links and scrape discovered pages)",
            "type": "boolean",
            "description": "When enabled, the scraper will follow links from each URL to discover and scrape additional pages. Use Crawl Depth and Max Pages below to control how far it goes.",
            "default": false
          },
          "crawlDepth": {
            "title": "Crawl Depth",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many link hops from the starting URL. Ignored when crawl is off.",
            "default": 1
          },
          "crawlMaxPages": {
            "title": "Max Pages to Discover",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum pages to discover per seed URL. Ignored when crawl is off. When left empty, a hard cap of 20 pages per seed applies; the value cannot exceed 1000."
          },
          "formats": {
            "title": "Output Formats",
            "type": "array",
            "description": "Which content formats to extract.",
            "items": {
              "type": "string",
              "enum": [
                "markdown",
                "html"
              ]
            },
            "default": [
              "markdown"
            ]
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of URLs to process in parallel.",
            "default": 3
          },
          "maxRetries": {
            "title": "Max Retries",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum retry attempts for failed URLs. Ignored when crawl is on.",
            "default": 2
          },
          "timeoutMs": {
            "title": "Timeout (ms)",
            "minimum": 5000,
            "maximum": 120000,
            "type": "integer",
            "description": "Request timeout per URL in milliseconds.",
            "default": 30000
          },
          "waitForSelector": {
            "title": "Wait For Selector",
            "type": "string",
            "description": "CSS selector to wait for before considering page loaded. Ignored when crawl is on."
          },
          "crawlerType": {
            "title": "Fetch engine",
            "enum": [
              "auto",
              "http",
              "browser"
            ],
            "type": "string",
            "description": "auto tries a fast HTTP fetch first and falls back to a browser. http never starts a browser (fastest, no JavaScript). browser always renders the page. In crawl mode, link discovery always uses the browser.",
            "default": "auto"
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many pages have been saved in total (0 = the maximum of 1,000,000). Failed URLs do not count.",
            "default": 1000
          },
          "customHttpHeaders": {
            "title": "Custom HTTP headers",
            "type": "object",
            "description": "Headers sent with each page request, as a JSON object. Not applied during crawl-mode link discovery."
          },
          "initialCookies": {
            "title": "Initial cookies",
            "type": "array",
            "description": "Cookies sent with each page request, as a JSON array of {\"name\": ..., \"value\": ...}."
          },
          "onlyMainContent": {
            "title": "Only Main Content",
            "type": "boolean",
            "description": "Extract only main content, removing nav/header/footer/sidebar. Ignored when crawl is on.",
            "default": true
          },
          "removeAds": {
            "title": "Remove Ads",
            "type": "boolean",
            "description": "Remove ads and tracking elements.",
            "default": true
          },
          "removeBase64Images": {
            "title": "Remove Base64 Images",
            "type": "boolean",
            "description": "Remove base64-encoded images to reduce output size.",
            "default": true
          },
          "includeTags": {
            "title": "Include Tags",
            "type": "array",
            "description": "CSS selectors for elements to include. If set, only matching elements are kept. Ignored when crawl is on.",
            "items": {
              "type": "string"
            }
          },
          "excludeTags": {
            "title": "Exclude Tags",
            "type": "array",
            "description": "CSS selectors for elements to exclude from output. Ignored when crawl is on.",
            "items": {
              "type": "string"
            }
          },
          "includePatterns": {
            "title": "Include URL Patterns",
            "type": "array",
            "description": "Regex patterns for URL filtering. In crawl mode, controls which discovered links to follow.",
            "items": {
              "type": "string"
            }
          },
          "excludePatterns": {
            "title": "Exclude URL Patterns",
            "type": "array",
            "description": "Regex patterns for URL filtering. In crawl mode, controls which discovered links to skip.",
            "items": {
              "type": "string"
            }
          },
          "includeUrlGlobs": {
            "title": "Include URL globs",
            "type": "array",
            "description": "Only follow or scrape URLs matching one of these globs (for example https://example.com/blog/**). Combined with the regex patterns above.",
            "items": {
              "type": "string"
            }
          },
          "excludeUrlGlobs": {
            "title": "Exclude URL globs",
            "type": "array",
            "description": "Skip URLs matching one of these globs.",
            "items": {
              "type": "string"
            }
          },
          "useSitemaps": {
            "title": "Use sitemaps",
            "type": "boolean",
            "description": "Also scrape pages listed in the site's sitemap.xml (and Sitemap lines of robots.txt). Sitemap files are fetched directly, not through the proxy.",
            "default": false
          },
          "useLlmsTxt": {
            "title": "Use llms.txt",
            "type": "boolean",
            "description": "Also scrape the pages linked from the site's llms.txt file. The file is fetched directly, not through the proxy.",
            "default": false
          },
          "respectRobotsTxtFile": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "On by default. Turn off only for sites whose robots.txt you are allowed to ignore.",
            "default": true
          },
          "keepUrlFragments": {
            "title": "Keep URL fragments",
            "type": "boolean",
            "description": "Crawl mode: keep the #fragment of discovered links instead of removing it.",
            "default": false
          },
          "onlyCrawlPagesModifiedSince": {
            "title": "Only pages modified since",
            "type": "string",
            "description": "ISO date (2025-01-31) or relative text (7 days). Pages whose Last-Modified header or sitemap lastmod is older are skipped. Pages without that information are kept."
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Apify proxy configuration."
          },
          "incrementalMode": {
            "title": "Only emit new or changed pages",
            "type": "boolean",
            "description": "Off by default. When on, each page's content is fingerprinted (title, description, markdown, html, metadata) and compared with the previous run kept in a named key-value store. Pages whose content did not change are not written to the dataset and are not billed as results. Failed pages are always reported. Fields listed in the ignore setting below (by default duration and scrapedAt) never count as a change.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Output fields left out of the change fingerprint. They stay in the output. Use dot paths for nested keys, for example metadata.website.language. Defaults to duration, scrapedAt, crawl.loadedTime and metadata.headers when empty.",
            "items": {
              "type": "string"
            },
            "default": [
              "duration",
              "scrapedAt",
              "crawl.loadedTime",
              "metadata.headers"
            ]
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send a condensed summary of each result into the apps you already use, via Model Context Protocol (MCP) connectors. The full record stays in the dataset. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}