Web Scraper For Llms at a glance
Web Scraper For Llms is a ready-to-run Apify actor from abotapi for collecting ai data. Its documented output includes url, title, ok, duration (ms) and scraped at, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- AI, Developer Tools, Automation
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 27 options
Stealth web scraping engine built for LLMs. Converts any web page to clean markdown or HTML
What Web Scraper For Llms can do
- Two ways to collect pages. Scrape a fixed list of URLs, or turn on crawl mode and let the actor follow links from a seed page to discover and read the rest of a site.
- Markdown and HTML output. Choose one format or both, per run, so the content slots straight into a prompt, a vector store, or a content pipeline.
- Automatic content cleaning. Navigation, headers, footers, sidebars, ads and tracking elements are stripped by default, so what you get is the page's actual content, not the surrounding layout.
- Handles slow and script heavy pages. A page is read with a quick request first, and the actor automatically falls back to full page rendering when a site needs JavaScript to show its content or blocks a simple request.
- Page details with every record. Title, language, favicon and canonical URL come back alongside the content, no extra parsing required.
- Fine grained control when you need it. CSS selectors to keep or drop specific elements, regex patterns to include or exclude URLs during a crawl, and a selector to wait for before reading a page.
Choose what to collect
These inputs let you configure Web Scraper For Llms. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
urlsarray · required | URLs to scrape. When crawl is enabled, each URL is used as a seed to discover linked pages. |
crawlboolean | 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. |
crawlDepthinteger | How many link hops from the starting URL. Ignored when crawl is off. |
crawlMaxPagesinteger | 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. |
formatsarray | Which content formats to extract. |
concurrencyinteger | Number of URLs to process in parallel. |
maxRetriesinteger | Maximum retry attempts for failed URLs. Ignored when crawl is on. |
Show 20 more inputs
| Input | What it controls |
|---|---|
timeoutMsinteger | Request timeout per URL in milliseconds. |
waitForSelectorstring | CSS selector to wait for before considering page loaded. Ignored when crawl is on. |
crawlerTypestring | 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. |
maxResultsinteger | Stop after this many pages have been saved in total (0 = the maximum of 1,000,000). Failed URLs do not count. |
customHttpHeadersobject | Headers sent with each page request, as a JSON object. Not applied during crawl-mode link discovery. |
onlyMainContentboolean | Extract only main content, removing nav/header/footer/sidebar. Ignored when crawl is on. |
removeAdsboolean | Remove ads and tracking elements. |
removeBase64Imagesboolean | Remove base64-encoded images to reduce output size. |
includeTagsarray | CSS selectors for elements to include. If set, only matching elements are kept. Ignored when crawl is on. |
excludeTagsarray | CSS selectors for elements to exclude from output. Ignored when crawl is on. |
includePatternsarray | Regex patterns for URL filtering. In crawl mode, controls which discovered links to follow. |
excludePatternsarray | Regex patterns for URL filtering. In crawl mode, controls which discovered links to skip. |
includeUrlGlobsarray | Only follow or scrape URLs matching one of these globs (for example https://example.com/blog/). Combined with the regex patterns above. |
excludeUrlGlobsarray | Skip URLs matching one of these globs. |
respectRobotsTxtFileboolean | On by default. Turn off only for sites whose robots.txt you are allowed to ignore. |
keepUrlFragmentsboolean | Crawl mode: keep the #fragment of discovered links instead of removing it. |
onlyCrawlPagesModifiedSincestring | 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. |
mcpConnectorsarray | 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. |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
urlURL (link)titleTitle (text)successOK (boolean)durationDuration (ms) (number)scrapedAtScraped At (text)markdownContent (text)crawl.loadedUrlLoaded URL (link)crawl.httpStatusCodeHTTP status (number)crawl.depthDepth (number)crawl.referrerUrlReferrer (link)crawl.contentTypeContent type (text)crawl.contentLengthBytesBytes (number)Show 7 more fields
crawl.loadedTimeLoaded at (text)metadata.canonicalUrlCanonical URL (link)metadata.titleMeta title (text)metadata.descriptionMeta description (text)metadata.authorAuthor (text)metadata.languageCodeLanguage (text)metadata.keywordsKeywords (text)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"url": "https://example.com/blog/how-rag-pipelines-work",
"title": "How RAG Pipelines Work",
"description": null,
"markdown": "# How RAG Pipelines Work\n\nRetrieval augmented generation combines a search step with a language model, so answers can draw on content the model was never trained on.",
"html": "<article><h1>How RAG Pipelines Work</h1><p>Retrieval augmented generation combines a search step with a language model.</p></article>",
"metadata": {
"title": "How RAG Pipelines Work",
"language": "en",
"favicon": "https://example.com/favicon.ico",
"canonical": "https://example.com/blog/how-rag-pipelines-work",
"description": null,
"openGraph": null,
"twitter": null
},
"duration": 4210,
"scrapedAt": "2026-02-24T03:36:28.990Z",
"success": true,
"error": null
}Ways to use this data
- RAG pipelines and AI knowledge bases: turn a list of pages or a whole site into clean markdown chunks ready for embedding.
- Documentation and content migration: crawl a docs site or blog and export every page as markdown in one run.
- Research and monitoring: pull articles, product pages or listings on a recurring schedule and compare the results over time.
- AI agent tooling: give an agent a single action that reads any URL and returns clean text instead of raw HTML.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Web Scraper For Llms return?
The documented output for Web Scraper For Llms includes url, title, ok, duration (ms), scraped at, content, loaded url and http status. Availability of each field depends on the source page and the selected mode.
How much does Web Scraper For Llms cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Why did a crawl return far more pages than Max Pages to Discover?
Max Pages to Discover is a limit per seed URL, not a total for the run. If you list five seed URLs with Crawl Mode on, the actor can return up to five times that number, one batch of discovered pages per seed. Reduce the number of seed URLs, or lower Max Pages to Discover, to control the total.
Why did my run fail instead of returning results?
With Crawl Mode off, the run ends as failed when the input has no URLs or when no URL at all could be loaded (every URL is listed under failedUrls in the run summary). If a specific page cannot be read, blocked, timed out, taken down, or refused by robots.txt, it is listed under failedUrls with an error message, no dataset row is written for it, and the run keeps going. In Crawl Mode, pages that cannot be opened or are disallowed by robots.txt during link discovery are skipped and not listed. A crawl whose pages take more than about five minutes to read can stop the run, but rows already written are kept. Lower Max Pages to Discover or split large crawls into several runs.
Can I use this with AI agents or MCP?
Yes. It is built to hand language models and RAG pipelines clean markdown instead of raw HTML, and like any Apify actor it can be called from an AI agent or an MCP client through Apify's integrations.
