Skip to content

A python version of the SDK to interact with browser native cloud hosted API, able to scrape fast and return results in multiple formats

License

Notifications You must be signed in to change notification settings

monostate/browsernative-python

Repository files navigation

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.8+
  • 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

About

A python version of the SDK to interact with browser native cloud hosted API, able to scrape fast and return results in multiple formats

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published