Website to Markdown Converter — Firecrawl Alternative
Pricing
from $10.00 / 1,000 markdown page extracteds
Website to Markdown Converter — Firecrawl Alternative
Convert public websites to clean Markdown with a bounded crawl. Export one record per HTML page with requested and final URLs, title, canonical link, observed links, and timestamps for search or knowledge workflows.
Pricing
from $10.00 / 1,000 markdown page extracteds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Convert public websites to clean Markdown with a bounded crawl. Export one record per HTML page with requested and final URLs, title, canonical link, observed links, and timestamps for search or knowledge workflows. For knowledge teams, each dataset record is one crawled HTML page converted to Markdown with its source context intact.
Workflow: put the results to work
Start with a public documentation or help-center URL and a small page cap. Review the Markdown and source links before scaling the crawl or loading pages into a knowledge system. Set selectors and scope to exclude navigation or sections that do not belong in the destination.
Scope
- Logging in, bypassing access controls, interacting with a browser, extracting protected content, or crawling private networks.
- Web search, search-result scraping, AI/LLM JSON extraction, change monitoring, screenshots, files/PDFs, cached-content controls, or a hosted browser session.
- A claim that this replaces Firecrawl's full product. It replaces only the bounded public HTML-to-Markdown crawl described here.
Firecrawl is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by Firecrawl.
What a page record contains
| Field | Meaning |
|---|---|
markdown | Clean Markdown converted from public HTML after scripts, styles, frames, and optional selectors are removed. |
sourceUrl / finalUrl | The requested URL and public URL reached after ordinary redirects. |
title / canonicalUrl | Observed HTML title and canonical link, if present. |
links / linkCount | Up to 250 observed HTTP(S) links and the pre-truncation unique count. |
collectedAt / provenance | Collection timestamp and the fixed public_html_response provenance label. |
limitations / warnings | Explicit processing boundary and non-fatal page warnings. |
Input
Start with a small page limit. Supply at least one public HTTP(S) URL; private, localhost, credentialed, and non-HTTP URLs are rejected. same-hostname follows only the exact host; same-domain can include subdomains; page-only processes only the supplied starts.
{"startUrls": ["https://example.com/docs"],"crawlScope": "same-hostname","maxPages": 10,"maxDepth": 2,"removeSelectors": ["nav", "footer"],"respectRobotsTxt": true,"maxConcurrency": 2}
maxPages is a hard budget from 1 to 200. If eligible pages remain when that budget is reached, the terminal result is PARTIAL rather than a claim of full-site coverage. maxDepth: 0 processes only start URLs. Keep respectRobotsTxt enabled unless you have clear authority to crawl beyond the public robots policy.
Output example
{"sourceUrl": "https://example.com/docs","finalUrl": "https://example.com/docs/","canonicalUrl": "https://example.com/docs/","statusCode": 200,"contentType": "text/html; charset=utf-8","title": "Example documentation","markdown": "# Example documentation\n\nHelpful public content.","cleanedHtml": null,"links": ["https://example.com/docs/start"],"linkCount": 1,"collectedAt": "2026-09-07T00:00:00.000Z","provenance": "public_html_response","limitations": "HTTP HTML crawl only; may miss JavaScript-rendered, authenticated, blocked, non-HTML, browser-interaction, AI-extracted, search-discovered, monitored, or cached content.","warnings": []}
Each terminal run also writes OUTPUT and RUN_SUMMARY in the default key-value store. Outcomes are COMPLETE, PARTIAL, VALID_EMPTY, INVALID_INPUT, UPSTREAM_FAILED, or CONFIG_ERROR. A valid empty result and an input error succeed with useful diagnostics; an upstream failure with no saved pages fails honestly after those records are written.
API and agent use
Use the Actor through Apify Console, API, schedules, or an approved Apify MCP integration. Replace the input below with a public site you are authorized to crawl.
apify call khadinakbar/firecrawl-alternative --input='{"startUrls": ["https://example.com/docs"],"crawlScope":"same-hostname","maxPages":10,"maxDepth":2}'
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~firecrawl-alternative/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls":["https://example.com/docs"],"crawlScope":"same-hostname","maxPages":10,"maxDepth":2}'
AI agent prompt: Crawl this authorized public documentation URL, stay on the same hostname, stop after ten pages or two link hops, and return source-linked Markdown. Read the
OUTPUToutcome and dataset before using the content; preserve source URLs, collection time, scope, and run cost in the downstream workflow.
Firecrawl comparison for bounded Markdown crawling
The comparable job is narrow: collect up to a bounded number of caller-supplied public HTML pages and convert each one to clean Markdown with provenance. Firecrawl documents a broader API with crawl, scrape, map, search, browser/interact, and agentic capabilities. Choose Firecrawl when you need those hosted capabilities, AI extraction, search discovery, monitoring, cache/retention controls, parsing, or browser work. Choose this Actor when the bounded public HTML crawl and an Apify dataset/API/scheduling workflow are the actual job.
| Decision dimension | This Actor | Firecrawl |
|---|---|---|
| Scope and workflow | Bounded public HTML-to-Markdown crawl from caller-supplied URLs. | Broader web-data API capabilities are documented. |
| Billing and same-job cost | Pay per event plus platform usage; see the Pricing tab for current rates. | Uses listed credits per crawl page and plan-based billing. |
| Effective efficiency | A final benchmark is pending; page caps make the requested volume explicit. | A final same-job benchmark is pending. |
| Output and provenance | Per-page Markdown with source/final/canonical URLs, links, and collection time. | Multiple output formats are documented. |
| Integrations and automation | Apify dataset, API, schedules, webhooks, and an approved MCP workflow where the caller's client supports it. | Its own API and MCP integrations are documented. |
| Recommended boundary | A focused public HTML crawl workflow. | Browser, search, extraction, monitoring, cache, parsing, and broader suite workflows. |
The private comparison dossier records the current scope and pricing observations. This README makes no blanket parity, lower-cost, faster, or reliability claim; no equivalent final-build cloud benchmark exists yet.
Limitations, best results, and responsible use
- Begin with an exact public documentation or help-center URL, a small
maxPages, andsame-hostnamescope. - Requests are direct by default. For an authorized public site that rate-limits or blocks direct traffic, choose an Apify Proxy route in the input; its platform usage is additional to the page event price.
- Remove navigation or cookie-banner content only with simple selectors, such as
nav,footer, or.cookie-banner; invalid selectors are retained as warnings. - Expect plain HTTP HTML extraction. JavaScript-rendered, authenticated, blocked, binary, and browser-interaction pages can yield partial or failed outcomes.
- Respect the website's terms, robots policy, intellectual-property rights, privacy commitments, rate limits, and applicable law. Crawl only sources you are authorized to access and process.
Builder's note
I built this Actor to persist source URLs, final URLs, canonical hints, a bounded link list, and a limitation statement next to every Markdown page. A Markdown string without that context is difficult to validate, refresh, or safely reuse in a downstream knowledge workflow.
Release status
This is a private build. It has not been published to the Apify Store and must not be described as release-ready until a final private build passes the required cloud acceptance matrix with delayed dataset, OUTPUT, RUN_SUMMARY, and charge readback.
Pricing and run costs
This Actor uses Pay per event plus Apify platform usage. The Pricing tab lists the current event rates and billing terms.
| Event | Billing unit | When it applies |
|---|---|---|
apify-actor-start | Actor Start | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
page-extracted | Markdown page extracted | Charged once for each validated page saved as a source-linked Markdown document. |
Run cost combines the charged events and Apify platform usage. Review the run charge limit and requested result count before starting.
Connect an AI agent
Use the Apify MCP configurator to choose an available client connection. Inspect this Actor’s current input schema and required credentials before running it.