StoreRouter vs. Firecrawl

A product index vs. a page scraper.

Firecrawl turns any web page into Markdown, or into a product object built from the page's structured data. StoreRouter answers search and parse from a product index it keeps current, in one schema, compact enough to put many products in one prompt.

  • /v1/products/search
  • /v1/products/parse
  • JSON · Markdown

Evidence recorded October 7, 2026 · StoreRouter, formerly Octogen

StoreRouter and Firecrawl at a glance
CapabilityStoreRouterFirecrawl
ModelProduct index behind one APIScrape any URL on request
ScopeCovered ecommerce catalogsAny web page
Discoverysearch across covered catalogsWeb search, optionally scraping each result
Product detailparse into one shared schemaproduct format from on-page structured data, or Markdown
FreshnessChange detection keeps the index current; force a live parseCached scrape up to 2 days by default; maxAge: 0 forces a fresh one
Tokens / product~1.3K (measured)~2.0K product · ~10.8K Markdown (measured)
Pricing$2 / 1k parse · $14 / 1k search1 credit per page; credit price by plan

Fit

Which one fits

Choose StoreRouter when

your agent works with products: it searches across stores and compares items on price, stock, materials, fit and size, and you want every product in the same compact schema without page-specific parsing.

Choose Firecrawl when

your agent reads the open web: articles, docs, and stores StoreRouter doesn't cover. Or when you want raw page content and will extract and structure it yourself.

Recorded run · 2026-10-07

Same page, three outputs

We sent four known-indexed bags from Net-a-Porter and FWRD to StoreRouter's index-only parse and to Firecrawl's /v2/scrape with its product and Markdown formats, twice. Both providers returned all four, both times. The difference is what came back. For the Savette Symmetry Shoulder Bag on FWRD:

Savette Symmetry Shoulder Bag: StoreRouter and Firecrawl outputs
FieldStoreRouterFirecrawl productFirecrawl Markdown
DescriptionLeather exterior and lining; turnlock closure; interior pocket“bag”Present, among page content
Dimensions~10 × 6 × 2 in; 19–22 in strap dropNot in recordPresent, among page content
Image URLs715 (others replaced by base64 placeholders)
Response tokens1,0821361,605

Firecrawl's product format reads the page's structured data, which here says little more than “bag”. Its Markdown has the facts, alongside cookie banners, financing offers and repeated image carousels the agent has to read past. On the two Net-a-Porter bags, the product record carried no price in any variant; the Markdown did.

Four URLs from StoreRouter's index: an access and content demonstration, not a coverage survey. Stock states agreed across providers on all four.

Evaluation

Representation scores

We scored five products with our Product Representation Compare rubric: Sufficiency, Vividness and Searchability, each 1–10, with Quality = mean(Sufficiency, Vividness). These are the same five products scored in our Apify comparison.

Five-product mean representation ratings
Five-product meanStoreRouter MarkdownFirecrawl productFirecrawl Markdown
Sufficiency8.86.88.8
Vividness8.07.28.4
Searchability7.65.44.6
Quality8.47.08.6
Response tokens (mean)1,2872,04910,753
Parse effortTrivialEasyModerate
  • Firecrawl Markdown matches StoreRouter on substance, and edges it on Quality. On two products the page states fibre content and fit notes that our records omit; we're fixing those. It costs about 8× the tokens (22× on one product) and scores lowest on Searchability, because the facts sit inside duplicated carousels, site-wide size guides, other products' reviews and currency selectors.
  • Firecrawl `product` is compact and structured, but thinner. It is strong on per-variant price and stock, and it never states a rating or audience. It repeats the full image list under every variant: one product's 9 variants carried 72 image references to 8 unique images.
  • StoreRouter was the only output with per-size stock, audience and rating on every scored product. Firecrawl Markdown stated stock only for the page as a whole on three of the five.

Five selected products, one unblinded evaluator. Exploratory representation judgments, not measured accuracy or completed agent tasks. Enrichment is derived and was not independently verified.

Architecture

Where the work happens

  • Discovery. StoreRouter search queries one product index across covered catalogs and returns products. Firecrawl's search queries the web and returns pages, which it can scrape in the same request.
  • Product detail. StoreRouter parse returns the shared schema: variants, per-size stock, materials, audience, ratings and normalized attributes. Firecrawl gives you the page's own structured data (product) or the page as Markdown, and the structuring is yours.
  • Freshness. StoreRouter detects changes on covered stores and re-crawls them, so the index tracks the live store; parse with resolutionMode: "on_demand_only" and onDemandCachePolicy: "refresh" forces a live read. Firecrawl serves a cached scrape up to two days old by default, and maxAge: 0 forces a fresh one.
  • Reach. Firecrawl works on any page. StoreRouter covers the catalogs in its index; parse can resolve other product URLs on demand, with sparser results.

Before you build

Integration notes

What does 8× the tokens cost?

At 10,753 vs 1,287 mean tokens, reading 1,000 products as Firecrawl Markdown puts about 9.5M more input tokens through your model than StoreRouter does. Price that at your model's input rate, and add the context-window room it takes when an agent compares several products at once.

Can I use both?

Yes. Use StoreRouter for products in covered stores and Firecrawl for the rest of the web: articles, reviews, docs and stores outside the index.

Are the stores I need covered?

search only spans covered catalogs; check catalog coverage for the stores your agent needs. Coverage expands with request demand. That's the direction, not a guarantee for any given store today.

What does each cost per call?

StoreRouter: $2 per 1,000 parse requests and $14 per 1,000 search requests, 2xx only (see pricing). Firecrawl: 1 credit per scraped page for these formats, with the credit price set by plan. Per call they overlap; the bigger difference is the tokens your model reads afterwards.

Give your agent every store.

Mint a key, send search a real shopping query, and parse the products your agent would recommend.

Observations

Recorded timings

StoreRouter: index-only parse, client-measured median 299 ms over 10 requests (range 267–1,723 ms), and 304 ms / 437 ms medians in the two repeat runs.

Firecrawl: product scrapes that missed Firecrawl's cache took a median 4.35 s (10 requests) and 1.3–4.7 s on the four bags. Cache hits took 0.2–0.5 s. A hit is a stored scrape up to two days old by default.

Client timings on one machine with different cache conditions, no control of load or geography. Not a matched latency benchmark.

Methodology

Scope and limitations

  • Firecrawl. POST /v2/scrape, location US, default cache, product and Markdown (onlyMainContent) formats at 1 credit each. Firecrawl's LLM-based JSON extraction with a custom schema (+4 credits per page) was not tested and may do better.
  • StoreRouter. Index-only parse, Markdown format, on every request.
  • Cohorts. Five scored products from the 12-URL set used in our Apify comparison, unchanged; and four Net-a-Porter/FWRD bags selected by StoreRouter search on 2026-09-23, run twice. All come from StoreRouter's index, so none of this estimates coverage.
  • Scoring. One unblinded evaluator (an AI agent) read every body. Images were counted, not downloaded. Data accuracy is outside the rubric; one price disagreement between providers was recorded but not scored.
  • Run order. Per URL: StoreRouter, then Firecrawl product, then Firecrawl Markdown. Firecrawl's Markdown calls were cache hits because the product call had just fetched the same page.