Captures hydrated product content but leaves substantial non-content noise in the output, including raw backend code artifacts and raw media-attachment matrices.

◐ Mixed🧾 artifact-verifiedinput + output shownTested Jun 23, 2026Firecrawl
What was measured
JS DOM Hydration

How well the tool waits for and captures content rendered by client-side JavaScript on dynamic pages.

decisive for this rankingtransformation

Capturing JavaScript-rendered content is a core scraping capability for modern web pages. (3 of 3 judges)

What was given, what came back

Test input: Nike Air Force 1 '07 size options extraction · mixed
Input — what we sent
Input, verbatim
https://www.nike.com/t/air-force-1-07-mens-shoes-jBrhbr/CW2288-111 — Wait for the size selection options to fully render. Extract the product name, price, and a list of all available shoe sizes.

A Nike product page with client-side JavaScript hydration used to test whether a headless scraper waits for dynamic DOM content before extracting product details and all available shoe sizes.

Output — unretouched
Firecrawl scrape result for a Nike product page in Markdown format.
Firecrawl scrape result for a Nike product page in Markdown format.
Provenance
Observation
539003d1-a873-4167-8a3e-5427f4a36e74
Evidence run
06e1dbd6-5518-4af8-aa1a-735259a75b4f
Study
Scrape Web Pages Into Clean Markdown or Structured Data Using AI
Research task
86b9jm3a3
Tested at
Jun 23, 2026
Source
first-party
Evidence state
verified
Proof shown
input + output shown
Cost / latency
not captured
Repeat run
not captured
Tester
not captured

The last three rows are honest blanks, not placeholders — our capture has no field for them yet.

Query this
get_evidence({
  tool: "firecrawl"
})
MCP · mcp.aidemos.com/api/mcp
Free with attribution.
Same input, same check — 3 other tools
measured on JS DOM Hydration
Real inputs and real outputs, no retouching · every cell queryable via API & MCP · aidemos.com