Webpage to Markdown
Pricing
from $1.00 / 1,000 results
Webpage to Markdown
Get the main content of any page as Markdown. Great for LLMs and AI agent workflows.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Epic Scrapers
Maintained by CommunityActor stats
2
Bookmarked
11
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Webpage to Markdown: extract the main content of any URL as clean Markdown, HTML or JSON
Webpage to Markdown fetches web pages and returns their main content without menus, sidebars, footers and ads. You get clean Markdown for LLM, RAG and note-taking pipelines, or HTML and JSON when you need more. Each result also has the page's title, author, publish date, site name, language, image and word count.
- Main-content extraction. Built on the open-source Defuddle library, which removes page clutter and keeps headings, links, images and code.
- Three output formats.
markdown(default),html, orjsonwith Markdown, HTML, meta tags and Schema.org data together. - Metadata on every page.
title,author,published,site,domain,description,image,favicon,language,wordCount. - Override when needed. Pass a CSS selector as
contentSelectorto pick the content block yourself, and alanguageto send anAccept-Languageheader. - Fast and light. It downloads the page with one plain HTTP request and runs no browser.
- No login or API key. Failed URLs get a row with an
error, so one bad link doesn't stop the run. Export to JSON, CSV or Excel.
Scope: This Actor reads the HTML a server returns. It doesn't run JavaScript, log in, or crawl links. To find article URLs first, use Google News Scraper.
What can you do with Webpage to Markdown?
| Goal | How |
|---|---|
| Feed articles to an LLM | Use outputFormat: "markdown" and read content. |
| Build a RAG knowledge base | Send a list of documentation URLs in urls and store content with url and title. |
| Turn news results into text | Pass the link field from Google News Scraper into urls. |
| Archive articles | Keep content with author, published and site. |
| Check page metadata | Use outputFormat: "json" for metaTags and schemaOrgData. |
| Fix a badly extracted page | Set contentSelector to the element holding the article, such as article or .post-body. |
How it compares
| What you need | Webpage to Markdown | Copy-paste or browser save | Generic crawlers |
|---|---|---|---|
| Boilerplate removed | Yes, automatically | By hand | Often full page HTML |
| LLM-ready Markdown | Yes | No | Usually needs extra conversion |
| Metadata | Author, date, site, language | By hand | Varies |
| JavaScript-rendered pages | No | Yes | Some, with a browser |
Quick start
- Click Try for free and sign in to Apify.
- Add one or more URLs to URLs.
- Choose an Output format and click Start.
- Open the Output tab and export the data.
{"urls": ["https://tim.blog/2026/04/24/how-to-keep-your-brain-sharp/"],"outputFormat": "markdown"}
Input reference
| Field | Type | Default | Effect |
|---|---|---|---|
urls | Array of strings | Required | Pages to process, one result each. |
outputFormat | String | "markdown" | "markdown", "html" or "json". |
language | String | Empty | Language tag such as en or ja. Sent as Accept-Language and passed to extraction. |
contentSelector | String | Empty | CSS selector for the main content. Falls back to auto-detection if nothing matches. |
Output
Each URL produces one dataset row. This is a real row, with the content shortened:
{"url": "https://tim.blog/2026/04/24/how-to-keep-your-brain-sharp/","title": "How to Keep Your Brain Sharp: A Practical Playbook Beyond the Basics","description": "The following is a guest post from Dr. Tommy Wood (@drtommywood), associate professor of pediatrics and neuroscience at the University of Washington, where his research focuses on brain health.","author": "Tim Ferriss","published": "2026-04-24T18:46:08+00:00","domain": "tim.blog","site": "The Blog of Author Tim Ferriss","image": "https://tim.blog/wp-content/uploads/2026/04/milad-fakurian-58Z17lnVS4U-unsplash-scaled.jpg","favicon": "https://i0.wp.com/tim.blog/wp-content/uploads/2025/05/favicon.png?fit=32%2C32&quality=80&ssl=1","language": "en-US","wordCount": 7961,"parseTime": 167,"outputFormat": "markdown","content": "..."}
Notes on fields
- With
markdownorhtml, the page body is incontent. - With
json,contentis replaced bycontentHtmlandcontentMarkdown, and the row addsmetaTagsandschemaOrgData. - If a page can't be fetched (for example an HTTP 403 or 404), the row has only
url,errorandoutputFormat. parseTimeis milliseconds. Fields the page doesn't provide are empty.
FAQ
Why is the content empty or incomplete?
The Actor doesn't run JavaScript. Pages that build their text in the browser return little. Try contentSelector if the wrong block was picked.
Why did a URL return an error?
The site refused the request or returned an error status. The Actor makes a plain request with no proxy or login, so some sites block it.
Can it crawl a whole site?
No. It processes the URLs you give it. Use Google News Scraper to collect article links for a topic.
How do I use it with LLMs?
Use Markdown output and split content by headings into chunks. Pair it with YouTube Transcript Scraper for video sources.
Is it legal?
It reads publicly available pages. You are responsible for how you use the content, including copyright, site terms and laws such as GDPR.
Convert pages on a schedule
Schedule the Actor to re-extract pages you track, such as documentation or articles.
1. Save your input as a task
Open the Actor, set your input, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.
2. Schedule the task
In Apify Console, go to Schedules, click Create new, choose how often to run, and add your task. See Schedules and How to create a schedule.
Watch how to schedule an Actor:
Or schedule a saved task:
Common schedules:
| Use case | Frequency | Cron expression |
|---|---|---|
| Refresh docs for a RAG index | Weekly (Monday) | 0 6 * * 1 |
| Track a changing page | Daily | 0 6 * * * |
3. Send the results to a spreadsheet
Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:
4. Compare runs
- Changed pages: compare
contentperurlbetween runs. - Updated articles: watch
publishedandwordCountfor eachurl. - Failures: filter rows that have an
errorfield.
Cost
Pricing is set on the Pricing tab, which always shows the current price. Runs are light because each page is one HTTP request with no browser.
Related Actors
- Google News Scraper: find article URLs by search or topic.
- YouTube Transcript Scraper: transcripts for content and LLM pipelines.
Support
Report problems or request features in the Issues tab. Include the run ID and the input.
This Actor uses the open-source Defuddle library and is not affiliated with any website it processes.