# Firecrawl alternatives: 7 APIs that turn a URL into markdown

Firecrawl alternatives for agents that need a web page as clean markdown, ranked by live price per call from the looot catalog, with crawl options.

## Summary

Most people looking for Firecrawl alternatives want one thing from it: send a URL, get the page back as clean markdown an LLM can read. Firecrawl does that, and more. But if your agent only needs the page text, a dedicated reader can do the same job, and the price per page is what you pay on every run.

This post ranks seven APIs from the looot catalog whose endpoint takes a URL and returns markdown. You get a quick answer, a comparison table with live prices, a second table for crawling a whole site, a guide for choosing, a prompt and a FAQ. Firecrawl appears as a baseline row so you can compare, but it is not ranked.

## Firecrawl alternatives: the short answer

Each bullet names one need. No two are the same.

- **Jina**, best for the plainest reader: one URL in, markdown and a token count out.
- **You.com**, best for pages it already holds in cache, with HTML and metadata as options.
- **ScrapeGraphAI**, best when you may need a crawl or JSON extraction from the same provider later.
- **Serper**, best when your agent already searches Google through Serper and then reads the result pages.
- **Context.dev**, best for YouTube transcripts and country-specific fetches.
- **Keenable**, best for an article's author and publish date along with the text.
- **Limadata**, best for reading up to ten URLs in one call.

| Provider | Endpoint | Returns | Other web jobs in the catalog | Billed per |
|---|---|---|---|---|
| Jina | jina-reader | Markdown, title, links, token usage | Search, embeddings, rerank | Call |
| You.com | youcom-contents | Markdown, HTML or metadata | Search, research | Result |
| ScrapeGraphAI | scrapegraphai-scrape | One format: markdown, HTML, links, images or summary | Crawl, AI extract, screenshot, search | Call |
| Serper | serper-webpage | Text, markdown on request, metadata | Google search, maps, news | Call |
| Context.dev | context-dev-web-scrape-markdown | Markdown, content length, metadata | Crawl, site map, HTML, screenshot | Call |
| Keenable | keenable-fetch | Markdown, author, published date | Search | Call |
| Limadata | limadata-api-research-extract | Markdown, title, meta description per URL | Search, people and company data | Result |
| Firecrawl (baseline) | firecrawl-scrape | Markdown and metadata, optional LLM extraction | Crawl, site map, bulk scrape, search | Call |

Prices load from the catalog when you open the page. Each row shows the cheapest matching endpoint of that provider. You.com and Limadata bill per result, which means per URL.

Page to markdown, cheapest endpoint. Prices read on 2026-11-10 from the live looot catalog. They change when a provider changes its price.

| Option | Cheapest provider | Price per call or result |
|---|---|---|
| Jina | Jina AI | $0.0002 per call or result |
| You.com | You.com | $0.0010 per call or result |
| ScrapeGraphAI | ScrapeGraphAI | $0.0020 per call or result |
| Serper | Serper | $0.0020 per call or result |
| Context.dev | Context.dev | $0.0025 per call or result |
| Keenable | Keenable | $0.0040 per call or result |
| Limadata | Limadata | $0.0040 per call or result |
| Firecrawl scrape, baseline, not ranked | Firecrawl | $0.0050 per call or result |

## How we ranked these Firecrawl alternatives

We read the public looot catalog on 2026-11-04 and kept every endpoint tagged web_scrape_markdown whose description says a URL goes in and markdown comes out. We ordered them by the price of each provider's cheapest such endpoint, cheapest first.

You.com and Limadata bill per result. For a single page, one URL is one result, so we placed them by that price as if it were per call. Send ten URLs to Limadata and the bill is ten results.

Two pairs tie on price. The tie-break is the number of other web page jobs the provider has in the catalog (crawl, structured extraction, screenshot). That puts ScrapeGraphAI above Serper. Keenable and Limadata both have none, so the per-call price ranks above the per-result one.

We did not run these endpoints for this post. The catalog publishes no measured success rate or speed for them, so we rank on neither. Olostep has a web_scrape_markdown endpoint, but its description does not say what it returns, so we left it out. Steel returns HTML unless you ask for markdown, and its endpoint is built around a browser, so we left it out too.

## 1. Jina, best for the plainest reader

The jina-reader endpoint fetches one URL and returns its main content as markdown in data.content. It adds data.title, the description, the URL, metadata, the external links and usage.tokens, so your agent knows how many tokens the page will cost before it passes it to a model.

