Lightning-fast web scraping Python SDK - 11x faster than traditional scrapers
Project description
Browser Native Python Client
Lightning-fast web scraping Python SDK - 11x faster than traditional scrapers
Official Python client for the Browser Native web scraping API. Extract content, take screenshots, and analyze websites with AI - all with intelligent fallback mechanisms.
🚀 Quick Start
Installation
pip install browsernative
Basic Usage
from browsernative import BrowserNativeClient
# Initialize client
client = BrowserNativeClient('your-api-key')
# Scrape a webpage
result = client.scrape('https://example.com')
print(result['data']) # Extracted content
# Take a screenshot
screenshot = client.screenshot('https://example.com')
print(screenshot['data']['screenshot']) # Base64 image
# AI-powered Q&A
answer = client.analyze('https://example.com', 'What is this website about?')
print(answer['data']['answer']) # AI response
One-liner Convenience Functions
from browsernative import quick_scrape, quick_analyze, quick_shot
# Quick scraping
data = quick_scrape('https://example.com', 'your-api-key')
# Quick AI analysis
result = quick_analyze(
'https://example.com',
'What services do they offer?',
'your-api-key'
)
# Quick screenshot
screenshot = quick_shot('https://example.com', 'your-api-key')
📖 Features
- 🚀 Lightning Fast: 11x faster than traditional scrapers
- 🔄 Intelligent Fallback: Multi-tier system (Direct → Lightpanda → Puppeteer)
- 🤖 AI Integration: Built-in Q&A capabilities with OpenRouter/OpenAI
- 📸 Screenshots: Full page captures with optimization
- 📄 PDF Support: Automatic PDF parsing and text extraction
- 🔒 Type Safe: Full type hints for better IDE support
- ♻️ Context Manager: Automatic resource cleanup
🛠️ API Reference
Client Initialization
client = BrowserNativeClient(
api_key='your-api-key',
base_url='https://bnca-api.fly.dev', # Optional
timeout=30, # Request timeout in seconds
retries=2, # Number of retries
verbose=False # Enable debug logging
)
Methods
scrape(url, **options)
Extract structured content from any webpage.
result = client.scrape(
'https://example.com',
include_screenshot=True # Optional: include screenshot
)
# Response includes:
# - data: Extracted content (title, text, meta, etc.)
# - method: Extraction method used
# - performance: Timing metrics
analyze(url, question, **options)
Ask questions about any webpage using AI.
result = client.analyze(
'https://news.site.com',
'What are the top 3 stories?',
include_screenshot=False
)
# Response includes:
# - answer: AI-generated response
# - metadata: Performance and method info
screenshot(url, **options)
Capture full-page screenshots.
result = client.screenshot('https://example.com')
base64_image = result['data']['screenshot']
quickshot(url, **options)
Optimized screenshot capture for speed.
result = client.quickshot('https://example.com')
get_usage(days=30)
Get your API usage statistics.
usage = client.get_usage(days=7)
print(usage['data'])
health_check()
Check API status and your account.
health = client.health_check()
print(health['data']['status'])
🔄 Context Manager Support
Automatically clean up resources:
with BrowserNativeClient('your-api-key') as client:
result = client.scrape('https://example.com')
# Resources are automatically cleaned up
🎯 Advanced Examples
Batch Processing
urls = ['https://site1.com', 'https://site2.com', 'https://site3.com']
with BrowserNativeClient('your-api-key') as client:
for url in urls:
try:
result = client.scrape(url)
print(f"✓ {url}: {result['data']['title']}")
except Exception as e:
print(f"✗ {url}: {e}")
Error Handling
from browsernative import BrowserNativeClient
client = BrowserNativeClient('your-api-key', verbose=True)
try:
result = client.scrape('https://invalid-url')
except ValueError as e:
print(f"Invalid input: {e}")
except Exception as e:
print(f"API error: {e}")
AI Analysis with Context
# Analyze multiple aspects of a page
questions = [
"What is the main topic?",
"Is there pricing information?",
"What features are highlighted?"
]
with BrowserNativeClient('your-api-key') as client:
for question in questions:
result = client.analyze('https://product.com', question)
print(f"Q: {question}")
print(f"A: {result['data']['answer']}\n")
🔑 Getting an API Key
- Visit https://bnca.monostate.ai
- Sign up for an account
- Generate your API key from the dashboard
📋 Requirements
- Python 3.7+
requestslibrary (automatically installed)
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
MIT License - see LICENSE file for details.
🔗 Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file browsernative-1.0.0.tar.gz.
File metadata
- Download URL: browsernative-1.0.0.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
348a5f1d4dad9da50a5f8a77ac3b8f3658987c22b4b6e75ff53484230f4660bb
|
|
| MD5 |
ec4e78ffd00f1304cb0d3e41757bd49c
|
|
| BLAKE2b-256 |
fb8ed0c3f9121d5d45b620cb78b57a9e16718a0f2a3cfe02f163e8ceccd2650d
|
File details
Details for the file browsernative-1.0.0-py3-none-any.whl.
File metadata
- Download URL: browsernative-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
503633ef116c4847947e536e680d3f0300c4e7f1048c697fd608f5157b2ba643
|
|
| MD5 |
3bf6fe72fefa25f167c5772f19f0a546
|
|
| BLAKE2b-256 |
e58267bf0d7c3bf599b0585e3ab9e3146596a50013f14599ad2101a12025a1f2
|