> ## Documentation Index
> Fetch the complete documentation index at: https://docs.firecrawl.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Scrape

> Turn any url into clean data

> [!WARNING]
>
> **This page documents the v0 API, deprecated on April 1, 2025.** It is kept for
> historical reference and does not describe how Firecrawl works today. Current
> documentation: [Scrape](https://docs.firecrawl.dev/features/scrape.md). To move an existing v0 integration, see
> [Migrating from v0](https://docs.firecrawl.dev/migrating-from-v0).

## Scraping with Firecrawl

Firecrawl converts web pages into markdown, ideal for LLM applications. Here's why:

1. **Complexities Managed:**
   Handles proxies, caching, rate limits, and JavaScript-blocked content for smooth scraping.

2. **Dynamic Content:**
   Gathers data from JavaScript-rendered websites, pdfs, images etc.

3. **Markdown or Structured data conversion:**
   Converts collected data into clean markdown or structured output, perfect for LLM processing or any other task.

For more details, refer to the [Scrape Endpoint API Reference](https://docs.firecrawl.dev/api-reference/endpoint/scrape.md).

## Scrape a URL

### /scrape endpoint

Used to scrape a URL and get its content.

### Installation

```bash Python theme={null}
pip install firecrawl-py
```

```bash JavaScript theme={null}
npm install firecrawl
```

```go Go theme={null}
go get github.com/mendableai/firecrawl-go
```

```toml Rust theme={null}
# Add this to your Cargo.toml
[dependencies]
firecrawl = "^0.1"
tokio = { version = "^1", features = ["full"] }
serde = { version = "^1.0", features = ["derive"] }
serde_json = "^1.0"
uuid = { version = "^1.10", features = ["v4"] }

[build-dependencies]
tokio = { version = "1", features = ["full"] }
```

### Usage

```python Python theme={null}
from firecrawl import FirecrawlApp

app = FirecrawlApp(api_key="YOUR_API_KEY")

content = app.scrape_url("https://mendable.ai")
```

```JavaScript JavaScript theme={null}
import { FirecrawlApp } from 'firecrawl-js';

const app = new FirecrawlApp({ apiKey: 'YOUR_API_KEY' });

const content = await app.scrapeUrl('https://mendable.ai');
```

```go Go theme={null}
import (
  "fmt"
  "log"

  "github.com/mendableai/firecrawl-go"
)

func main() {
  app, err := firecrawl.NewFirecrawlApp("YOUR_API_KEY")
  if err != nil {
    log.Fatalf("Failed to initialize FirecrawlApp: %v", err)
  }

  content, err := app.ScrapeURL("mendable.ai", nil)
  if err != nil {
    log.Fatalf("Failed to scrape URL: %v", err)
  }
  fmt.Println(content)
}
```

```rust Rust theme={null}
use firecrawl::FirecrawlApp;

#[tokio::main]
async fn main() {
    // Initialize the FirecrawlApp with the API key
    let api_key = "YOUR_API_KEY";
    let api_url = "https://api.firecrawl.dev";
    let app = FirecrawlApp::new(api_key, api_url).expect("Failed to initialize FirecrawlApp");

    // Scrape the URL
    let scrape_result = app.scrape_url("https://mendable.ai", None).await;

    // Print the scrape result
  match scrape_result {
    Ok(data) => println!("Scrape Result:\n{}", data["markdown"]),
    Err(e) => eprintln!("Scrape failed: {}", e),
  }
}
```

```bash cURL theme={null}
curl -X POST https://api.firecrawl.dev/v0/scrape \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer YOUR_API_KEY' \
    -d '{
      "url": "https://mendable.ai"
    }'
```

### Response

SDKs will return the data object directly. cURL will return the payload exactly as shown below.

```json theme={null}
{
  "success": true,
  "data": {
    "content": "Raw Content ",
    "markdown": "# Markdown Content",
    "provider": "web-scraper",
    "metadata": {
      "title": "Mendable | AI for CX and Sales",
      "description": "AI for CX and Sales",
      "language": null,
      "sourceURL": "https://www.mendable.ai/"
    }
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.