**Best for**

- An agent that reads one pasted link at a time.
- Budgeting tokens per page before summarizing.

**Strengths**

- One input, url. Nothing to configure.
- Jina also offers embeddings and rerank in the catalog, so a small RAG pipeline stays with one provider.

**Limits**

- One URL per call.
- The catalog lists no crawl endpoint for Jina.

**Does not fit** a job that has to read a whole docs site.

## 2. You.com, best for cached pages

The youcom-contents endpoint returns the markdown, HTML or metadata of the URLs you send, chosen through formats. If You.com has no cached copy, it crawls the page live.

**Best for**

- Reading popular pages that are likely cached.
- Getting HTML and markdown of the same page in one request.

**Strengths**

- Several URLs per request.
- You.com's search and research endpoints sit in the same catalog.

**Limits**

- It bills per result, so the cost grows with each URL you add.
- A cached copy may be older than the live page.

**Does not fit** a price monitor that needs the page as it is right now.

## 3. ScrapeGraphAI, best for growing into crawl and extraction

The scrapegraphai-scrape endpoint fetches a page and returns one format: markdown, HTML, links, images or a summary, under results.markdown.data for markdown and the matching key for the others. Markdown and HTML accept three modes, normal, reader and prune. A stealth version, scrapegraphai-scrape-stealth, goes through a residential proxy for sites that block normal fetches.

**Best for**

- Starting with markdown and adding JSON extraction later.
- Sites that block plain fetches, through the stealth endpoint.

**Strengths**

- The same provider covers crawl, AI extract with a JSON schema and screenshots.

**Limits**

- formats takes exactly one item. Two formats mean two calls.
- The stealth endpoint is a separate endpoint with a higher price.

**Does not fit** someone who wants markdown and HTML from one call.

## 4. Serper, best after a Google search

The serper-webpage endpoint returns a page's text and metadata (title, description, og tags). It returns markdown only when you set includeMarkdown to true.

**Best for**

- Search a query on Google, then read the top results.
- Pulling og tags for link previews.

**Strengths**

- Serper's Google search, maps and news endpoints are in the catalog, so search and read share one provider.

**Limits**

- Markdown is off by default. Forget the flag and you get plain text.
- No crawl endpoint for Serper in the catalog.

**Does not fit** a job that needs a wait or a country, since the catalog lists neither option for this endpoint.

## 5. Context.dev, best for YouTube and country fetches

The context-dev-web-scrape-markdown endpoint scrapes one URL into markdown and returns the URL, contentLength and metadata such as language and canonical URL. Options keep links or images, keep only the main content, wait for the page, or fetch it from a given country. A YouTube URL returns the video's title, channel, description and transcript.

**Best for**

- Reading a YouTube video as text.
- Checking what a page shows in another country.

**Strengths**

- The widest set of web jobs in this list: crawl, site map, HTML, images and screenshots, plus brand data.

**Limits**

- The url must start with http:// or https://.

**Does not fit** a batch of many URLs in one request.

## 6. Keenable, best for author and date

The keenable-fetch endpoint returns a page as markdown with the title, description, author and published_at. By default it reads from Keenable's own index. live=true fetches from the source, which you need for pages it has not indexed. A prompt option makes an LLM return only the answer to your instruction.

**Best for**

- Collecting articles with their author and date for a news digest.
- A one-line answer from a page instead of the whole page.

**Limits**

- Unindexed pages need live=true, or the call misses them.
- Content is capped by max_chars, 50,000 characters by default.

**Does not fit** a long page you need in full without setting max_chars.

## 7. Limadata, best for ten URLs at once

The limadata-api-research-extract endpoint returns clean markdown, the title and the meta description for 1 to 10 URLs. render_js runs JavaScript first. Each URL gets 30 seconds and 1 MB.

**Best for**

- Reading a short list of competitor pages in one call.
- Agents that already use Limadata for people or company data.

**Limits**

- 30 seconds and 1 MB per URL. Heavy pages may cut off.
- The catalog says render_js doubles the credits used per URL.

**Does not fit** a slow page that needs more than 30 seconds to load.

## How to choose

Start from what you need back, then the volume, then whether you will crawl.

### What do you need besides the text?

Token count: Jina. Author and date: Keenable. A YouTube transcript: Context.dev. HTML too: You.com. Only text: any of them.

