Skip to main content

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

PyPI version Python License

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

  1. Visit https://bnca.monostate.ai
  2. Sign up for an account
  3. Generate your API key from the dashboard

📋 Requirements

  • Python 3.7+
  • requests library (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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

browsernative-1.0.0.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

browsernative-1.0.0-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

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

Hashes for browsernative-1.0.0.tar.gz
Algorithm Hash digest
SHA256 348a5f1d4dad9da50a5f8a77ac3b8f3658987c22b4b6e75ff53484230f4660bb
MD5 ec4e78ffd00f1304cb0d3e41757bd49c
BLAKE2b-256 fb8ed0c3f9121d5d45b620cb78b57a9e16718a0f2a3cfe02f163e8ceccd2650d

See more details on using hashes here.

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

Hashes for browsernative-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 503633ef116c4847947e536e680d3f0300c4e7f1048c697fd608f5157b2ba643
MD5 3bf6fe72fefa25f167c5772f19f0a546
BLAKE2b-256 e58267bf0d7c3bf599b0585e3ab9e3146596a50013f14599ad2101a12025a1f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page