--- title: "Firecrawl Review: Markdown Extraction Test (2026)" type: "AI Tool" url: "https://aidemos.com/tools/firecrawl" description: "We ran Firecrawl on a recipe page, a JS Nike product page, and a protected Glassdoor jobs page; Markdown still mixed in nav/footer noise." category: "developer-tools" website: "https://www.firecrawl.dev" published: "2026-09-06T21:14:22.200745+00:00" updated: "2026-09-06T21:14:22.200745+00:00" lastTested: "2026-06" evidenceCount: 25 verifiedCount: 12 coverage: "dense" --- # Firecrawl Review: Markdown Extraction Test (2026) Strong for full-page extraction on JS-heavy or protected pages, but the Markdown is noisy ## TL;DR Verdict **Our take** **Where it wins:** - You need full-page markdown or text from live web search, not just snippets. - You need to extract public pages without writing selectors or manual DOM mapping. - You need to reach JavaScript-rendered or anti-bot protected public pages. **Main limitation:** You need near-clean semantic Markdown with boilerplate already removed. **Pricing:** Free $0/month · Hobby $16/month · Standard $83/month · Growth $333/month `Full-page markdown` · `55.3% top-3` · `12.3s p50` · `Q32 timeout` **Website:** [Visit Firecrawl](https://www.firecrawl.dev) ## Evidence (first-party, tested) *25 tested cells · 12/25 artifact-verified · last tested 2026-06. Cite a cell by its Evidence ID, e.g. `ev:firecrawl·cross·automation-level`.* | Criterion | Scenario | Verdict | Tested | Proof | Evidence ID | | --- | --- | --- | --- | --- | --- | | Automation Level | cross-scenario | ✓ worked | 2026-06 | 👁 observed | `ev:firecrawl·cross·automation-level` | | Export | cross-scenario | ✓ worked | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-scrape-dashboard-nike-page.png) | `ev:firecrawl·cross·export` | | Input Handling | Glassdoor software engineer jobs behind sign-in modal | ✓ worked | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·input-handling` | | Input Handling | Nike Air Force 1 '07 size options extraction | ✓ worked | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) | `ev:firecrawl·nike-air-force-1-07-size-options-extraction·input-handling` | | Input Handling | Chewy Chocolate Chip Cookies recipe extraction | ✓ worked | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-scrape-dashboard-nike-page.png) | `ev:firecrawl·chewy-chocolate-chip-cookies-recipe-extraction·input-handling` | | Interaction Stability | cross-scenario | ✓ worked | 2026-06 | 👁 observed | `ev:firecrawl·cross·interaction-stability` | | Interaction Stability | Glassdoor software engineer jobs behind sign-in modal | ✓ worked | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·interaction-stability` | | Interaction Stability | Nike Air Force 1 '07 size options extraction | ✓ worked | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) | `ev:firecrawl·nike-air-force-1-07-size-options-extraction·interaction-stability` | | JS DOM Hydration | Nike Air Force 1 '07 size options extraction | ◐ mixed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) | `ev:firecrawl·nike-air-force-1-07-size-options-extraction·js-dom-hydration` | | JS DOM Hydration | cross-scenario | ◐ mixed | 2026-06 | 👁 observed | `ev:firecrawl·cross·js-dom-hydration` | | Noise Filtering | cross-scenario | ◐ mixed | 2026-06 | 👁 observed | `ev:firecrawl·cross·noise-filtering` | | Noise Filtering | Glassdoor software engineer jobs behind sign-in modal | ✗ failed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·noise-filtering` | | Noise Filtering | Chewy Chocolate Chip Cookies recipe extraction | ✗ failed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-scrape-dashboard-nike-page.png) | `ev:firecrawl·chewy-chocolate-chip-cookies-recipe-extraction·noise-filtering` | | Output Quality | cross-scenario | ◐ mixed | 2026-06 | 👁 observed | `ev:firecrawl·cross·output-quality` | | Output Quality | Glassdoor software engineer jobs behind sign-in modal | ◐ mixed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·output-quality` | | Output Quality | Chewy Chocolate Chip Cookies recipe extraction | ⚠ struggled | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-scrape-dashboard-nike-page.png) | `ev:firecrawl·chewy-chocolate-chip-cookies-recipe-extraction·output-quality` | | Output Quality | Nike Air Force 1 '07 size options extraction | ◐ mixed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) | `ev:firecrawl·nike-air-force-1-07-size-options-extraction·output-quality` | | Proxy Evasion | Glassdoor software engineer jobs behind sign-in modal | ◐ mixed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·proxy-evasion` | | Proxy Evasion | cross-scenario | ◐ mixed | 2026-06 | 👁 observed | `ev:firecrawl·cross·proxy-evasion` | | Schema Extraction Integrity | cross-scenario | ✓ worked | 2026-06 | 👁 observed | `ev:firecrawl·cross·schema-extraction-integrity` | | Schema Extraction Integrity | Glassdoor software engineer jobs behind sign-in modal | ✓ worked | 2026-06 | 👁 observed | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·schema-extraction-integrity` | | Visual Spatial Awareness | cross-scenario | ✗ failed | 2026-06 | 👁 observed | `ev:firecrawl·cross·visual-spatial-awareness` | | Visual Spatial Awareness | Glassdoor software engineer jobs behind sign-in modal | ✗ failed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) | `ev:firecrawl·glassdoor-software-engineer-jobs-behind-sign-in-modal·visual-spatial-awareness` | | Visual Spatial Awareness | Nike Air Force 1 '07 size options extraction | ◐ mixed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) | `ev:firecrawl·nike-air-force-1-07-size-options-extraction·visual-spatial-awareness` | | Visual Spatial Awareness | Chewy Chocolate Chip Cookies recipe extraction | ✗ failed | 2026-06 | 🧾 [proof](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-scrape-dashboard-nike-page.png) | `ev:firecrawl·chewy-chocolate-chip-cookies-recipe-extraction·visual-spatial-awareness` | > 🧾 = artifact-verified (proof captured) · 👁 = observed (noted, no artifact) · verdicts: worked / mixed / struggled / failed. > **Our take** > > Firecrawl is strongest when you want a lot of usable page content from live web search or single-URL scraping, especially on JavaScript-hydrated and public anti-bot-protected pages, and you do not want to write selectors. The tradeoff is that the output is often noisy and flattened rather than semantically cleaned, so it works best with a downstream cleanup step. As a search layer, it returned very large rendered-page results, but recall, freshness, and multi-source performance were only middling, and it was the slowest, most credit-hungry tool in the benchmark. ## Demo Recording [Video: Firecrawl demo recording (download MP4)](https://d3epheqghktydj.cloudfront.net/firecrawl-screen-recording-2026-06-17-at-2-27-26-am.mov) [▶️ Watch (streaming)](https://stream.futuresmart.ai/embed/0df742b0-78e3-4c2c-992c-4fc2ef376b1b) *Video — Screen recording of the Firecrawl playground used during the hands-on evaluation.* ## Feature-by-Feature Breakdown ### Live Web Search with Markdown Extraction **Verdict:** Returns full-page markdown from search results, with very large content volume, but retrieval quality is mixed. Firecrawl's `/v2/search` mode with `scrapeOptions.formats=[markdown]` returned substantially more usable text than snippet-first search APIs on answerable benchmark queries. The same search behavior also stayed non-fabricating on unanswerable probes such as Serper SOC2 date, Jina ARR, Exa Enterprise pricing, Olostep index size, and Linkup index size. **Input:** ``` Fixed 52-query web-search benchmark run through Firecrawl `/v2/search` with `limit=10`, `scrapeOptions.formats=[markdown]`, same input set, same timeout, region `ap-south-1`. ``` **Output:** ``` Top-1 34.0% (16/47), top-3 55.3% (26/47), top-10 66.0% (31/47). Per-block top-3: current fact 60%, niche tech 58%, ambiguity 86%, multi-source 17%, content-depth 83%, freshness 17%. Median content was 18,437 chars, and web results exposed no published-date field. ``` **Input:** ``` Q48 — Serper SOC2 date probe. ``` **Output:** > **File** **Input:** ``` Q49 — Jina ARR probe. ``` **Output:** > **File** **Input:** ``` Q50 — Exa Enterprise price probe. ``` **Output:** > **File** **Input:** ``` Q51 — Olostep index size probe. ``` **Output:** > **File** **Input:** ``` Q52 — Linkup index size probe. ``` **Output:** > **File** **Bottom line:** Good when the model needs a lot of source text, but not a clear winner on retrieval quality, freshness, or speed. ### Robust Dynamic-Page Scraping **Verdict:** Previously reported to scrape JS-rendered and bot-protected public pages without manual selectors. Firecrawl was reported to scrape a static recipe page, a JavaScript-hydrated Nike product page, and a Glassdoor jobs page behind anti-bot protections without manual selectors. The published report also noted that the resulting markdown could be noisy. **Input:** ``` Prior published-page test set: a static recipe page, a JavaScript-hydrated Nike product page, and a Glassdoor jobs page behind anti-bot protections. ``` **Output:** ``` The earlier report said Firecrawl fetched those pages without manual selectors, but the markdown behaved like a flattened DOM dump and needed cleanup. ``` **Bottom line:** Still a useful published strength, but it was not revalidated in this 2026-09-04 search run. ### URL-to-Markdown Extraction **Verdict:** Accurate text capture, but poor semantic filtering. Converts a public URL into Markdown without manual CSS selectors or DOM mapping. The member cards were exercised on recipe-blog pages, where Firecrawl preserved article structure and core text while also carrying along some boilerplate and page chrome. **Input:** Recipe blog URL ``` Static but boilerplate-heavy recipe blog page used to test noise reduction and clean Markdown extraction. ``` **Output:** Observed result ``` The URL processed successfully in the interface with zero custom CSS selection. Markdown formatting was structurally correct, including headings and lists, and the core article layout, ingredients table, and baking workflow were extracted accurately. However, semantic filtering was effectively absent: the output included multi-level primary navigation links, historical sidebar modules, thousands of review entries, and footer content mixed into the article body. ``` **Input:** ``` Public recipe blog URL with heavy navigation, historical sidebar components, user reviews, and a footer block. ``` **Output:** **Bottom line:** Good at flattening page text into Markdown; not good at separating main content from site chrome. ### JavaScript-Rendered Page Extraction **Verdict:** Hydration worked, but cleanup did not. Renders client-side JavaScript before extracting page content. The member cards were exercised on a Nike product page / SPA, where Firecrawl waited for hydration and captured dynamic product details such as title, price, and size availability. **Input:** Nike SPA product URL ``` Dynamic Nike product page used to test asynchronous client-side rendering and extraction after JavaScript hydration. ``` **Output:** Observed result ``` Firecrawl processed the dynamic link through its normal flow and handled browser rendering server-side. It extracted critical product state, including title, pricing, and the complete size menu, showing that JavaScript execution completed successfully. At the same time, the Markdown contained raw backend/code artifacts such as %ESI_AUDIENCE_SEGMENTATION%, plus global localization links, background asset tags, raw media attachment matrices, and image URL trees. ``` **Input:** ``` Nike single-page product page with asynchronous client-side JavaScript hydration and dynamically loaded size variations. ``` **Output:** **Input:** Dynamic product page URL ``` Nike Air Force 1 ’07 men’s shoes page, tested as a JavaScript-heavy product page to check whether Firecrawl could wait for hydration and capture dynamic content. ``` **Output:** ![firecrawl-firecrawl-nike-scrape-markdown-output.png](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) *Image: firecrawl-firecrawl-nike-scrape-markdown-output.png* **Bottom line:** Reliable for pulling data that only appears after hydration, but the returned Markdown is still noisy and messy. ### Anti-Bot Protected Page Access **Verdict:** It got through the wall, but not cleanly. Accesses public pages protected by anti-bot or edge-defense layers and returns the underlying content. The member cards were exercised on a Glassdoor job listing, where Firecrawl got through Cloudflare-style protection and retrieved live job information despite noisy output. **Input:** Glassdoor job listing URL ``` Public Glassdoor job page used to test anti-bot resistance and extraction quality behind an interstitial/protected environment. ``` **Output:** Observed result ``` Firecrawl bypassed the cloud proxy/firewall layer and returned text from the protected page without manual intervention. It pulled active software engineering job listings, company names, salary estimates, and required skill arrays. But the output mixed this core content with raw UI button text such as apply/search elements, search filter blocks, internal page links, and login-related fields. ``` **Input:** ``` Glassdoor job listing page behind anti-bot protections, with active software engineering roles and salary estimates. ``` **Output:** **Input:** Protected jobs page URL ``` Glassdoor software engineer jobs listing page, tested to see whether Firecrawl could get past anti-bot protections and extract usable content from a noisy jobs interface. ``` **Output:** ![firecrawl-firecrawl-glassdoor-scrape-markdown-output.png](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) *Image: firecrawl-firecrawl-glassdoor-scrape-markdown-output.png* **Bottom line:** Strong access layer for protected public pages, but the extracted Markdown still needs post-processing to become usable. ### Single-URL page scraping to Markdown **Verdict:** It preserved article text and markdown structure, but did not meaningfully filter site boilerplate. Firecrawl can take a public URL and return a Markdown version of the page without manual CSS selection. This was tested on Sally’s Baking Addiction’s chewy chocolate chip cookies page, where it preserved the article’s textual structure, including headings, lists, and linked sections, but also pulled large amounts of navigation, sidebar, review, and footer content into the same output. **Input:** Recipe blog URL ``` Sally’s Baking Addiction chewy chocolate chip cookies page, tested as a noisy static article to see whether Firecrawl could isolate the main content in clean Markdown. ``` **Output:** ![firecrawl-firecrawl-scrape-dashboard-nike-page.png](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-scrape-dashboard-nike-page.png) *Image: firecrawl-firecrawl-scrape-dashboard-nike-page.png* **Bottom line:** Good raw Markdown conversion from a public URL, weak semantic cleanup. ### JavaScript-rendered page extraction **Verdict:** It successfully waited for client-side rendering and captured dynamic product details, but the final Markdown remained cluttered. Firecrawl can scrape pages that rely on client-side JavaScript hydration. This was tested on a Nike Air Force 1 product page, where it captured dynamic product details and the full size run after rendering, showing that the tool waited for the page’s JavaScript state to load before extracting content. **Input:** Dynamic product page URL ``` Nike Air Force 1 ’07 men’s shoes page, tested as a JavaScript-heavy product page to check whether Firecrawl could wait for hydration and capture dynamic content. ``` **Output:** ![firecrawl-firecrawl-nike-scrape-markdown-output.png](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-nike-scrape-markdown-output.png) *Image: firecrawl-firecrawl-nike-scrape-markdown-output.png* **Bottom line:** Strong JS rendering support, but not strong content cleanup. ### Anti-bot page access **Verdict:** It got through a protected jobs page and pulled useful job data, but the extracted text was still mixed with interface noise. Firecrawl can access and extract content from pages protected by anti-bot layers. This was tested on a Glassdoor software engineer jobs page, where it successfully returned live jobs-page content despite Cloudflare-style protections and heavy page chrome. **Input:** Protected jobs page URL ``` Glassdoor software engineer jobs listing page, tested to see whether Firecrawl could get past anti-bot protections and extract usable content from a noisy jobs interface. ``` **Output:** ![firecrawl-firecrawl-glassdoor-scrape-markdown-output.png](https://d3epheqghktydj.cloudfront.net/firecrawl-firecrawl-glassdoor-scrape-markdown-output.png) *Image: firecrawl-firecrawl-glassdoor-scrape-markdown-output.png* **Bottom line:** Very good at getting data out of protected pages, but the output is not clean enough to use as-is. ### Zero-selector Markdown extraction **Verdict:** Accurate text capture, but poor semantic filtering. Converts a public URL into Markdown without manual DOM selection. On a noisy recipe blog, Firecrawl preserved the article structure, ingredients, and step-by-step baking instructions with strong textual fidelity, but it also scraped the full primary navigation tree, sidebar/history components, thousands of user review nodes, and the footer into the same Markdown output. **Input:** Recipe blog URL ``` Static but boilerplate-heavy recipe blog page used to test noise reduction and clean Markdown extraction. ``` **Output:** Observed result ``` The URL processed successfully in the interface with zero custom CSS selection. Markdown formatting was structurally correct, including headings and lists, and the core article layout, ingredients table, and baking workflow were extracted accurately. However, semantic filtering was effectively absent: the output included multi-level primary navigation links, historical sidebar modules, thousands of review entries, and footer content mixed into the article body. ``` **Bottom line:** Good at flattening page text into Markdown; not good at separating main content from site chrome. ## Credit-based subscription plans Plans reported in the research. | Plan | Price | Notes | | --- | --- | --- | | Free | $0/month | 1,000 credits per month | | Hobby | $16/month | 5,000 credits per month | | Standard | $83/month | 100,000 credits per month | | Growth | $333/month | 500,000 credits per month | | Scale | $599/month | 1,000,000 credits per month | | Enterprise | Custom pricing | Unlimited credits and a dedicated SLA | *Enterprise includes unlimited credits and a dedicated SLA.* ## Is It Right For You? **Use it if** - You need full-page markdown or text from live web search, not just snippets. - You need to extract public pages without writing selectors or manual DOM mapping. - You need to reach JavaScript-rendered or anti-bot protected public pages. - You can tolerate slower, credit-based runs for richer page content. - You can clean up noisy markdown downstream. **Skip it if** - You need near-clean semantic Markdown with boilerplate already removed. - You need fast, low-cost retrieval at agent-turn frequency. - You need strong freshness or multi-source recall from the search layer. - You need native answer, citation, or published-date fields in web responses. - You need validated structured JSON extraction from this report. ## Classification - **Category:** developer-tools - **Subcategory:** search-engine - **Type:** text - **Built for:** Other ## Frequently Asked Questions **Q: Does Firecrawl handle JavaScript-heavy pages?** Yes. In the Nike SPA test, it waited for client-side hydration and captured the product title, pricing, and the dynamically loaded size menu. **Q: Can Firecrawl access pages behind anti-bot protections?** Yes for the tested public page. In the Glassdoor test, it bypassed the protection layer and returned job listing content, salary estimates, and required skill arrays. **Q: How clean is Firecrawl's Markdown output?** The output was noisy in every test. It preserved useful content, but it also included navigation trees, sidebar components, footer links, localization links, filters, login fields, and even raw backend or media-artifact noise. **Q: Do you need to configure selectors or manual DOM mapping?** No. The tests were run zero-shot, and the report says Firecrawl processed the pages without custom CSS selection or manual mapping. **Q: How well did Firecrawl work as a web search tool?** Across the 47 answerable queries, Firecrawl scored 34.0% top-1, 55.3% top-3, and 66.0% top-10. It did best on ambiguity and content-depth, and worst on freshness and multi-source queries. **Q: How much content and latency did the search benchmark show?** It returned a lot of text: a median 18,437 characters per query, with a median max-per-query size of 45,603 characters, and one query reaching 301,259 characters on a single result. It was also the slowest tool in the benchmark, with p50 latency of 12,254 ms and p95 latency of 21,316 ms. **Q: Does Firecrawl include answer text, citations, or published dates?** No separate answer-synthesis or citation field was present in the tested search responses, and web results did not include a published-date field. The adapter received `data.web[]` results only. **Q: Was structured JSON extraction tested in this review?** No. This report evaluated Markdown/text extraction from web pages, but it did not validate a schema-driven JSON extraction path. **Q: What does Firecrawl cost?** The report lists credit-based monthly plans: Free at $0 for 1,000 credits, Hobby at $16 for 5,000 credits, Standard at $83 for 100,000 credits, Growth at $333 for 500,000 credits, Scale at $599 for 1,000,000 credits, and Enterprise with custom pricing, unlimited credits, and a dedicated SLA. ## Similar Tools AI tools similar to Firecrawl: - [Exa](https://aidemos.com/tools/exa) — Best live-web search API here for agents that need ranked results, long page text, and cited answers. - [Jina](https://aidemos.com/tools/jina) — Rich web search results for agents, but this free-tier run was incomplete and not comparable. - [Linkup](https://aidemos.com/tools/linkup) — Standard mode is the usable tier: strong extraction, weak ranking; deep is slower, pricier, and weaker. - [Olostep](https://aidemos.com/tools/olostep) — A search-only baseline with mid-pack retrieval, weak extraction, and no usable answer mode. - [SerpAPI](https://aidemos.com/tools/serpapi) — Fast, zero-error live web search for agents, with stable mid-pack retrieval and snippet outputs. - [Serper](https://aidemos.com/tools/serper) — Fast, cheap raw web search for agents — strong on ambiguity, but too snippet-thin to replace a scrape. - [Tavily](https://aidemos.com/tools/tavily) — A web search API that returns full-page text well, but usually buries the best result. - [Valyu](https://aidemos.com/tools/valyu) — Returns usable web text for agents, but the citation layer is too error-prone to trust. - [You.com](https://aidemos.com/tools/you-com) — Best-in-benchmark top-1 web retrieval for agent queries, with full-page text and published dates — but at a measured high all-in cost. - [Spider](https://aidemos.com/tools/spider) — Fast static-page scraping, but weak cleanup and poor reliability on dynamic or protected sites. - [Skyvern](https://aidemos.com/tools/skyvern) — Visually navigates messy and JS-heavy pages to extract clean structured outputs, but it runs slower than text-first scrapers. ## Need a custom AI solution for this use case? If you are looking to build a custom web scraping, content extraction, or crawl automation system for your business or internal workflow, email us at [contact@futuresmart.ai](mailto:contact@futuresmart.ai). ### Found something inaccurate or missing? We try to keep our AI research accurate and useful. If you found outdated information, an issue, or have a suggestion, email us at [collaborate@aidemos.com](mailto:collaborate@aidemos.com).