### How many pages per run?

One page at a time, take the top row of the live table. A list of up to ten URLs, Limadata or You.com take them in one request but bill per URL. For thousands of pages, multiply the row price by the page count before you start.

### Do you also need to crawl a site?

Then pick a provider with a crawl endpoint. A crawl finds pages by following links. A scrape reads a page you already have. [Web crawler vs web scraper](https://looot.ai/blog/web-crawler-vs-web-scraper) explains the difference. The crawl prices:

Crawl a site. Prices read on 2026-11-10 from the live looot catalog. They change when a provider changes its price.

| Option | Cheapest provider | Price per call |
|---|---|---|
| Context.dev | Context.dev | $0.0025 per call |
| Olostep | Olostep | $0.0018 per call |
| ScrapeGraphAI | ScrapeGraphAI | $0.0024 per call |
| Firecrawl crawl, baseline | Firecrawl | $0.0050 per call |

### Does it need to run on a timer?

Re-reading a page every week to spot changes needs scheduled runs, not available yet. Run it by hand for now.

| Your need | Pick |
|---|---|
| Cheapest single page | Top row of the live table |
| Token count per page | Jina |
| YouTube transcript | Context.dev |
| Author and publish date | Keenable |
| Up to ten URLs per call | Limadata |
| Search then read | Serper |
| Scrape now, crawl later | ScrapeGraphAI |

## Try it

1. Connect your agent to looot once with the setup line in the prompt.
2. Ask it to search the catalog for "read a web page as markdown".
3. Run two readers on the same five URLs and compare the output.
4. Keep the one whose markdown your model reads best, and set a budget.

The full ranking with logos lives on the [web scraping API list](https://looot.ai/best/web-scraping-api). To compare against Firecrawl as an app, see [Firecrawl alternatives on looot](https://looot.ai/alternatives/firecrawl) and the [Firecrawl MCP page](https://looot.ai/mcp/firecrawl). Every endpoint above is listed in the [public catalog](https://looot.ai/public-catalog).

## What this post does not cover

It covers URL to markdown and a crawl table. It does not cover browser automation, login-protected pages or structured extraction into your own schema. It makes no claim about success rates or speed. Providers in the live catalog that are not in the blog's provider snapshot, dated 2026-10-12, are left out until the snapshot is refreshed.

Last checked 2026-11-04 against the public catalog at https://api.looot.ai/v1/public-catalog. Author: the looot team.

## Questions

### What are the best Firecrawl alternatives?

The best Firecrawl alternatives for page to markdown are the seven APIs above: Jina, You.com, ScrapeGraphAI, Serper, Context.dev, Keenable and Limadata. Each takes a URL and returns markdown. The live table orders them by current price.

### Which Firecrawl alternative is cheapest?

The live price table above answers that, because prices change. Read the billing unit too. You.com and Limadata bill per URL, the others per call.

### What does Firecrawl do?

Firecrawl scrapes a URL and returns markdown and metadata, and can extract fields with an LLM. In the looot catalog it also has crawl, site map, bulk scrape and search endpoints. It sits in the tables as a baseline row.

### Is there a free Firecrawl alternative?

This post covers priced endpoints. None of the rows above is free. The live table shows each current price.

### How does an agent call one of these?

With looot, the agent searches the catalog, reads an endpoint's inputs and price, then runs it with your token. The provider's response comes back as named fields, with the markdown in one of them.

### Should I call the provider's API directly?

If you will only ever use one reader, yes, an account with that provider works. looot helps when you want to try several readers, or add a crawl or search, without a new account and key for each.

### Which one handles 10,000 pages?

Nothing in the catalog promises a volume limit or throughput for these endpoints. Per-call readers cost the same for each page. Limadata and You.com take several URLs per request but still bill per URL. Test on a sample first.

### Why are there no success rates or speed numbers?

The catalog publishes no measured success rate or speed for these endpoints, so we show none. Run the same five URLs through two readers before you commit to one.

## For agents

### Read pages as markdown

```text
Use looot to turn web pages into clean markdown.
1. Set up https://looot.ai/skill.md.
2. Search the catalog for "read a web page as markdown" and list each endpoint with its price and billing unit.
3. Run the two cheapest on these five URLs and show the markdown length and title from each side by side.
4. Tell me the cost before each call and stop if the total passes my budget.
```
