Website to Markdown Converter — Firecrawl Alternative avatar

Website to Markdown Converter — Firecrawl Alternative

Pricing

from $10.00 / 1,000 markdown page extracteds

Go to Apify Store
Website to Markdown Converter — Firecrawl Alternative

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

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

FieldMeaning
markdownClean Markdown converted from public HTML after scripts, styles, frames, and optional selectors are removed.
sourceUrl / finalUrlThe requested URL and public URL reached after ordinary redirects.
title / canonicalUrlObserved HTML title and canonical link, if present.
links / linkCountUp to 250 observed HTTP(S) links and the pre-truncation unique count.
collectedAt / provenanceCollection timestamp and the fixed public_html_response provenance label.
limitations / warningsExplicit 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 OUTPUT outcome 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 dimensionThis ActorFirecrawl
Scope and workflowBounded public HTML-to-Markdown crawl from caller-supplied URLs.Broader web-data API capabilities are documented.
Billing and same-job costPay per event plus platform usage; see the Pricing tab for current rates.Uses listed credits per crawl page and plan-based billing.
Effective efficiencyA final benchmark is pending; page caps make the requested volume explicit.A final same-job benchmark is pending.
Output and provenancePer-page Markdown with source/final/canonical URLs, links, and collection time.Multiple output formats are documented.
Integrations and automationApify 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 boundaryA 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, and same-hostname scope.
  • 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.

EventBilling unitWhen it applies
apify-actor-startActor StartCharged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).
page-extractedMarkdown page extractedCharged 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.