{
  "openapi": "3.0.1",
  "info": {
    "title": "Web Page to Markdown & Text - URL Reader for LLMs & RAG",
    "description": "Read any web page as clean text + Markdown for LLMs and automations. Strips ads, nav, and scripts; returns the main content, metadata (title, author, date, word count), and an optional AI TL;DR + key points. The web-reading primitive for AI agents, RAG pipelines, and no-code flows.",
    "version": "0.0",
    "x-build-id": "cFQQadlDQy0lvqXmK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/entranced_gelato~ai-web-page-reader/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-entranced_gelato-ai-web-page-reader",
        "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/entranced_gelato~ai-web-page-reader/runs": {
      "post": {
        "operationId": "runs-sync-entranced_gelato-ai-web-page-reader",
        "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/entranced_gelato~ai-web-page-reader/run-sync": {
      "post": {
        "operationId": "run-sync-entranced_gelato-ai-web-page-reader",
        "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": [
          "url"
        ],
        "properties": {
          "url": {
            "title": "Page URL",
            "type": "string",
            "description": "The public web page you want to read and clean."
          },
          "urls": {
            "title": "More page URLs",
            "type": "array",
            "description": "Optional. Read more pages in the same run: one URL per line, up to 100 per run. Each page becomes its own row and is charged as one \"Page read\"; pages that can't be read are free.",
            "items": {
              "type": "string"
            }
          },
          "includeMarkdown": {
            "title": "Return Markdown",
            "type": "boolean",
            "description": "Include a clean Markdown version of the page (ideal for LLMs).",
            "default": true
          },
          "summarize": {
            "title": "Generate AI summary",
            "type": "boolean",
            "description": "Adds a TL;DR and key points written by AI. Off by default. Without a key the page text goes to Apify's AI gateway (Apify's OpenRouter Actor, then OpenRouter, then the model provider) and costs $0.02 per summary, charged only when a summary is produced. Apify may also bill the AI model's usage to your Apify account separately through its OpenRouter Actor, at OpenRouter's rates; free-plan accounts pay more and may be blocked. With your own OpenAI key below the text goes straight to OpenAI and there is no AI charge. Emails and phone numbers are masked before the text is sent, and pages that reserve text-and-data-mining rights (TDMRep) are never sent. AIDevs is the provider of this AI feature and you're the deployer: AI fields are labelled (aiGenerated, aiModel, aiGeneratedAt, aiDigitalSourceType, aiNotice), so keep the label if you publish AI text.",
            "default": false
          },
          "openaiApiKey": {
            "title": "OpenAI API key (optional)",
            "type": "string",
            "description": "Optional. Your own OpenAI key for the summary instead of Apify's AI gateway: the text then goes straight to OpenAI, OpenAI bills you for the tokens and the $0.02 AI summary charge doesn't apply. Use a dedicated OpenAI project key with a spending limit (create one in your OpenAI dashboard). It's used only inside your run, sent only to OpenAI, and never stored or logged. You're responsible for following OpenAI's terms. Only used when 'Generate AI summary' is on."
          },
          "model": {
            "title": "LLM model",
            "enum": [
              "gpt-4o-mini",
              "gpt-4o",
              "gpt-4.1-mini"
            ],
            "type": "string",
            "description": "Model used for the summary (with your own key, or via Apify's AI gateway as openai/<model>). If you choose a model, you also accept that model provider's terms and acceptable-use policy.",
            "default": "gpt-4o-mini"
          },
          "aiModel": {
            "title": "AI model (advanced)",
            "type": "string",
            "description": "Optional model ID for the summary in OpenRouter format, e.g. openai/gpt-4o-mini (the default) or openai/gpt-4.1-mini. Leave empty to use the 'LLM model' choice above. On Apify's AI gateway only openai/... and anthropic/... models are used (no :free or stealth variants); any other ID falls back to openai/gpt-4o-mini. With your own OpenAI key only OpenAI models work. If you choose a model, you also accept that model provider's terms and acceptable-use policy."
          },
          "maxChars": {
            "title": "Max characters (0 = no limit)",
            "minimum": 0,
            "type": "integer",
            "description": "Optionally cap the length of returned content/markdown.",
            "default": 0
          },
          "respectRobotsTxt": {
            "title": "Respect robots.txt",
            "type": "boolean",
            "description": "Before reading, check the site's robots.txt (the rules for AIDevsBot, otherwise those for all bots). A disallowed page isn't fetched or charged and is reported in the output. Turn this off only for sites you own or have permission to read.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Route requests through Apify Proxy so sites that throttle data-center traffic still load. Pages that block access are reported, never bypassed. Uses Apify's standard datacenter proxies. Residential and custom proxies aren't supported.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}