TinyFish vs Firecrawl: Search, Crawl & Agents

TinyFish and Firecrawl both give developers APIs for searching, extracting, and interacting with the web, but they are built around different kinds of workflows.
TinyFish is a strong fit for applications that need readable page content, browser control, or recurring tasks inside authenticated websites. TinySearch and TinyFetch handle discovery and retrieval, while TinyAgent supports goal-driven execution with saved browser profiles and Vault credentials for supported login recovery. Firecrawl is stronger for site-wide ingestion and configurable extraction, with dedicated Map and Crawl APIs and schema-based extraction through Scrape.
That difference changes how much orchestration your application needs to handle. Firecrawl can discover and crawl a documentation site as a managed job, while a TinyFetch workflow requires you to supply the URLs and manage collection. For authenticated workflows, the decision shifts toward browser control, login recovery, and whether the task completes reliably.
This guide compares TinyFish and Firecrawl across search, extraction, crawling, browser automation, agents, authentication, pricing, deployment, and published benchmark evidence.
TinyFish vs Firecrawl at a glance
| Area | TinyFish | Firecrawl |
|---|---|---|
| Search | TinySearch | Search |
| Known-page retrieval | TinyFetch | Scrape / Batch Scrape |
| Site crawling | Application-managed | Map + Crawl |
| Browser control | TinyBrowser | Browser Sandbox / Interact |
| Goal-based execution | TinyAgent | Agent |
| Authenticated workflows | Profiles + Vault | Persistent profiles |
| Self-hosting | Managed / enterprise deployment options | Core APIs self-hostable |
| Billing | Free Search/Fetch + usage-based Browser/Agent | Credit-based plans |
Documentation and prices checked November 4, 2026. Recommendations below are based on documented capabilities and attributed published evaluations. The workload examples are illustrative, not new hands-on tests.
What the published benchmarks establish
TinyFish’s fetch-quality methodology reports a June 2, 2026 evaluation of 45 URLs. Under its usability criteria, TinyFetch returned usable results for 42 URLs; Firecrawl Scrape returned usable results for 28.
The evaluation required at least 1,000 returned characters and a content-to-noise ratio above 30%, judged by Claude Sonnet 4.6. Providers used their documented default configurations, with no retries or provider-specific tuning. TinyFish ran the evaluation; using a third-party model as judge does not make it an independently run benchmark.
Those results support a dated comparison of page retrieval on that sample. They do not establish current success rates for crawling, logged-in tasks, browser interaction, or Agent execution. A filtered product-page extraction is also a different configuration from default Markdown retrieval.
Use the published findings to identify what to test on your own sources. For the wider set of search and execution measurements, see the benchmark hub, keeping each metric tied to the endpoint and workload it actually measures.
TinyFish vs Firecrawl for Web Search
Suppose your application needs recent announcements from a list of companies. First it must find relevant pages; then it must decide which pages deserve a full retrieval request.
TinySearch returns titles, URLs, snippets, positions, and source-specific metadata. Its controls include domain inclusion or exclusion, location, language, date bounds, and a relative recency window. Web, news, and research-paper searches use different result metadata.
The integration naturally separates discovery from reading: search, inspect the results, then send selected URLs to TinyFetch. That is useful when your application wants to reject duplicates, aggregators, or irrelevant results before retrieving content.
Firecrawl Search supports web, news, and image sources. Adding scrapeOptions requests page content within the search operation. You can also search first and scrape selected results later, so the one-call approach is optional.
| Implementation choice | TinySearch | Firecrawl Search |
|---|---|---|
| Retrieve ranked sources | Search result payload | Search result payload |
| Read selected pages | Follow with TinyFetch | Follow with Scrape |
| Request page scraping within search | Separate retrieval API | Configure scrapeOptions |
| Restrict domains | include_domains / exclude_domains | includeDomains / excludeDomains |
Recommendation: Start with TinySearch when you want discovery and retrieval as separate steps and its standard limits fit the application. Choose Firecrawl’s combined request when you routinely need content from the returned pages and want that work handled within one operation. Include the additional scraping credits in that comparison.
For either implementation, validate publication dates and the underlying source before treating a result as a recent announcement. Search relevance and evidence freshness are separate checks.
TinyFetch vs Firecrawl Scrape for Page Extraction
A request for readable page content is different from a request for named business fields. That distinction changes which endpoints belong in the comparison.
TinyFetch for readable content from known URLs
TinyFetch accepts up to 10 URLs per request. It returns content and per-URL errors separately, allowing a batch to contain both successful and unsuccessful fetches. Production integrations should inspect errors[] even when the request itself succeeds, because individual URLs can fail independently.
The output can be Markdown, semantic HTML, or a structured document tree. Optional links and page metadata help an application retain source context. CSS inclusion and exclusion selectors can scope the extraction to relevant sections.
The important detail is that format: "json" means a document tree. It is not a request to populate an arbitrary business schema such as product_name, price, and availability. If your application needs those fields, it must add an extraction step or use an appropriate agent workflow.
Firecrawl Scrape for configurable page extraction
Firecrawl Scrape combines page retrieval with options for content formats, screenshots, and page processing. Its JSON mode accepts a prompt or schema to extract fields from a known page.
For a product catalog, that lets you request the product name, currency, price, and stock status in the extraction request itself. Your application still needs to validate the values, particularly when a page shows multiple variants or promotional prices.
Firecrawl also provides a Batch Scrape job for explicit URL lists, with asynchronous execution, status checks, and error inspection. That is a different operating model from sending small Fetch batches and managing progress in your application.
Set freshness deliberately
TinyFetch’s ttl is measured in seconds; ttl: 0 requests a live fetch.Firecrawl’s cache-age control uses maxAge in milliseconds and documents a default tolerance of two days.
For a pricing comparison, set the acceptable age explicitly. Otherwise, two valid requests may return content from different moments, making a freshness difference look like an extraction error.
Recommendation: Use TinyFetch when you need readable content for an existing processing pipeline. Firecrawl is the more direct fit when one known-page request needs configurable extraction into your own fields. For large explicit URL lists, compare Firecrawl’s job management with the batching and tracking you would implement around TinyFetch.
Site discovery and crawling: Where Firecrawl has the clearer fit
If the requirement is “ingest this documentation site,” the application needs discovery, scope control, page retrieval, and a way to account for incomplete results.
Firecrawl Map discovers URLs without scraping their content. It uses sitemaps alongside other discovery sources and supports filtering the returned links. It is useful when you want to review the URL set before collecting pages, but it is not a guarantee of an exhaustive inventory.
Firecrawl Crawl discovers pages through sitemaps and recursive link traversal, then applies the scraping pipeline. Controls include path inclusion and exclusion, discovery depth, page limits, and subdomain or external-link scope. Jobs support progress and result retrieval, with separate inspection of failed pages.
For documentation ingestion, you could limit collection to the current version’s reference paths, exclude release archives, and inspect failures before updating the knowledge base. The crawl’s final status should be considered alongside the returned pages and errors.
TinyFetch starts from URLs you supply. TinyFish’s current public API catalog does not provide a directly equivalent Map/Crawl pair. You can build discovery, deduplication, queues, and progress tracking around its retrieval APIs, but those become application responsibilities.
Recommendation: Choose Firecrawl for a dedicated site-discovery and ingestion pipeline. Choose TinyFetch when you already have the URL set and want to control how those pages enter your application. An agent that navigates several pages is not a substitute for a crawler’s scope and result accounting.
TinyBrowser and TinyAgent vs Firecrawl Browser and Agent
Both platforms can interact with websites. The more useful distinction is whether your code specifies each action, an existing agent chooses actions, or a managed agent receives the overall goal.
When your application controls the browser
TinyBrowser creates a remote browser session and returns a Chrome DevTools Protocol (CDP) connection URL. Your Playwright, Puppeteer, or CDP controller then performs the work. The API exposes proxy configuration, inactivity timeouts, and explicit session termination.
Firecrawl Browser Sandbox provides a standalone browser environment with code execution, a CDP connection, and live views. Interact can also continue from a Scrape result, letting an application retrieve a page and then act within its browser session.
That continuity is useful when a page initially returns useful content but a filter, expanded panel, or pagination step is needed next. You can use code or focused natural-language prompts while managing the sequence in your application.
Recommendation: Evaluate TinyBrowser when you want a remote browser for a controller you already own. Evaluate Firecrawl’s Scrape + Interact path when retrieval and subsequent actions belong in the same session. Firecrawl also supports standalone sessions, so it is not limited to acting on a single scraped page.
When you delegate the goal
TinyAgent requires a starting URL and a natural-language goal. It supports synchronous, asynchronous, streamed, and batch runs. An output_schema can define the final result shape.
Firecrawl Agent is positioned around autonomous data gathering. It accepts a prompt, optional starting URLs, and an optional output schema. Its documentation describes asynchronous jobs, execution traces, and a maxCredits control. It is currently labeled Research Preview.
Consider two requests:
- Known portal: “Open this supplier portal, find order 4821, and return its delivery status and source URL.” TinyAgent is a direct candidate for this targeted workflow.
- Discovery-led collection: “Find companies that meet these criteria and return their names and supporting sources.” Firecrawl Agent is a direct candidate when source discovery is part of the job.
These are starting recommendations, not exclusive capabilities. Compare the actual outputs and recovery behavior for your task. A valid JSON result proves its shape, not that the agent found the right order or company.
TinyAgent's run API exposes status, results, step counts, and errors. Session recording is available only for supported custom or enterprise accounts, so verify which evidence your support workflow requires before relying on it. Firecrawl’s Agent traces provide another inspection path. Verify the evidence your support team needs before building a workflow around it.
Authentication, Browser Profiles, and Deployment
A recurring portal task must handle two situations: the saved login still works, or the website requires authentication again.
TinyAgent profiles and Vault
TinyFish’s Browser Context Profiles use an explicit setup flow: create a profile, open a setup session, sign in, and save the state. Later TinyAgent runs attach the profile using use_profile and, where needed, profile_id.
Pairing the profile with Vault provides a documented recovery path. If the login expires and a matching credential is available, TinyAgent can sign in again and repair the saved state. Scope the available credentials to the intended account.
This is a TinyAgent workflow. Direct TinyBrowser sessions are isolated; do not assume the same profile attachment is available on every TinyFish browser surface.
Firecrawl persistent profiles
Firecrawl’s Browser Sandbox and Scrape + Interact support named profiles that preserve browser state. For the scrape-bound path, the profile is configured on the initial Scrape request, and Interact inherits it.
Writable state is saved when the session stops. Only one session can save to a profile at a time; read-only profile loads support concurrent readers. That matters when several jobs use the same account: decide which run may update the saved state.
For both platforms, test the expired-session case explicitly. Replaying cookies does not itself establish a reauthentication strategy. Check how your workflow obtains a fresh login, handles an additional verification step, and reports that it needs a person.
Managed service versus self-hosting
Firecrawl offers a meaningful self-hosted path. Its core scraping, crawling, mapping, and search APIs can run on infrastructure you control. Large Language Model (LLM) backed features and supporting services need configuration, and your team owns deployment and operations.
The default open-source stack is not the full hosted product. Firecrawl documents Agent, Browser, Interact, managed dashboards, and enterprise controls as Cloud surfaces rather than capabilities included in that default stack.
TinyFish’s standard path is managed APIs. Its enterprise pricing lists VPC deployment and workload-specific arrangements; these require discussion rather than implying a downloadable equivalent to Firecrawl’s self-hosted stack.
Recommendation: Firecrawl has the clearer fit when self-hosting the core retrieval pipeline is required. TinyAgent deserves evaluation when recurring portal work benefits from its documented profile-and-Vault recovery flow. In either case, test the full login lifecycle rather than checking only whether a saved session loads.
Pricing: Compare the workload, not the billing unit
Prices below are in USD, checked November 4, 2026. Taxes and negotiated contracts are excluded.
TinyFish pricing
The public pricing page lists:
- TinySearch: Free within standard limits of 30 requests per minute and 500 per hour.
- TinyFetch: Free within standard limits of 150 URLs per minute and 1,000 per day.
- TinyBrowser: $0.002 per minute, with five concurrent sessions on a standard account.
- TinyAgent: $0.016 per step, including model inference, with two concurrent runs on a standard account.
Browser and Agent usage draw from a prepaid Wallet without a recurring subscription or monthly minimum. Higher capacity is arranged separately. These limits do not establish an unlimited free service.
Firecrawl pricing
Firecrawl’s monthly plans include:
- Free: 1,000 credits per month.
- Hobby: $19 per month for 5,000 credits; $16 per month when billed annually.
- Standard: $99 per month for 100,000 credits; $83 per month when billed annually.
Higher-volume plans add credits and capacity. Paid-plan pay-as-you-go can purchase extra credits in $5 increments, subject to the configured spending limit.
The detailed billing documentation distinguishes the operations:
| Operation | Credit consumption |
|---|---|
| Basic Scrape or Crawl | 1 per page |
| Map | 1 per call |
| Search | 2 per 10 results, rounded up; scraping adds page charges |
| JSON extraction on Scrape/Crawl | 4 additional credits per page |
| Code-only Interact session | 2 per browser minute |
| Session using AI prompts | 7 per browser minute |
| Agent | Dynamic usage, with a documented daily free allowance during preview |
Interact has a one-minute minimum and costs 2 credits per browser minute for code-only sessions or 7 credits per browser minute when the session uses a natural-language prompt.
Scrape-bound Interact also incurs the preceding scrape’s charges. Other options, including enhanced processing or zero-data-retention configurations, can add charges; quote the configuration you intend to use.
Firecrawl also distinguishes a scrape that returns no result from a returned error page: the former is not charged, while a page returned with a status such as 403 or 404 costs one credit. Include those outcomes when measuring cost per usable result.
Example 1: Retrieve 100 known public pages
Assume 100 successful, ordinary HTML-page requests for Markdown, without paid extraction options or retries.
- TinyFetch: 100 URLs fall within the published 1,000-URL daily allowance, with requests paced to the rate limit. Fetch API charges are $0 under that allowance.
- Firecrawl Scrape: 100 pages consume 100 credits. If you also request JSON extraction on every page, the documented base-plus-JSON consumption is 500 credits: 100 × (1 + 4).
Both fit within their published free allowances in this example. The difference becomes more relevant with repeated volume, required extraction features, and capacity. If your application extracts fields from TinyFetch content using a separate model, include that model’s cost too.
Example 2: Complete an authenticated status check
Assume, purely for illustration, that a TinyAgent run uses 20 steps and a Firecrawl prompted browser session lasts two minutes:
- TinyAgent: 20 × $0.016 = $0.32.
- Firecrawl prompted interaction: 2 × 7 = 14 credits, plus the initial scrape if you use Scrape + Interact.
These examples are illustrative, not measured execution results, and the billing units are not directly equivalent. Firecrawl Agent uses its own dynamic pricing model, so the Interact calculation should not be treated as a stand-in for Agent costs. To understand real-world spend, run the same workflow on both platforms and track total usage, successful completion, retries, and any manual intervention required.
For code-controlled browser workflows, assess TinyBrowser against Firecrawl’s code-only browser rate. For delegated tasks, evaluate the respective agent workflows instead. Mixing different execution models would distort the cost picture.
When to choose TinyFish, Firecrawl, or both
| Your requirement | Start with | Why |
|---|---|---|
| Discover and ingest a documentation site | Firecrawl Map/Crawl | Dedicated discovery, scope controls, and crawl-job accounting |
| Retrieve readable content from a known URL set | TinyFetch | Published free standard allowance and small-batch retrieval |
| Extract a business schema from a known page | Firecrawl Scrape JSON mode | Fields can be requested within the page-extraction operation |
| Continue interacting after scraping a page | Firecrawl Scrape + Interact | Retrieval and subsequent actions share a session |
| Run your own browser controller | Evaluate TinyBrowser and Firecrawl Browser Sandbox | Both expose browser control; compare lifecycle and total usage |
| Run a targeted portal task with saved state and credential-backed recovery | TinyAgent | Documented URL-and-goal execution with Profiles and Vault |
| Gather data while discovering the sources | Evaluate Firecrawl Agent | Prompt-led discovery and structured collection; account for preview status |
| Self-host the core crawl/retrieval stack | Firecrawl open source | Documented self-hosted deployment, with a narrower scope than Cloud |
TinyFish and Firecrawl can also fit different parts of the same stack. For example, Firecrawl Crawl may handle documentation ingestion, while TinyAgent manages recurring work inside a supplier portal. Using both is worthwhile when each platform solves a distinct requirement better; otherwise, adding another provider can increase integration and maintenance overhead without much practical benefit.
The right choice depends on the workflow you need to support. Test the platforms against representative sources, include failure cases rather than only successful runs, and measure the cost of getting a correct result from start to finish. That will tell you more than feature lists or headline pricing alone.
If you are considering a move from Firecrawl, you can explore TinyFish migration and commercial options.
Test the relevant TinyFish API on your workflow
Start with the smallest API that completes the job: TinySearch for discovery, TinyFetch for page content, TinyBrowser for direct control, or TinyAgent for a website goal. Use a source you know and define the expected result before the run.
AI disclosure
Content on this website may be created or refined with the assistance of AI tools and is subject to human editorial review.



