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
    Reference

    Rate Limits & Quotas

    Understand AlterLab's rate limits, concurrency caps, and payload restrictions to optimize your integration.

    Rate Limits

    Rate limits are applied per API key and scale with your account balance:

    TierBalanceRequests/Minute
    Free$0 - $530
    Basic$5 - $5060
    Growth$50 - $200100
    Scale$200 - $500300
    High Volume$500+500
    EnterpriseCustomup to 10,000

    Soft Limits

    These are soft limits. Brief bursts above the limit are allowed, but sustained overages will result in 429 errors.

    Concurrency Limits

    Maximum number of requests that can be processed simultaneously. Add funds to instantly unlock higher limits:

    Account BalanceTierConcurrent RequestsRequests/Minute
    $0 - $5Free330
    $5 - $50Basic1060
    $50 - $200Growth15100
    $200 - $500Scale25300
    $500+High Volume50500
    EnterpriseEnterpriseup to 500up to 10,000

    Instant Upgrades

    Tier upgrades are instant. Add funds to your account and immediately get higher concurrency limits—no waiting period.

    Payload Limits

    Limit TypeValueNotes
    Request Body Size1 MBMaximum size of JSON request
    Response Size50 MBMaximum scraped content size
    URL Length8,192 charsMaximum URL length
    Headers Size32 KBTotal custom headers size
    Extraction Schema64 KBMaximum JSON schema size
    Extraction Prompt4,000 charsMaximum prompt length

    Timeout Limits

    OperationDefaultMaximum
    Sync Request90 seconds300 seconds
    Sync Polling (internal)60 seconds120 seconds
    Async Job300 seconds600 seconds
    Wait for Selector30 seconds60 seconds
    PDF/OCR Processing120 seconds300 seconds

    Long-Running Jobs

    For operations that may exceed 60 seconds, use sync: false to get a job ID and poll for results.

    Batch Limits

    LimitValue
    URLs per batch request1,000
    Concurrent batches5
    Batch result retention24 hours

    Rate Limit Headers

    Every response includes headers to help you track your rate limit status:

    Response Headers
    Bash
    X-RateLimit-Limit: 60
    X-RateLimit-Remaining: 45
    X-RateLimit-Reset: 1704067200
    X-Concurrency-Limit: 5
    X-Concurrency-Current: 2
    Retry-After: 30  # Only on 429 responses
    X-RateLimit-LimitMaximum requests per minute
    X-RateLimit-RemainingRequests remaining in current window
    X-RateLimit-ResetUnix timestamp when limit resets
    Retry-AfterSeconds to wait before retrying (429 only)

    Handling Rate Limits

    1. Check Headers

    Monitor X-RateLimit-Remaining and slow down before hitting the limit.

    2. Implement Exponential Backoff

    On 429 errors, wait and retry with increasing delays: 1s, 2s, 4s, 8s...

    Python
    import time
    
    def scrape_with_retry(url, max_retries=5):
        for attempt in range(max_retries):
            response = requests.post(...)
            if response.status_code == 429:
                wait = 2 ** attempt  # Exponential backoff
                time.sleep(wait)
                continue
            return response
        raise Exception("Max retries exceeded")

    3. Use Batching

    Batch requests are processed more efficiently and don't count against per-minute limits the same way.

    4. Queue Requests

    Use a job queue (Redis, RabbitMQ) to throttle requests and handle retries gracefully.

    Increasing Limits

    Add Funds

    Your limits automatically increase as your account balance grows. See the tier tables above.

    Enterprise Plans

    For custom limits, dedicated infrastructure, or SLA guarantees, contact our sales team.

    Need Higher Limits?

    Email [email protected] with your use case and we'll work with you on custom limits.
    PricingError Codes
    Last updated: March 2026

    On this page