Universal Web Scraper
Pricing
from $1.00 / 1,000 page-scrapeds
You can access the Universal Web Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.0", "x-build-id": "oi02dExhu1wkd8Nyw" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/apificasion~universal-web-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-apificasion-universal-web-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/apificasion~universal-web-scraper/runs": { "post": { "operationId": "runs-sync-apificasion-universal-web-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/apificasion~universal-web-scraper/run-sync": { "post": { "operationId": "run-sync-apificasion-universal-web-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": "List of URLs to scrape. You can provide any website URL.", "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "crawlerType": { "title": "Crawler Engine", "enum": [ "cheerio", "playwright" ], "type": "string", "description": "Select 'Cheerio' for ultra-fast parallel HTTP scraping of static/SSR pages, or 'Playwright' for full headless Chromium browser execution with dynamic JavaScript rendering.", "default": "cheerio" }, "maxConcurrency": { "title": "Max Concurrency (Parallel Workers)", "minimum": 1, "maximum": 100, "type": "integer", "description": "Maximum number of parallel requests/pages running simultaneously. Higher values speed up crawling significantly.", "default": 10 }, "maxRequestsPerCrawl": { "title": "Max Pages to Scrape", "minimum": 1, "type": "integer", "description": "Maximum total number of pages to process before the actor finishes.", "default": 20 }, "crawlLinks": { "title": "Crawl Links on Pages", "type": "boolean", "description": "If enabled, crawler will discover and follow internal links on each scraped page up to Max Crawl Depth.", "default": false }, "maxCrawlDepth": { "title": "Max Crawl Depth", "minimum": 0, "maximum": 10, "type": "integer", "description": "Maximum link depth to follow when Crawl Links is enabled (0 = start URLs only, 1 = direct links, etc.).", "default": 1 }, "extractMarkdown": { "title": "Extract AI-Ready Markdown", "type": "boolean", "description": "Convert page content into clean, clutter-free GitHub-Flavored Markdown for LLMs, RAG, and AI vector search.", "default": true }, "extractMetadata": { "title": "Extract SEO & Social Metadata", "type": "boolean", "description": "Extract page title, description, OpenGraph tags (og:*), Twitter cards, canonical URL, language, and favicon.", "default": true }, "extractSchema": { "title": "Extract Schema.org JSON-LD", "type": "boolean", "description": "Parse all Schema.org structured data scripts (application/ld+json) embedded in the page.", "default": true }, "extractArticles": { "title": "Extract Clean Article & Body Text", "type": "boolean", "description": "Extract clean main body text, word count, character count, and estimated reading time.", "default": true }, "extractTables": { "title": "Extract HTML Tables to JSON", "type": "boolean", "description": "Auto-detect and convert HTML <table> elements into structured JSON objects and rows.", "default": true }, "extractContacts": { "title": "Extract Emails, Phones & Social Links", "type": "boolean", "description": "Automatically detect email addresses, telephone numbers, and social media profile URLs (Twitter, LinkedIn, Facebook, Instagram, YouTube, GitHub).", "default": true }, "extractMedia": { "title": "Extract Images & Media Links", "type": "boolean", "description": "Extract list of all images (src, alt, dimensions), videos, audio, and downloadable document links.", "default": false }, "extractLinks": { "title": "Extract Internal & External Links", "type": "boolean", "description": "Include a list of all internal and external hyperlinks found on the page with anchor text.", "default": false }, "rawHtml": { "title": "Include Raw HTML", "type": "boolean", "description": "Include the full unparsed raw HTML source code in each record.", "default": false }, "captureScreenshot": { "title": "Capture Full-Page Screenshot (Playwright only)", "type": "boolean", "description": "Capture high-resolution full-page screenshot and save to the default Key-Value Store.", "default": false }, "generatePdf": { "title": "Generate Full-Page PDF (Playwright only)", "type": "boolean", "description": "Generate clean printable PDF document of the page and save to Key-Value Store.", "default": false }, "blockMedia": { "title": "Block Heavy Media & Ads (Playwright)", "type": "boolean", "description": "In Playwright mode, blocks images, videos, web fonts, and advertising scripts for ultra-fast, smooth page loads.", "default": true }, "waitForSelector": { "title": "Wait for CSS Selector (Playwright)", "type": "string", "description": "Optional CSS selector to wait for before extracting data in Playwright mode (e.g. '.product-list', '#main-content')." }, "proxyConfiguration": { "title": "Proxy Configuration", "type": "object", "description": "Configure Apify Proxy or custom proxies to bypass rate limits, geo-restrictions, and anti-scraping protections.", "default": { "useApifyProxy": false } }, "debugLog": { "title": "Enable Debug Logging", "type": "boolean", "description": "Turn on detailed debug logs in the run console for troubleshooting.", "default": 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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Universal Web Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: