AlterLabAlterLab
PricingComparePlaygroundBlogDocsChangelog
    AlterLabAlterLab
    PricingComparePlaygroundBlogDocsChangelog
    IntroductionQuickstartInstallationYour First Request
    REST APIJob PollingAPI KeysSessions APINew
    OverviewPythonNode.js
    JavaScript RenderingOutput FormatsPDF & OCRCachingWebhooksJSON Schema FilteringWebSocket Real-TimeBring Your Own ProxyProAuthenticated ScrapingNewWeb CrawlingBatch ScrapingSchedulerChange DetectionCloud Storage ExportSpend LimitsOrganizations & TeamsAlerts & Notifications
    Structured ExtractionAIE-commerce ScrapingNews MonitoringPrice MonitoringMulti-Page CrawlingMonitoring DashboardAI Agent / MCPMCPData Pipeline to Cloud
    PricingRate LimitsError Codes
    From FirecrawlFrom ApifyFrom ScrapingBee / ScraperAPI
    PlaygroundPricingStatus
    SDKv2.0.0

    Official SDKs

    Production-ready SDKs for Python and Node.js. Type-safe, well-documented, and battle-tested.

    PyPI versionnpm versionGitHub starsLicense: MIT

    Python SDK

    pip install alterlab

    Python 3.8+Type HintsAsync/Await

    Full-featured async client with type hints, automatic retries, and comprehensive error handling.

    Node.js SDK

    npm install @alterlab/sdk

    Node.js 18+TypeScriptZero Dependencies

    Modern TypeScript SDK with native fetch, full type definitions, and tree-shakeable exports.

    Quick Comparison

    FeaturePythonNode.js
    Packagepip install alterlabnpm install @alterlab/sdk
    RuntimePython 3.8+Node.js 18+
    Type SafetyType hints + mypyFull TypeScript
    Async SupportAsyncAlterLab clientNative async/await
    DependencieshttpxNone (native fetch)
    SourceGitHubGitHub

    Installation

    Bash
    # Using pip
    pip install alterlab
    
    # Using poetry
    poetry add alterlab
    
    # Using pipenv
    pipenv install alterlab

    Quick Start

    Python
    from alterlab import AlterLab
    
    # Initialize client
    client = AlterLab(api_key="sk_live_...")  # or set ALTERLAB_API_KEY env var
    
    # Scrape a website
    result = client.scrape("https://example.com")
    print(result.text)                    # Extracted text
    print(result.json)                    # Structured JSON
    print(result.billing.cost_dollars)    # Cost breakdown
    
    # With JavaScript rendering
    result = client.scrape_js("https://spa-app.com", screenshot=True)
    print(result.screenshot_url)
    Try in Playground

    Pricing

    $1 = 5,000 Scrapes

    Pay-as-you-go pricing with no subscriptions. The API automatically escalates through tiers until successful, charging only for the tier used.
    TierNamePricePer $1Use Case
    1Curl$0.00025,000Static HTML sites
    2HTTP$0.00033,333TLS fingerprinting
    3Stealth$0.002500Browser checks
    4Browser$0.004250JS-heavy SPAs
    5Captcha$0.0250CAPTCHA solving

    💰 BYOP (Bring Your Own Proxy): Get 20% off when using your own proxy integration!

    Features

    Anti-Bot Bypass

    Automatic tier escalation handles any protection

    JavaScript Rendering

    Full Playwright browser for SPAs

    Structured Extraction

    JSON Schema, prompts, and pre-built profiles

    Cost Controls

    Set budgets, max tiers, and fail-fast options

    Caching

    Opt-in caching with configurable TTL

    Error Handling

    Typed exceptions for all error cases

    Retry Logic

    Automatic retries with exponential backoff

    Async Jobs

    Long-running scrapes with polling

    Open Source

    Both SDKs are open source under the MIT license. Star us on GitHub and contribute!
    Sessions APIPython
    Last updated: March 2026

    On this page