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
| Capability | StoreRouter | Firecrawl |
|---|---|---|
| Model | Product index behind one API | Scrape any URL on request |
| Scope | Covered ecommerce catalogs | Any web page |
| Discovery | search across covered catalogs | Web search, optionally scraping each result |
| Product detail | parse into one shared schema | product format from on-page structured data, or Markdown |
| Freshness | Change detection keeps the index current; force a live parse | Cached 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 search | 1 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:
| Field | StoreRouter | Firecrawl product | Firecrawl Markdown |
|---|---|---|---|
| Description | Leather exterior and lining; turnlock closure; interior pocket | “bag” | Present, among page content |
| Dimensions | ~10 × 6 × 2 in; 19–22 in strap drop | Not in record | Present, among page content |
| Image URLs | 7 | 1 | 5 (others replaced by base64 placeholders) |
| Response tokens | 1,082 | 136 | 1,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 | StoreRouter Markdown | Firecrawl product | Firecrawl Markdown |
|---|---|---|---|
| Sufficiency | 8.8 | 6.8 | 8.8 |
| Vividness | 8.0 | 7.2 | 8.4 |
| Searchability | 7.6 | 5.4 | 4.6 |
| Quality | 8.4 | 7.0 | 8.6 |
| Response tokens (mean) | 1,287 | 2,049 | 10,753 |
| Parse effort | Trivial | Easy | Moderate |
- 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
searchqueries 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
parsereturns 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;
parsewithresolutionMode: "on_demand_only"andonDemandCachePolicy: "refresh"forces a live read. Firecrawl serves a cached scrape up to two days old by default, andmaxAge: 0forces a fresh one. - Reach. Firecrawl works on any page. StoreRouter covers the catalogs in its index;
parsecan 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?
searchonly 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, locationUS, default cache,productand 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
searchon 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 theproductcall had just fetched the same page.