Metadata-Version: 2.5
Name: flycrawl
Version: 1.0.0
Summary: Official Python SDK for FlyCrawl - High-Performance Web Scraping & Markdown Extraction for AI
Project-URL: Homepage, https://flycrawl.net
Project-URL: Documentation, https://flycrawl.net/docs
Project-URL: Repository, https://github.com/flycrawl-ai/flycrawl
Author-email: FlyCrawl Team <core@flycrawl.ai>
License: MIT
Keywords: agents,ai,crawler,firecrawl,llm,markdown,web-scraping
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Requires-Dist: httpx>=0.25.0
Requires-Dist: pydantic>=2.0.0
Description-Content-Type: text/markdown

# 🐍 FlyCrawl Python SDK (`flycrawl`)

Official Python SDK for [FlyCrawl](https://flycrawl.net) — the high-performance, anti-bot resilient web scraping and LLM markdown extraction engine.

## 📦 Installation

```bash
pip install flycrawl
```

## 🚀 Quickstart

### 1. Basic Single-Page Scrape
```python
from flycrawl import FlyCrawl

client = FlyCrawl(api_key="fc_live_YOUR_KEY")

result = client.scrape(
    url="https://news.ycombinator.com",
    formats=["markdown"],
    only_main_content=True
)

print(result.markdown)
```

### 2. High-Throughput Batch Scraping
```python
from flycrawl import FlyCrawl

client = FlyCrawl(api_key="fc_live_YOUR_KEY")

pages = client.batch_scrape(
    urls=[
        "https://example.com/page1",
        "https://example.com/page2",
        "https://example.com/page3"
    ],
    formats=["markdown"]
)

for p in pages:
    print(f"Title: {p.metadata.title} ({len(p.markdown)} chars)")
```

### 3. Strongly-Typed Extraction (Pydantic)
```python
from pydantic import BaseModel, Field
from flycrawl import FlyCrawl

class Product(BaseModel):
    title: str
    price: float
    currency: str
    in_stock: bool

client = FlyCrawl(api_key="fc_live_YOUR_KEY")

data = client.extract(
    urls=["https://store.example.com/item/123"],
    schema=Product,
    prompt="Extract the product title, price, currency, and stock status."
)
print(data)
```

### 4. Asynchronous Full-Site Crawl
```python
import asyncio
from flycrawl import AsyncFlyCrawl

async def main():
    async with AsyncFlyCrawl(api_key="fc_live_YOUR_KEY") as client:
        job = await client.crawl("https://docs.example.com", max_depth=2, limit=50)
        status = await client.wait_for_crawl(job.id)
        print(f"Crawled {status.completed} pages.")

asyncio.run(main())
```

## 📄 License
MIT License.
